diff --git a/APIDiffs/api-diffs-1.8.1.md b/APIDiffs/api-diffs-1.8.1.md new file mode 100644 index 0000000..b6774d7 --- /dev/null +++ b/APIDiffs/api-diffs-1.8.1.md @@ -0,0 +1,9 @@ +# PLCameraStreamingKit 1.8.0 to 1.8.1 API Differences + +``` +PLCameraStreamingSession.h +``` +- *Added* property `@property (nonatomic, assign, getter=isAutoReconnectEnable) BOOL autoReconnectEnable;` +- *Added* method `+ (NSString *)versionInfo;` + +## General Headers diff --git a/Example/PLCameraStreamingKit/PLCameraStreamingKit-Info.plist b/Example/PLCameraStreamingKit/PLCameraStreamingKit-Info.plist index 1737676..78d41b7 100644 --- a/Example/PLCameraStreamingKit/PLCameraStreamingKit-Info.plist +++ b/Example/PLCameraStreamingKit/PLCameraStreamingKit-Info.plist @@ -17,7 +17,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 1.7.2 + 1.8.1 CFBundleSignature ???? CFBundleVersion diff --git a/Example/PLCameraStreamingKit/PLViewController.m b/Example/PLCameraStreamingKit/PLViewController.m index ee4af71..80e8533 100644 --- a/Example/PLCameraStreamingKit/PLViewController.m +++ b/Example/PLCameraStreamingKit/PLViewController.m @@ -119,6 +119,7 @@ - (void)viewDidLoad { AVCaptureVideoOrientation orientation = (AVCaptureVideoOrientation)(([[UIDevice currentDevice] orientation] <= UIDeviceOrientationLandscapeRight && [[UIDevice currentDevice] orientation] != UIDeviceOrientationUnknown) ? [[UIDevice currentDevice] orientation]: UIDeviceOrientationPortrait); // 推流 session self.session = [[PLCameraStreamingSession alloc] initWithVideoCaptureConfiguration:videoCaptureConfiguration audioCaptureConfiguration:audioCaptureConfiguration videoStreamingConfiguration:videoStreamingConfiguration audioStreamingConfiguration:audioStreamingConfiguration stream:stream videoOrientation:orientation]; + self.session.captureDevicePosition = AVCaptureDevicePositionBack; self.session.delegate = self; self.session.bufferDelegate = self; UIImage *waterMark = [UIImage imageNamed:@"qiniu.png"]; diff --git a/Example/Podfile.lock b/Example/Podfile.lock index 743daa2..2443217 100644 --- a/Example/Podfile.lock +++ b/Example/Podfile.lock @@ -1,49 +1,48 @@ PODS: - - GPUImage (0.1.7) - - HappyDNS (0.3.5) - - KSCrash (1.6.0): - - KSCrash/Installations (= 1.6.0) - - KSCrash/Installations (1.6.0): + - HappyDNS (0.3.7) + - KSCrash (1.6.4): + - KSCrash/Installations (= 1.6.4) + - KSCrash/Installations (1.6.4): - KSCrash/Recording - KSCrash/Reporting - - KSCrash/no-arc (1.6.0) - - KSCrash/Recording (1.6.0): + - KSCrash/no-arc (1.6.4) + - KSCrash/Recording (1.6.4): - KSCrash/no-arc - - KSCrash/Reporting (1.6.0): + - KSCrash/Reporting (1.6.4): - KSCrash/Recording - - KSCrash/Reporting/Filters (= 1.6.0) - - KSCrash/Reporting/MessageUI (= 1.6.0) - - KSCrash/Reporting/Sinks (= 1.6.0) - - KSCrash/Reporting/Tools (= 1.6.0) - - KSCrash/Reporting/Filters (1.6.0): + - KSCrash/Reporting/Filters (= 1.6.4) + - KSCrash/Reporting/MessageUI (= 1.6.4) + - KSCrash/Reporting/Sinks (= 1.6.4) + - KSCrash/Reporting/Tools (= 1.6.4) + - KSCrash/Reporting/Filters (1.6.4): - KSCrash/Recording - - KSCrash/Reporting/Filters/Alert (= 1.6.0) - - KSCrash/Reporting/Filters/AppleFmt (= 1.6.0) - - KSCrash/Reporting/Filters/Base (= 1.6.0) - - KSCrash/Reporting/Filters/Basic (= 1.6.0) - - KSCrash/Reporting/Filters/GZip (= 1.6.0) - - KSCrash/Reporting/Filters/JSON (= 1.6.0) - - KSCrash/Reporting/Filters/Sets (= 1.6.0) - - KSCrash/Reporting/Filters/Stringify (= 1.6.0) - - KSCrash/Reporting/Filters/Tools (= 1.6.0) - - KSCrash/Reporting/Filters/Alert (1.6.0): + - KSCrash/Reporting/Filters/Alert (= 1.6.4) + - KSCrash/Reporting/Filters/AppleFmt (= 1.6.4) + - KSCrash/Reporting/Filters/Base (= 1.6.4) + - KSCrash/Reporting/Filters/Basic (= 1.6.4) + - KSCrash/Reporting/Filters/GZip (= 1.6.4) + - KSCrash/Reporting/Filters/JSON (= 1.6.4) + - KSCrash/Reporting/Filters/Sets (= 1.6.4) + - KSCrash/Reporting/Filters/Stringify (= 1.6.4) + - KSCrash/Reporting/Filters/Tools (= 1.6.4) + - KSCrash/Reporting/Filters/Alert (1.6.4): - KSCrash/Recording - KSCrash/Reporting/Filters/Base - - KSCrash/Reporting/Filters/AppleFmt (1.6.0): + - KSCrash/Reporting/Filters/AppleFmt (1.6.4): - KSCrash/Recording - KSCrash/Reporting/Filters/Base - - KSCrash/Reporting/Filters/Base (1.6.0): + - KSCrash/Reporting/Filters/Base (1.6.4): - KSCrash/Recording - - KSCrash/Reporting/Filters/Basic (1.6.0): + - KSCrash/Reporting/Filters/Basic (1.6.4): - KSCrash/Recording - KSCrash/Reporting/Filters/Base - - KSCrash/Reporting/Filters/GZip (1.6.0): + - KSCrash/Reporting/Filters/GZip (1.6.4): - KSCrash/Recording - KSCrash/Reporting/Filters/Base - - KSCrash/Reporting/Filters/JSON (1.6.0): + - KSCrash/Reporting/Filters/JSON (1.6.4): - KSCrash/Recording - KSCrash/Reporting/Filters/Base - - KSCrash/Reporting/Filters/Sets (1.6.0): + - KSCrash/Reporting/Filters/Sets (1.6.4): - KSCrash/Recording - KSCrash/Reporting/Filters/AppleFmt - KSCrash/Reporting/Filters/Base @@ -51,34 +50,32 @@ PODS: - KSCrash/Reporting/Filters/GZip - KSCrash/Reporting/Filters/JSON - KSCrash/Reporting/Filters/Stringify - - KSCrash/Reporting/Filters/Stringify (1.6.0): + - KSCrash/Reporting/Filters/Stringify (1.6.4): - KSCrash/Recording - KSCrash/Reporting/Filters/Base - - KSCrash/Reporting/Filters/Tools (1.6.0): + - KSCrash/Reporting/Filters/Tools (1.6.4): - KSCrash/Recording - - KSCrash/Reporting/MessageUI (1.6.0): + - KSCrash/Reporting/MessageUI (1.6.4): - KSCrash/Recording - - KSCrash/Reporting/Sinks (1.6.0): + - KSCrash/Reporting/Sinks (1.6.4): - KSCrash/Recording - KSCrash/Reporting/Filters - KSCrash/Reporting/Tools - - KSCrash/Reporting/Tools (1.6.0): + - KSCrash/Reporting/Tools (1.6.4): - KSCrash/Recording - - pili-librtmp (1.0.3) - - PLCameraStreamingKit (1.8.0): - - GPUImage (= 0.1.7) - - PLCameraStreamingKit/precompiled (= 1.8.0) - - PLStreamingKit (~> 1.2.0) - - PLCameraStreamingKit/precompiled (1.8.0): - - GPUImage (= 0.1.7) - - PLStreamingKit (~> 1.2.0) - - PLStreamingKit (1.2.4): + - pili-librtmp (1.0.3.1) + - PLCameraStreamingKit (1.8.1): + - PLCameraStreamingKit/precompiled (= 1.8.1) + - PLStreamingKit (= 1.2.5) + - PLCameraStreamingKit/precompiled (1.8.1): + - PLStreamingKit (= 1.2.5) + - PLStreamingKit (1.2.5): - HappyDNS - - pili-librtmp - - PLStreamingKit/precompiled (= 1.2.4) - - PLStreamingKit/precompiled (1.2.4): + - pili-librtmp (= 1.0.3.1) + - PLStreamingKit/precompiled (= 1.2.5) + - PLStreamingKit/precompiled (1.2.5): - HappyDNS - - pili-librtmp + - pili-librtmp (= 1.0.3.1) DEPENDENCIES: - KSCrash @@ -89,11 +86,10 @@ EXTERNAL SOURCES: :path: ../ SPEC CHECKSUMS: - GPUImage: 733a5f0fab92df9de1c37ba9df520a833ccb406d - HappyDNS: 6f8cf46fa7c0b98a6591fe8ecb2e08d9907a6e8b - KSCrash: 73fc2bcec2b6bcd1d948d200e11904c39d532a0e - pili-librtmp: 50faa17413c635cca5ceccb1a8f9f6acc6587a45 - PLCameraStreamingKit: 03b4bce4218edeb18a0060d8849eb5d7b2af4a5d - PLStreamingKit: c8574decbacb981e36e5b95314c991a3b5d02125 + HappyDNS: ec476226e119bf4766b74975ec4873f6fa078cf2 + KSCrash: d8e5ad6724d26a48e8ca483028c65e33d92e7834 + pili-librtmp: 0adf2516f4b5958b3cb079a4c3d4f6a4a9f49ce9 + PLCameraStreamingKit: 12b672cbef9ba15bbb28ec543fb77f7d4cea66dc + PLStreamingKit: 4b46739689d020b8e2eb755827ec86447c0291b7 COCOAPODS: 0.39.0 diff --git a/Example/Pods/GPUImage/License.txt b/Example/Pods/GPUImage/License.txt deleted file mode 100755 index e8062d9..0000000 --- a/Example/Pods/GPUImage/License.txt +++ /dev/null @@ -1,9 +0,0 @@ -Copyright (c) 2012, Brad Larson, Ben Cochran, Hugues Lismonde, Keitaroh Kobayashi, Alaric Cole, Matthew Clark, Jacob Gundersen, Chris Williams. -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - -Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. -Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. -Neither the name of the GPUImage framework nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/Example/Pods/GPUImage/README.md b/Example/Pods/GPUImage/README.md deleted file mode 100755 index a487f36..0000000 --- a/Example/Pods/GPUImage/README.md +++ /dev/null @@ -1,733 +0,0 @@ -# GPUImage # - -
- - - -Brad Larson - -http://www.sunsetlakesoftware.com - -[@bradlarson](http://twitter.com/bradlarson) - -contact@sunsetlakesoftware.com - -## Overview ## - -The GPUImage framework is a BSD-licensed iOS library that lets you apply GPU-accelerated filters and other effects to images, live camera video, and movies. In comparison to Core Image (part of iOS 5.0), GPUImage allows you to write your own custom filters, supports deployment to iOS 4.0, and has a simpler interface. However, it currently lacks some of the more advanced features of Core Image, such as facial detection. - -For massively parallel operations like processing images or live video frames, GPUs have some significant performance advantages over CPUs. On an iPhone 4, a simple image filter can be over 100 times faster to perform on the GPU than an equivalent CPU-based filter. - -However, running custom filters on the GPU requires a lot of code to set up and maintain an OpenGL ES 2.0 rendering target for these filters. I created a sample project to do this: - -http://www.sunsetlakesoftware.com/2010/10/22/gpu-accelerated-video-processing-mac-and-ios - -and found that there was a lot of boilerplate code I had to write in its creation. Therefore, I put together this framework that encapsulates a lot of the common tasks you'll encounter when processing images and video and made it so that you don't need to care about the OpenGL ES 2.0 underpinnings. - -This framework compares favorably to Core Image when handling video, taking only 2.5 ms on an iPhone 4 to upload a frame from the camera, apply a gamma filter, and display, versus 106 ms for the same operation using Core Image. CPU-based processing takes 460 ms, making GPUImage 40X faster than Core Image for this operation on this hardware, and 184X faster than CPU-bound processing. On an iPhone 4S, GPUImage is only 4X faster than Core Image for this case, and 102X faster than CPU-bound processing. However, for more complex operations like Gaussian blurs at larger radii, Core Image currently outpaces GPUImage. - -## License ## - -BSD-style, with the full license available with the framework in License.txt. - -## Technical requirements ## - -- OpenGL ES 2.0: Applications using this will not run on the original iPhone, iPhone 3G, and 1st and 2nd generation iPod touches -- iOS 4.1 as a deployment target (4.0 didn't have some extensions needed for movie reading). iOS 4.3 is needed as a deployment target if you wish to show live video previews when taking a still photo. -- iOS 5.0 SDK to build -- Devices must have a camera to use camera-related functionality (obviously) -- The framework uses automatic reference counting (ARC), but should support projects using both ARC and manual reference counting if added as a subproject as explained below. For manual reference counting applications targeting iOS 4.x, you'll need add -fobjc-arc to the Other Linker Flags for your application project. - -## General architecture ## - -GPUImage uses OpenGL ES 2.0 shaders to perform image and video manipulation much faster than could be done in CPU-bound routines. However, it hides the complexity of interacting with the OpenGL ES API in a simplified Objective-C interface. This interface lets you define input sources for images and video, attach filters in a chain, and send the resulting processed image or video to the screen, to a UIImage, or to a movie on disk. - -Images or frames of video are uploaded from source objects, which are subclasses of GPUImageOutput. These include GPUImageVideoCamera (for live video from an iOS camera), GPUImageStillCamera (for taking photos with the camera), GPUImagePicture (for still images), and GPUImageMovie (for movies). Source objects upload still image frames to OpenGL ES as textures, then hand those textures off to the next objects in the processing chain. - -Filters and other subsequent elements in the chain conform to the GPUImageInput protocol, which lets them take in the supplied or processed texture from the previous link in the chain and do something with it. Objects one step further down the chain are considered targets, and processing can be branched by adding multiple targets to a single output or filter. - -For example, an application that takes in live video from the camera, converts that video to a sepia tone, then displays the video onscreen would set up a chain looking something like the following: - - GPUImageVideoCamera -> GPUImageSepiaFilter -> GPUImageView - -## Adding the static library to your iOS project ## - -Note: if you want to use this in a Swift project, you need to use the steps in the "Adding this as a framework" section instead of the following. Swift needs modules for third-party code. - -Once you have the latest source code for the framework, it's fairly straightforward to add it to your application. Start by dragging the GPUImage.xcodeproj file into your application's Xcode project to embed the framework in your project. Next, go to your application's target and add GPUImage as a Target Dependency. Finally, you'll want to drag the libGPUImage.a library from the GPUImage framework's Products folder to the Link Binary With Libraries build phase in your application's target. - -GPUImage needs a few other frameworks to be linked into your application, so you'll need to add the following as linked libraries in your application target: - -- CoreMedia -- CoreVideo -- OpenGLES -- AVFoundation -- QuartzCore - -You'll also need to find the framework headers, so within your project's build settings set the Header Search Paths to the relative path from your application to the framework/ subdirectory within the GPUImage source directory. Make this header search path recursive. - -To use the GPUImage classes within your application, simply include the core framework header using the following: - - #import "GPUImage.h" - -As a note: if you run into the error "Unknown class GPUImageView in Interface Builder" or the like when trying to build an interface with Interface Builder, you may need to add -ObjC to your Other Linker Flags in your project's build settings. - -Also, if you need to deploy this to iOS 4.x, it appears that the current version of Xcode (4.3) requires that you weak-link the Core Video framework in your final application or you see crashes with the message "Symbol not found: _CVOpenGLESTextureCacheCreate" when you create an archive for upload to the App Store or for ad hoc distribution. To do this, go to your project's Build Phases tab, expand the Link Binary With Libraries group, and find CoreVideo.framework in the list. Change the setting for it in the far right of the list from Required to Optional. - -Additionally, this is an ARC-enabled framework, so if you want to use this within a manual reference counted application targeting iOS 4.x, you'll need to add -fobjc-arc to your Other Linker Flags as well. - -### Building a static library at the command line ### - -If you don't want to include the project as a dependency in your application's Xcode project, you can build a universal static library for the iOS Simulator or device. To do this, run `build.sh` at the command line. The resulting library and header files will be located at `build/Release-iphone`. You may also change the version of the iOS SDK by changing the `IOSSDK_VER` variable in `build.sh` (all available versions can be found using `xcodebuild -showsdks`). - -## Adding this as a framework (module) to your Mac or iOS project ## - -Xcode 6 and iOS 8 support the use of full frameworks, as does the Mac, which simplifies the process of adding this to your application. To add this to your application, I recommend dragging the .xcodeproj project file into your application's project (as you would in the static library target). - -For your application, go to its target build settings and choose the Build Phases tab. Under the Target Dependencies grouping, add GPUImageFramework on iOS (not GPUImage, which builds the static library) or GPUImage on the Mac. Under the Link Binary With Libraries section, add GPUImage.framework. - -This should cause GPUImage to build as a framework. Under Xcode 6, this will also build as a module, which will allow you to use this in Swift projects. When set up as above, you should just need to use - - import GPUImage - -to pull it in. - -You then need to add a new Copy Files build phase, set the Destination to Frameworks, and add the GPUImage.framework build product to that. This will allow the framework to be bundled with your application (otherwise, you'll see cryptic "dyld: Library not loaded: @rpath/GPUImage.framework/GPUImage" errors on execution). - -### Documentation ### - -Documentation is generated from header comments using appledoc. To build the documentation, switch to the "Documentation" scheme in Xcode. You should ensure that "APPLEDOC_PATH" (a User-Defined build setting) points to an appledoc binary, available on Github or through Homebrew. It will also build and install a .docset file, which you can view with your favorite documentation tool. - -## Performing common tasks ## - -### Filtering live video ### - -To filter live video from an iOS device's camera, you can use code like the following: - - GPUImageVideoCamera *videoCamera = [[GPUImageVideoCamera alloc] initWithSessionPreset:AVCaptureSessionPreset640x480 cameraPosition:AVCaptureDevicePositionBack]; - videoCamera.outputImageOrientation = UIInterfaceOrientationPortrait; - - GPUImageFilter *customFilter = [[GPUImageFilter alloc] initWithFragmentShaderFromFile:@"CustomShader"]; - GPUImageView *filteredVideoView = [[GPUImageView alloc] initWithFrame:CGRectMake(0.0, 0.0, viewWidth, viewHeight)]; - - // Add the view somewhere so it's visible - - [videoCamera addTarget:customFilter]; - [customFilter addTarget:filteredVideoView]; - - [videoCamera startCameraCapture]; - -This sets up a video source coming from the iOS device's back-facing camera, using a preset that tries to capture at 640x480. This video is captured with the interface being in portrait mode, where the landscape-left-mounted camera needs to have its video frames rotated before display. A custom filter, using code from the file CustomShader.fsh, is then set as the target for the video frames from the camera. These filtered video frames are finally displayed onscreen with the help of a UIView subclass that can present the filtered OpenGL ES texture that results from this pipeline. - -The fill mode of the GPUImageView can be altered by setting its fillMode property, so that if the aspect ratio of the source video is different from that of the view, the video will either be stretched, centered with black bars, or zoomed to fill. - -For blending filters and others that take in more than one image, you can create multiple outputs and add a single filter as a target for both of these outputs. The order with which the outputs are added as targets will affect the order in which the input images are blended or otherwise processed. - -Also, if you wish to enable microphone audio capture for recording to a movie, you'll need to set the audioEncodingTarget of the camera to be your movie writer, like for the following: - - videoCamera.audioEncodingTarget = movieWriter; - - -### Capturing and filtering a still photo ### - -To capture and filter still photos, you can use a process similar to the one for filtering video. Instead of a GPUImageVideoCamera, you use a GPUImageStillCamera: - - stillCamera = [[GPUImageStillCamera alloc] init]; - stillCamera.outputImageOrientation = UIInterfaceOrientationPortrait; - - filter = [[GPUImageGammaFilter alloc] init]; - [stillCamera addTarget:filter]; - GPUImageView *filterView = (GPUImageView *)self.view; - [filter addTarget:filterView]; - - [stillCamera startCameraCapture]; - -This will give you a live, filtered feed of the still camera's preview video. Note that this preview video is only provided on iOS 4.3 and higher, so you may need to set that as your deployment target if you wish to have this functionality. - -Once you want to capture a photo, you use a callback block like the following: - - [stillCamera capturePhotoProcessedUpToFilter:filter withCompletionHandler:^(UIImage *processedImage, NSError *error){ - NSData *dataForJPEGFile = UIImageJPEGRepresentation(processedImage, 0.8); - - NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); - NSString *documentsDirectory = [paths objectAtIndex:0]; - - NSError *error2 = nil; - if (![dataForJPEGFile writeToFile:[documentsDirectory stringByAppendingPathComponent:@"FilteredPhoto.jpg"] options:NSAtomicWrite error:&error2]) - { - return; - } - }]; - -The above code captures a full-size photo processed by the same filter chain used in the preview view and saves that photo to disk as a JPEG in the application's documents directory. - -Note that the framework currently can't handle images larger than 2048 pixels wide or high on older devices (those before the iPhone 4S, iPad 2, or Retina iPad) due to texture size limitations. This means that the iPhone 4, whose camera outputs still photos larger than this, won't be able to capture photos like this. A tiling mechanism is being implemented to work around this. All other devices should be able to capture and filter photos using this method. - -### Processing a still image ### - -There are a couple of ways to process a still image and create a result. The first way you can do this is by creating a still image source object and manually creating a filter chain: - - UIImage *inputImage = [UIImage imageNamed:@"Lambeau.jpg"]; - - GPUImagePicture *stillImageSource = [[GPUImagePicture alloc] initWithImage:inputImage]; - GPUImageSepiaFilter *stillImageFilter = [[GPUImageSepiaFilter alloc] init]; - - [stillImageSource addTarget:stillImageFilter]; - [stillImageFilter useNextFrameForImageCapture]; - [stillImageSource processImage]; - - UIImage *currentFilteredVideoFrame = [stillImageFilter imageFromCurrentFramebuffer]; - -Note that for a manual capture of an image from a filter, you need to set -useNextFrameForImageCapture in order to tell the filter that you'll be needing to capture from it later. By default, GPUImage reuses framebuffers within filters to conserve memory, so if you need to hold on to a filter's framebuffer for manual image capture, you need to let it know ahead of time. - -For single filters that you wish to apply to an image, you can simply do the following: - - GPUImageSepiaFilter *stillImageFilter2 = [[GPUImageSepiaFilter alloc] init]; - UIImage *quickFilteredImage = [stillImageFilter2 imageByFilteringImage:inputImage]; - - -### Writing a custom filter ### - -One significant advantage of this framework over Core Image on iOS (as of iOS 5.0) is the ability to write your own custom image and video processing filters. These filters are supplied as OpenGL ES 2.0 fragment shaders, written in the C-like OpenGL Shading Language. - -A custom filter is initialized with code like - - GPUImageFilter *customFilter = [[GPUImageFilter alloc] initWithFragmentShaderFromFile:@"CustomShader"]; - -where the extension used for the fragment shader is .fsh. Additionally, you can use the -initWithFragmentShaderFromString: initializer to provide the fragment shader as a string, if you would not like to ship your fragment shaders in your application bundle. - -Fragment shaders perform their calculations for each pixel to be rendered at that filter stage. They do this using the OpenGL Shading Language (GLSL), a C-like language with additions specific to 2-D and 3-D graphics. An example of a fragment shader is the following sepia-tone filter: - - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - lowp vec4 outputColor; - outputColor.r = (textureColor.r * 0.393) + (textureColor.g * 0.769) + (textureColor.b * 0.189); - outputColor.g = (textureColor.r * 0.349) + (textureColor.g * 0.686) + (textureColor.b * 0.168); - outputColor.b = (textureColor.r * 0.272) + (textureColor.g * 0.534) + (textureColor.b * 0.131); - outputColor.a = 1.0; - - gl_FragColor = outputColor; - } - -For an image filter to be usable within the GPUImage framework, the first two lines that take in the textureCoordinate varying (for the current coordinate within the texture, normalized to 1.0) and the inputImageTexture uniform (for the actual input image frame texture) are required. - -The remainder of the shader grabs the color of the pixel at this location in the passed-in texture, manipulates it in such a way as to produce a sepia tone, and writes that pixel color out to be used in the next stage of the processing pipeline. - -One thing to note when adding fragment shaders to your Xcode project is that Xcode thinks they are source code files. To work around this, you'll need to manually move your shader from the Compile Sources build phase to the Copy Bundle Resources one in order to get the shader to be included in your application bundle. - - -### Filtering and re-encoding a movie ### - -Movies can be loaded into the framework via the GPUImageMovie class, filtered, and then written out using a GPUImageMovieWriter. GPUImageMovieWriter is also fast enough to record video in realtime from an iPhone 4's camera at 640x480, so a direct filtered video source can be fed into it. Currently, GPUImageMovieWriter is fast enough to record live 720p video at up to 20 FPS on the iPhone 4, and both 720p and 1080p video at 30 FPS on the iPhone 4S (as well as on the new iPad). - -The following is an example of how you would load a sample movie, pass it through a pixellation filter, then record the result to disk as a 480 x 640 h.264 movie: - - movieFile = [[GPUImageMovie alloc] initWithURL:sampleURL]; - pixellateFilter = [[GPUImagePixellateFilter alloc] init]; - - [movieFile addTarget:pixellateFilter]; - - NSString *pathToMovie = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/Movie.m4v"]; - unlink([pathToMovie UTF8String]); - NSURL *movieURL = [NSURL fileURLWithPath:pathToMovie]; - - movieWriter = [[GPUImageMovieWriter alloc] initWithMovieURL:movieURL size:CGSizeMake(480.0, 640.0)]; - [pixellateFilter addTarget:movieWriter]; - - movieWriter.shouldPassthroughAudio = YES; - movieFile.audioEncodingTarget = movieWriter; - [movieFile enableSynchronizedEncodingUsingMovieWriter:movieWriter]; - - [movieWriter startRecording]; - [movieFile startProcessing]; - -Once recording is finished, you need to remove the movie recorder from the filter chain and close off the recording using code like the following: - - [pixellateFilter removeTarget:movieWriter]; - [movieWriter finishRecording]; - -A movie won't be usable until it has been finished off, so if this is interrupted before this point, the recording will be lost. - -### Interacting with OpenGL ES ### - -GPUImage can both export and import textures from OpenGL ES through the use of its GPUImageTextureOutput and GPUImageTextureInput classes, respectively. This lets you record a movie from an OpenGL ES scene that is rendered to a framebuffer object with a bound texture, or filter video or images and then feed them into OpenGL ES as a texture to be displayed in the scene. - -The one caution with this approach is that the textures used in these processes must be shared between GPUImage's OpenGL ES context and any other context via a share group or something similar. - -## Built-in filters ## - -There are currently 125 built-in filters, divided into the following categories: - -### Color adjustments ### - -- **GPUImageBrightnessFilter**: Adjusts the brightness of the image - - *brightness*: The adjusted brightness (-1.0 - 1.0, with 0.0 as the default) - -- **GPUImageExposureFilter**: Adjusts the exposure of the image - - *exposure*: The adjusted exposure (-10.0 - 10.0, with 0.0 as the default) - -- **GPUImageContrastFilter**: Adjusts the contrast of the image - - *contrast*: The adjusted contrast (0.0 - 4.0, with 1.0 as the default) - -- **GPUImageSaturationFilter**: Adjusts the saturation of an image - - *saturation*: The degree of saturation or desaturation to apply to the image (0.0 - 2.0, with 1.0 as the default) - -- **GPUImageGammaFilter**: Adjusts the gamma of an image - - *gamma*: The gamma adjustment to apply (0.0 - 3.0, with 1.0 as the default) - -- **GPUImageLevelsFilter**: Photoshop-like levels adjustment. The min, max, minOut and maxOut parameters are floats in the range [0, 1]. If you have parameters from Photoshop in the range [0, 255] you must first convert them to be [0, 1]. The gamma/mid parameter is a float >= 0. This matches the value from Photoshop. If you want to apply levels to RGB as well as individual channels you need to use this filter twice - first for the individual channels and then for all channels. - -- **GPUImageColorMatrixFilter**: Transforms the colors of an image by applying a matrix to them - - *colorMatrix*: A 4x4 matrix used to transform each color in an image - - *intensity*: The degree to which the new transformed color replaces the original color for each pixel - -- **GPUImageRGBFilter**: Adjusts the individual RGB channels of an image - - *red*: Normalized values by which each color channel is multiplied. The range is from 0.0 up, with 1.0 as the default. - - *green*: - - *blue*: - -- **GPUImageHueFilter**: Adjusts the hue of an image - - *hue*: The hue angle, in degrees. 90 degrees by default - -- **GPUImageToneCurveFilter**: Adjusts the colors of an image based on spline curves for each color channel. - - *redControlPoints*: - - *greenControlPoints*: - - *blueControlPoints*: - - *rgbCompositeControlPoints*: The tone curve takes in a series of control points that define the spline curve for each color component, or for all three in the composite. These are stored as NSValue-wrapped CGPoints in an NSArray, with normalized X and Y coordinates from 0 - 1. The defaults are (0,0), (0.5,0.5), (1,1). - -- **GPUImageHighlightShadowFilter**: Adjusts the shadows and highlights of an image - - *shadows*: Increase to lighten shadows, from 0.0 to 1.0, with 0.0 as the default. - - *highlights*: Decrease to darken highlights, from 0.0 to 1.0, with 1.0 as the default. - -- **GPUImageLookupFilter**: Uses an RGB color lookup image to remap the colors in an image. First, use your favourite photo editing application to apply a filter to lookup.png from GPUImage/framework/Resources. For this to work properly each pixel color must not depend on other pixels (e.g. blur will not work). If you need a more complex filter you can create as many lookup tables as required. Once ready, use your new lookup.png file as a second input for GPUImageLookupFilter. - -- **GPUImageAmatorkaFilter**: A photo filter based on a Photoshop action by Amatorka: http://amatorka.deviantart.com/art/Amatorka-Action-2-121069631 . If you want to use this effect you have to add lookup_amatorka.png from the GPUImage Resources folder to your application bundle. - -- **GPUImageMissEtikateFilter**: A photo filter based on a Photoshop action by Miss Etikate: http://miss-etikate.deviantart.com/art/Photoshop-Action-15-120151961 . If you want to use this effect you have to add lookup_miss_etikate.png from the GPUImage Resources folder to your application bundle. - -- **GPUImageSoftEleganceFilter**: Another lookup-based color remapping filter. If you want to use this effect you have to add lookup_soft_elegance_1.png and lookup_soft_elegance_2.png from the GPUImage Resources folder to your application bundle. - -- **GPUImageColorInvertFilter**: Inverts the colors of an image - -- **GPUImageGrayscaleFilter**: Converts an image to grayscale (a slightly faster implementation of the saturation filter, without the ability to vary the color contribution) - -- **GPUImageMonochromeFilter**: Converts the image to a single-color version, based on the luminance of each pixel - - *intensity*: The degree to which the specific color replaces the normal image color (0.0 - 1.0, with 1.0 as the default) - - *color*: The color to use as the basis for the effect, with (0.6, 0.45, 0.3, 1.0) as the default. - -- **GPUImageFalseColorFilter**: Uses the luminance of the image to mix between two user-specified colors - - *firstColor*: The first and second colors specify what colors replace the dark and light areas of the image, respectively. The defaults are (0.0, 0.0, 0.5) amd (1.0, 0.0, 0.0). - - *secondColor*: - -- **GPUImageHazeFilter**: Used to add or remove haze (similar to a UV filter) - - *distance*: Strength of the color applied. Default 0. Values between -.3 and .3 are best. - - *slope*: Amount of color change. Default 0. Values between -.3 and .3 are best. - -- **GPUImageSepiaFilter**: Simple sepia tone filter - - *intensity*: The degree to which the sepia tone replaces the normal image color (0.0 - 1.0, with 1.0 as the default) - -- **GPUImageOpacityFilter**: Adjusts the alpha channel of the incoming image - - *opacity*: The value to multiply the incoming alpha channel for each pixel by (0.0 - 1.0, with 1.0 as the default) - -- **GPUImageSolidColorGenerator**: This outputs a generated image with a solid color. You need to define the image size using -forceProcessingAtSize: - - *color*: The color, in a four component format, that is used to fill the image. - -- **GPUImageLuminanceThresholdFilter**: Pixels with a luminance above the threshold will appear white, and those below will be black - - *threshold*: The luminance threshold, from 0.0 to 1.0, with a default of 0.5 - -- **GPUImageAdaptiveThresholdFilter**: Determines the local luminance around a pixel, then turns the pixel black if it is below that local luminance and white if above. This can be useful for picking out text under varying lighting conditions. - - *blurRadiusInPixels*: A multiplier for the background averaging blur radius in pixels, with a default of 4. - -- **GPUImageAverageLuminanceThresholdFilter**: This applies a thresholding operation where the threshold is continually adjusted based on the average luminance of the scene. - - *thresholdMultiplier*: This is a factor that the average luminance will be multiplied by in order to arrive at the final threshold to use. By default, this is 1.0. - -- **GPUImageHistogramFilter**: This analyzes the incoming image and creates an output histogram with the frequency at which each color value occurs. The output of this filter is a 3-pixel-high, 256-pixel-wide image with the center (vertical) pixels containing pixels that correspond to the frequency at which various color values occurred. Each color value occupies one of the 256 width positions, from 0 on the left to 255 on the right. This histogram can be generated for individual color channels (kGPUImageHistogramRed, kGPUImageHistogramGreen, kGPUImageHistogramBlue), the luminance of the image (kGPUImageHistogramLuminance), or for all three color channels at once (kGPUImageHistogramRGB). - - *downsamplingFactor*: Rather than sampling every pixel, this dictates what fraction of the image is sampled. By default, this is 16 with a minimum of 1. This is needed to keep from saturating the histogram, which can only record 256 pixels for each color value before it becomes overloaded. - -- **GPUImageHistogramGenerator**: This is a special filter, in that it's primarily intended to work with the GPUImageHistogramFilter. It generates an output representation of the color histograms generated by GPUImageHistogramFilter, but it could be repurposed to display other kinds of values. It takes in an image and looks at the center (vertical) pixels. It then plots the numerical values of the RGB components in separate colored graphs in an output texture. You may need to force a size for this filter in order to make its output visible. - -- **GPUImageAverageColor**: This processes an input image and determines the average color of the scene, by averaging the RGBA components for each pixel in the image. A reduction process is used to progressively downsample the source image on the GPU, followed by a short averaging calculation on the CPU. The output from this filter is meaningless, but you need to set the colorAverageProcessingFinishedBlock property to a block that takes in four color components and a frame time and does something with them. - -- **GPUImageLuminosity**: Like the GPUImageAverageColor, this reduces an image to its average luminosity. You need to set the luminosityProcessingFinishedBlock to handle the output of this filter, which just returns a luminosity value and a frame time. - -- **GPUImageChromaKeyFilter**: For a given color in the image, sets the alpha channel to 0. This is similar to the GPUImageChromaKeyBlendFilter, only instead of blending in a second image for a matching color this doesn't take in a second image and just turns a given color transparent. - - *thresholdSensitivity*: How close a color match needs to exist to the target color to be replaced (default of 0.4) - - *smoothing*: How smoothly to blend for the color match (default of 0.1) - -### Image processing ### - -- **GPUImageTransformFilter**: This applies an arbitrary 2-D or 3-D transformation to an image - - *affineTransform*: This takes in a CGAffineTransform to adjust an image in 2-D - - *transform3D*: This takes in a CATransform3D to manipulate an image in 3-D - - *ignoreAspectRatio*: By default, the aspect ratio of the transformed image is maintained, but this can be set to YES to make the transformation independent of aspect ratio - -- **GPUImageCropFilter**: This crops an image to a specific region, then passes only that region on to the next stage in the filter - - *cropRegion*: A rectangular area to crop out of the image, normalized to coordinates from 0.0 - 1.0. The (0.0, 0.0) position is in the upper left of the image. - -- **GPUImageLanczosResamplingFilter**: This lets you up- or downsample an image using Lanczos resampling, which results in noticeably better quality than the standard linear or trilinear interpolation. Simply use -forceProcessingAtSize: to set the target output resolution for the filter, and the image will be resampled for that new size. - -- **GPUImageSharpenFilter**: Sharpens the image - - *sharpness*: The sharpness adjustment to apply (-4.0 - 4.0, with 0.0 as the default) - -- **GPUImageUnsharpMaskFilter**: Applies an unsharp mask - - *blurRadiusInPixels*: The blur radius of the underlying Gaussian blur. The default is 4.0. - - *intensity*: The strength of the sharpening, from 0.0 on up, with a default of 1.0 - -- **GPUImageGaussianBlurFilter**: A hardware-optimized, variable-radius Gaussian blur - - *texelSpacingMultiplier*: A multiplier for the spacing between texels, ranging from 0.0 on up, with a default of 1.0. Adjusting this may slightly increase the blur strength, but will introduce artifacts in the result. Highly recommend using other parameters first, before touching this one. - - *blurRadiusInPixels*: A radius in pixels to use for the blur, with a default of 2.0. This adjusts the sigma variable in the Gaussian distribution function. - - *blurRadiusAsFractionOfImageWidth*: - - *blurRadiusAsFractionOfImageHeight*: Setting these properties will allow the blur radius to scale with the size of the image - - *blurPasses*: The number of times to sequentially blur the incoming image. The more passes, the slower the filter. - -- **GPUImageBoxBlurFilter**: A hardware-optimized, variable-radius box blur - - *texelSpacingMultiplier*: A multiplier for the spacing between texels, ranging from 0.0 on up, with a default of 1.0. Adjusting this may slightly increase the blur strength, but will introduce artifacts in the result. Highly recommend using other parameters first, before touching this one. - - *blurRadiusInPixels*: A radius in pixels to use for the blur, with a default of 2.0. This adjusts the sigma variable in the Gaussian distribution function. - - *blurRadiusAsFractionOfImageWidth*: - - *blurRadiusAsFractionOfImageHeight*: Setting these properties will allow the blur radius to scale with the size of the image - - *blurPasses*: The number of times to sequentially blur the incoming image. The more passes, the slower the filter. - -- **GPUImageSingleComponentGaussianBlurFilter**: A modification of the GPUImageGaussianBlurFilter that operates only on the red component - - *texelSpacingMultiplier*: A multiplier for the spacing between texels, ranging from 0.0 on up, with a default of 1.0. Adjusting this may slightly increase the blur strength, but will introduce artifacts in the result. Highly recommend using other parameters first, before touching this one. - - *blurRadiusInPixels*: A radius in pixels to use for the blur, with a default of 2.0. This adjusts the sigma variable in the Gaussian distribution function. - - *blurRadiusAsFractionOfImageWidth*: - - *blurRadiusAsFractionOfImageHeight*: Setting these properties will allow the blur radius to scale with the size of the image - - *blurPasses*: The number of times to sequentially blur the incoming image. The more passes, the slower the filter. - -- **GPUImageGaussianSelectiveBlurFilter**: A Gaussian blur that preserves focus within a circular region - - *blurRadiusInPixels*: A radius in pixels to use for the blur, with a default of 5.0. This adjusts the sigma variable in the Gaussian distribution function. - - *excludeCircleRadius*: The radius of the circular area being excluded from the blur - - *excludeCirclePoint*: The center of the circular area being excluded from the blur - - *excludeBlurSize*: The size of the area between the blurred portion and the clear circle - - *aspectRatio*: The aspect ratio of the image, used to adjust the circularity of the in-focus region. By default, this matches the image aspect ratio, but you can override this value. - -- **GPUImageGaussianBlurPositionFilter**: The inverse of the GPUImageGaussianSelectiveBlurFilter, applying the blur only within a certain circle - - *blurSize*: A multiplier for the size of the blur, ranging from 0.0 on up, with a default of 1.0 - - *blurCenter*: Center for the blur, defaults to 0.5, 0.5 - - *blurRadius*: Radius for the blur, defaults to 1.0 - -- **GPUImageiOSBlurFilter**: An attempt to replicate the background blur used on iOS 7 in places like the control center. - - *blurRadiusInPixels*: A radius in pixels to use for the blur, with a default of 12.0. This adjusts the sigma variable in the Gaussian distribution function. - - *saturation*: Saturation ranges from 0.0 (fully desaturated) to 2.0 (max saturation), with 0.8 as the normal level - - *downsampling*: The degree to which to downsample, then upsample the incoming image to minimize computations within the Gaussian blur, with a default of 4.0. - -- **GPUImageMedianFilter**: Takes the median value of the three color components, over a 3x3 area - -- **GPUImageBilateralFilter**: A bilateral blur, which tries to blur similar color values while preserving sharp edges - - *texelSpacingMultiplier*: A multiplier for the spacing between texel reads, ranging from 0.0 on up, with a default of 4.0 - - *distanceNormalizationFactor*: A normalization factor for the distance between central color and sample color, with a default of 8.0. - -- **GPUImageTiltShiftFilter**: A simulated tilt shift lens effect - - *blurRadiusInPixels*: The radius of the underlying blur, in pixels. This is 7.0 by default. - - *topFocusLevel*: The normalized location of the top of the in-focus area in the image, this value should be lower than bottomFocusLevel, default 0.4 - - *bottomFocusLevel*: The normalized location of the bottom of the in-focus area in the image, this value should be higher than topFocusLevel, default 0.6 - - *focusFallOffRate*: The rate at which the image gets blurry away from the in-focus region, default 0.2 - -- **GPUImage3x3ConvolutionFilter**: Runs a 3x3 convolution kernel against the image - - *convolutionKernel*: The convolution kernel is a 3x3 matrix of values to apply to the pixel and its 8 surrounding pixels. The matrix is specified in row-major order, with the top left pixel being one.one and the bottom right three.three. If the values in the matrix don't add up to 1.0, the image could be brightened or darkened. - -- **GPUImageSobelEdgeDetectionFilter**: Sobel edge detection, with edges highlighted in white - - *texelWidth*: - - *texelHeight*: These parameters affect the visibility of the detected edges - - *edgeStrength*: Adjusts the dynamic range of the filter. Higher values lead to stronger edges, but can saturate the intensity colorspace. Default is 1.0. - -- **GPUImagePrewittEdgeDetectionFilter**: Prewitt edge detection, with edges highlighted in white - - *texelWidth*: - - *texelHeight*: These parameters affect the visibility of the detected edges - - *edgeStrength*: Adjusts the dynamic range of the filter. Higher values lead to stronger edges, but can saturate the intensity colorspace. Default is 1.0. - -- **GPUImageThresholdEdgeDetectionFilter**: Performs Sobel edge detection, but applies a threshold instead of giving gradual strength values - - *texelWidth*: - - *texelHeight*: These parameters affect the visibility of the detected edges - - *edgeStrength*: Adjusts the dynamic range of the filter. Higher values lead to stronger edges, but can saturate the intensity colorspace. Default is 1.0. - - *threshold*: Any edge above this threshold will be black, and anything below white. Ranges from 0.0 to 1.0, with 0.8 as the default - -- **GPUImageCannyEdgeDetectionFilter**: This uses the full Canny process to highlight one-pixel-wide edges - - *texelWidth*: - - *texelHeight*: These parameters affect the visibility of the detected edges - - *blurRadiusInPixels*: The underlying blur radius for the Gaussian blur. Default is 2.0. - - *blurTexelSpacingMultiplier*: The underlying blur texel spacing multiplier. Default is 1.0. - - *upperThreshold*: Any edge with a gradient magnitude above this threshold will pass and show up in the final result. Default is 0.4. - - *lowerThreshold*: Any edge with a gradient magnitude below this threshold will fail and be removed from the final result. Default is 0.1. - -- **GPUImageHarrisCornerDetectionFilter**: Runs the Harris corner detection algorithm on an input image, and produces an image with those corner points as white pixels and everything else black. The cornersDetectedBlock can be set, and you will be provided with a list of corners (in normalized 0..1 X, Y coordinates) within that callback for whatever additional operations you want to perform. - - *blurRadiusInPixels*: The radius of the underlying Gaussian blur. The default is 2.0. - - *sensitivity*: An internal scaling factor applied to adjust the dynamic range of the cornerness maps generated in the filter. The default is 5.0. - - *threshold*: The threshold at which a point is detected as a corner. This can vary significantly based on the size, lighting conditions, and iOS device camera type, so it might take a little experimentation to get right for your cases. Default is 0.20. - -- **GPUImageNobleCornerDetectionFilter**: Runs the Noble variant on the Harris corner detector. It behaves as described above for the Harris detector. - - *blurRadiusInPixels*: The radius of the underlying Gaussian blur. The default is 2.0. - - *sensitivity*: An internal scaling factor applied to adjust the dynamic range of the cornerness maps generated in the filter. The default is 5.0. - - *threshold*: The threshold at which a point is detected as a corner. This can vary significantly based on the size, lighting conditions, and iOS device camera type, so it might take a little experimentation to get right for your cases. Default is 0.2. - -- **GPUImageShiTomasiCornerDetectionFilter**: Runs the Shi-Tomasi feature detector. It behaves as described above for the Harris detector. - - *blurRadiusInPixels*: The radius of the underlying Gaussian blur. The default is 2.0. - - *sensitivity*: An internal scaling factor applied to adjust the dynamic range of the cornerness maps generated in the filter. The default is 1.5. - - *threshold*: The threshold at which a point is detected as a corner. This can vary significantly based on the size, lighting conditions, and iOS device camera type, so it might take a little experimentation to get right for your cases. Default is 0.2. - -- **GPUImageNonMaximumSuppressionFilter**: Currently used only as part of the Harris corner detection filter, this will sample a 1-pixel box around each pixel and determine if the center pixel's red channel is the maximum in that area. If it is, it stays. If not, it is set to 0 for all color components. - -- **GPUImageXYDerivativeFilter**: An internal component within the Harris corner detection filter, this calculates the squared difference between the pixels to the left and right of this one, the squared difference of the pixels above and below this one, and the product of those two differences. - -- **GPUImageCrosshairGenerator**: This draws a series of crosshairs on an image, most often used for identifying machine vision features. It does not take in a standard image like other filters, but a series of points in its -renderCrosshairsFromArray:count: method, which does the actual drawing. You will need to force this filter to render at the particular output size you need. - - *crosshairWidth*: The width, in pixels, of the crosshairs to be drawn onscreen. - -- **GPUImageDilationFilter**: This performs an image dilation operation, where the maximum intensity of the red channel in a rectangular neighborhood is used for the intensity of this pixel. The radius of the rectangular area to sample over is specified on initialization, with a range of 1-4 pixels. This is intended for use with grayscale images, and it expands bright regions. - -- **GPUImageRGBDilationFilter**: This is the same as the GPUImageDilationFilter, except that this acts on all color channels, not just the red channel. - -- **GPUImageErosionFilter**: This performs an image erosion operation, where the minimum intensity of the red channel in a rectangular neighborhood is used for the intensity of this pixel. The radius of the rectangular area to sample over is specified on initialization, with a range of 1-4 pixels. This is intended for use with grayscale images, and it expands dark regions. - -- **GPUImageRGBErosionFilter**: This is the same as the GPUImageErosionFilter, except that this acts on all color channels, not just the red channel. - -- **GPUImageOpeningFilter**: This performs an erosion on the red channel of an image, followed by a dilation of the same radius. The radius is set on initialization, with a range of 1-4 pixels. This filters out smaller bright regions. - -- **GPUImageRGBOpeningFilter**: This is the same as the GPUImageOpeningFilter, except that this acts on all color channels, not just the red channel. - -- **GPUImageClosingFilter**: This performs a dilation on the red channel of an image, followed by an erosion of the same radius. The radius is set on initialization, with a range of 1-4 pixels. This filters out smaller dark regions. - -- **GPUImageRGBClosingFilter**: This is the same as the GPUImageClosingFilter, except that this acts on all color channels, not just the red channel. - -- **GPUImageLocalBinaryPatternFilter**: This performs a comparison of intensity of the red channel of the 8 surrounding pixels and that of the central one, encoding the comparison results in a bit string that becomes this pixel intensity. The least-significant bit is the top-right comparison, going counterclockwise to end at the right comparison as the most significant bit. - -- **GPUImageLowPassFilter**: This applies a low pass filter to incoming video frames. This basically accumulates a weighted rolling average of previous frames with the current ones as they come in. This can be used to denoise video, add motion blur, or be used to create a high pass filter. - - *filterStrength*: This controls the degree by which the previous accumulated frames are blended with the current one. This ranges from 0.0 to 1.0, with a default of 0.5. - -- **GPUImageHighPassFilter**: This applies a high pass filter to incoming video frames. This is the inverse of the low pass filter, showing the difference between the current frame and the weighted rolling average of previous ones. This is most useful for motion detection. - - *filterStrength*: This controls the degree by which the previous accumulated frames are blended and then subtracted from the current one. This ranges from 0.0 to 1.0, with a default of 0.5. - -- **GPUImageMotionDetector**: This is a motion detector based on a high-pass filter. You set the motionDetectionBlock and on every incoming frame it will give you the centroid of any detected movement in the scene (in normalized X,Y coordinates) as well as an intensity of motion for the scene. - - *lowPassFilterStrength*: This controls the strength of the low pass filter used behind the scenes to establish the baseline that incoming frames are compared with. This ranges from 0.0 to 1.0, with a default of 0.5. - -- **GPUImageHoughTransformLineDetector**: Detects lines in the image using a Hough transform into parallel coordinate space. This approach is based entirely on the PC lines process developed by the Graph@FIT research group at the Brno University of Technology and described in their publications: M. Dubská, J. Havel, and A. Herout. Real-Time Detection of Lines using Parallel Coordinates and OpenGL. Proceedings of SCCG 2011, Bratislava, SK, p. 7 (http://medusa.fit.vutbr.cz/public/data/papers/2011-SCCG-Dubska-Real-Time-Line-Detection-Using-PC-and-OpenGL.pdf) and M. Dubská, J. Havel, and A. Herout. PClines — Line detection using parallel coordinates. 2011 IEEE Conference on Computer Vision and Pattern Recognition (CVPR), p. 1489- 1494 (http://medusa.fit.vutbr.cz/public/data/papers/2011-CVPR-Dubska-PClines.pdf). - - *edgeThreshold*: A threshold value for which a point is detected as belonging to an edge for determining lines. Default is 0.9. - - *lineDetectionThreshold*: A threshold value for which a local maximum is detected as belonging to a line in parallel coordinate space. Default is 0.20. - - *linesDetectedBlock*: This block is called on the detection of lines, usually on every processed frame. A C array containing normalized slopes and intercepts in m, b pairs (y=mx+b) is passed in, along with a count of the number of lines detected and the current timestamp of the video frame. - -- **GPUImageLineGenerator**: A helper class that generates lines which can overlay the scene. The color of these lines can be adjusted using -setLineColorRed:green:blue: - - *lineWidth*: The width of the lines, in pixels, with a default of 1.0. - -- **GPUImageMotionBlurFilter**: Applies a directional motion blur to an image - - *blurSize*: A multiplier for the blur size, ranging from 0.0 on up, with a default of 1.0 - - *blurAngle*: The angular direction of the blur, in degrees. 0 degrees by default. - -- **GPUImageZoomBlurFilter**: Applies a directional motion blur to an image - - *blurSize*: A multiplier for the blur size, ranging from 0.0 on up, with a default of 1.0 - - *blurCenter*: The normalized center of the blur. (0.5, 0.5) by default - -### Blending modes ### - -- **GPUImageChromaKeyBlendFilter**: Selectively replaces a color in the first image with the second image - - *thresholdSensitivity*: How close a color match needs to exist to the target color to be replaced (default of 0.4) - - *smoothing*: How smoothly to blend for the color match (default of 0.1) - -- **GPUImageDissolveBlendFilter**: Applies a dissolve blend of two images - - *mix*: The degree with which the second image overrides the first (0.0 - 1.0, with 0.5 as the default) - -- **GPUImageMultiplyBlendFilter**: Applies a multiply blend of two images - -- **GPUImageAddBlendFilter**: Applies an additive blend of two images - -- **GPUImageSubtractBlendFilter**: Applies a subtractive blend of two images - -- **GPUImageDivideBlendFilter**: Applies a division blend of two images - -- **GPUImageOverlayBlendFilter**: Applies an overlay blend of two images - -- **GPUImageDarkenBlendFilter**: Blends two images by taking the minimum value of each color component between the images - -- **GPUImageLightenBlendFilter**: Blends two images by taking the maximum value of each color component between the images - -- **GPUImageColorBurnBlendFilter**: Applies a color burn blend of two images - -- **GPUImageColorDodgeBlendFilter**: Applies a color dodge blend of two images - -- **GPUImageScreenBlendFilter**: Applies a screen blend of two images - -- **GPUImageExclusionBlendFilter**: Applies an exclusion blend of two images - -- **GPUImageDifferenceBlendFilter**: Applies a difference blend of two images - -- **GPUImageHardLightBlendFilter**: Applies a hard light blend of two images - -- **GPUImageSoftLightBlendFilter**: Applies a soft light blend of two images - -- **GPUImageAlphaBlendFilter**: Blends the second image over the first, based on the second's alpha channel - - *mix*: The degree with which the second image overrides the first (0.0 - 1.0, with 1.0 as the default) - -- **GPUImageSourceOverBlendFilter**: Applies a source over blend of two images - -- **GPUImageColorBurnBlendFilter**: Applies a color burn blend of two images - -- **GPUImageColorDodgeBlendFilter**: Applies a color dodge blend of two images - -- **GPUImageNormalBlendFilter**: Applies a normal blend of two images - -- **GPUImageColorBlendFilter**: Applies a color blend of two images - -- **GPUImageHueBlendFilter**: Applies a hue blend of two images - -- **GPUImageSaturationBlendFilter**: Applies a saturation blend of two images - -- **GPUImageLuminosityBlendFilter**: Applies a luminosity blend of two images - -- **GPUImageLinearBurnBlendFilter**: Applies a linear burn blend of two images - -- **GPUImagePoissonBlendFilter**: Applies a Poisson blend of two images - - *mix*: Mix ranges from 0.0 (only image 1) to 1.0 (only image 2 gradients), with 1.0 as the normal level - - *numIterations*: The number of times to propagate the gradients. Crank this up to 100 or even 1000 if you want to get anywhere near convergence. Yes, this will be slow. - -- **GPUImageMaskFilter**: Masks one image using another - -### Visual effects ### - -- **GPUImagePixellateFilter**: Applies a pixellation effect on an image or video - - *fractionalWidthOfAPixel*: How large the pixels are, as a fraction of the width and height of the image (0.0 - 1.0, default 0.05) - -- **GPUImagePolarPixellateFilter**: Applies a pixellation effect on an image or video, based on polar coordinates instead of Cartesian ones - - *center*: The center about which to apply the pixellation, defaulting to (0.5, 0.5) - - *pixelSize*: The fractional pixel size, split into width and height components. The default is (0.05, 0.05) - -- **GPUImagePolkaDotFilter**: Breaks an image up into colored dots within a regular grid - - *fractionalWidthOfAPixel*: How large the dots are, as a fraction of the width and height of the image (0.0 - 1.0, default 0.05) - - *dotScaling*: What fraction of each grid space is taken up by a dot, from 0.0 to 1.0 with a default of 0.9. - -- **GPUImageHalftoneFilter**: Applies a halftone effect to an image, like news print - - *fractionalWidthOfAPixel*: How large the halftone dots are, as a fraction of the width and height of the image (0.0 - 1.0, default 0.05) - -- **GPUImageCrosshatchFilter**: This converts an image into a black-and-white crosshatch pattern - - *crossHatchSpacing*: The fractional width of the image to use as the spacing for the crosshatch. The default is 0.03. - - *lineWidth*: A relative width for the crosshatch lines. The default is 0.003. - -- **GPUImageSketchFilter**: Converts video to look like a sketch. This is just the Sobel edge detection filter with the colors inverted - - *texelWidth*: - - *texelHeight*: These parameters affect the visibility of the detected edges - - *edgeStrength*: Adjusts the dynamic range of the filter. Higher values lead to stronger edges, but can saturate the intensity colorspace. Default is 1.0. - -- **GPUImageThresholdSketchFilter**: Same as the sketch filter, only the edges are thresholded instead of being grayscale - - *texelWidth*: - - *texelHeight*: These parameters affect the visibility of the detected edges - - *edgeStrength*: Adjusts the dynamic range of the filter. Higher values lead to stronger edges, but can saturate the intensity colorspace. Default is 1.0. - - *threshold*: Any edge above this threshold will be black, and anything below white. Ranges from 0.0 to 1.0, with 0.8 as the default - -- **GPUImageToonFilter**: This uses Sobel edge detection to place a black border around objects, and then it quantizes the colors present in the image to give a cartoon-like quality to the image. - - *texelWidth*: - - *texelHeight*: These parameters affect the visibility of the detected edges - - *threshold*: The sensitivity of the edge detection, with lower values being more sensitive. Ranges from 0.0 to 1.0, with 0.2 as the default - - *quantizationLevels*: The number of color levels to represent in the final image. Default is 10.0 - -- **GPUImageSmoothToonFilter**: This uses a similar process as the GPUImageToonFilter, only it precedes the toon effect with a Gaussian blur to smooth out noise. - - *texelWidth*: - - *texelHeight*: These parameters affect the visibility of the detected edges - - *blurRadiusInPixels*: The radius of the underlying Gaussian blur. The default is 2.0. - - *threshold*: The sensitivity of the edge detection, with lower values being more sensitive. Ranges from 0.0 to 1.0, with 0.2 as the default - - *quantizationLevels*: The number of color levels to represent in the final image. Default is 10.0 - -- **GPUImageEmbossFilter**: Applies an embossing effect on the image - - *intensity*: The strength of the embossing, from 0.0 to 4.0, with 1.0 as the normal level - -- **GPUImagePosterizeFilter**: This reduces the color dynamic range into the number of steps specified, leading to a cartoon-like simple shading of the image. - - *colorLevels*: The number of color levels to reduce the image space to. This ranges from 1 to 256, with a default of 10. - -- **GPUImageSwirlFilter**: Creates a swirl distortion on the image - - *radius*: The radius from the center to apply the distortion, with a default of 0.5 - - *center*: The center of the image (in normalized coordinates from 0 - 1.0) about which to twist, with a default of (0.5, 0.5) - - *angle*: The amount of twist to apply to the image, with a default of 1.0 - -- **GPUImageBulgeDistortionFilter**: Creates a bulge distortion on the image - - *radius*: The radius from the center to apply the distortion, with a default of 0.25 - - *center*: The center of the image (in normalized coordinates from 0 - 1.0) about which to distort, with a default of (0.5, 0.5) - - *scale*: The amount of distortion to apply, from -1.0 to 1.0, with a default of 0.5 - -- **GPUImagePinchDistortionFilter**: Creates a pinch distortion of the image - - *radius*: The radius from the center to apply the distortion, with a default of 1.0 - - *center*: The center of the image (in normalized coordinates from 0 - 1.0) about which to distort, with a default of (0.5, 0.5) - - *scale*: The amount of distortion to apply, from -2.0 to 2.0, with a default of 1.0 - -- **GPUImageStretchDistortionFilter**: Creates a stretch distortion of the image - - *center*: The center of the image (in normalized coordinates from 0 - 1.0) about which to distort, with a default of (0.5, 0.5) - -- **GPUImageSphereRefractionFilter**: Simulates the refraction through a glass sphere - - *center*: The center about which to apply the distortion, with a default of (0.5, 0.5) - - *radius*: The radius of the distortion, ranging from 0.0 to 1.0, with a default of 0.25 - - *refractiveIndex*: The index of refraction for the sphere, with a default of 0.71 - -- **GPUImageGlassSphereFilter**: Same as the GPUImageSphereRefractionFilter, only the image is not inverted and there's a little bit of frosting at the edges of the glass - - *center*: The center about which to apply the distortion, with a default of (0.5, 0.5) - - *radius*: The radius of the distortion, ranging from 0.0 to 1.0, with a default of 0.25 - - *refractiveIndex*: The index of refraction for the sphere, with a default of 0.71 - -- **GPUImageVignetteFilter**: Performs a vignetting effect, fading out the image at the edges - - *x*: - - *y*: The directional intensity of the vignetting, with a default of x = 0.75, y = 0.5 - -- **GPUImageKuwaharaFilter**: Kuwahara image abstraction, drawn from the work of Kyprianidis, et. al. in their publication "Anisotropic Kuwahara Filtering on the GPU" within the GPU Pro collection. This produces an oil-painting-like image, but it is extremely computationally expensive, so it can take seconds to render a frame on an iPad 2. This might be best used for still images. - - *radius*: In integer specifying the number of pixels out from the center pixel to test when applying the filter, with a default of 4. A higher value creates a more abstracted image, but at the cost of much greater processing time. - -- **GPUImageKuwaharaRadius3Filter**: A modified version of the Kuwahara filter, optimized to work over just a radius of three pixels - -- **GPUImagePerlinNoiseFilter**: Generates an image full of Perlin noise - - *colorStart*: - - *colorFinish*: The color range for the noise being generated - - *scale*: The scaling of the noise being generated - -- **GPUImageCGAColorspaceFilter**: Simulates the colorspace of a CGA monitor - -- **GPUImageMosaicFilter**: This filter takes an input tileset, the tiles must ascend in luminance. It looks at the input image and replaces each display tile with an input tile according to the luminance of that tile. The idea was to replicate the ASCII video filters seen in other apps, but the tileset can be anything. - - *inputTileSize*: - - *numTiles*: - - *displayTileSize*: - - *colorOn*: - -- **GPUImageJFAVoronoiFilter**: Generates a Voronoi map, for use in a later stage. - - *sizeInPixels*: Size of the individual elements - -- **GPUImageVoronoiConsumerFilter**: Takes in the Voronoi map, and uses that to filter an incoming image. - - *sizeInPixels*: Size of the individual elements - -You can also easily write your own custom filters using the C-like OpenGL Shading Language, as described above. - -## Sample applications ## - -Several sample applications are bundled with the framework source. Most are compatible with both iPhone and iPad-class devices. They attempt to show off various aspects of the framework and should be used as the best examples of the API while the framework is under development. These include: - -### SimpleImageFilter ### - -A bundled JPEG image is loaded into the application at launch, a filter is applied to it, and the result rendered to the screen. Additionally, this sample shows two ways of taking in an image, filtering it, and saving it to disk. - -### SimpleVideoFilter ### - -A pixellate filter is applied to a live video stream, with a UISlider control that lets you adjust the pixel size on the live video. - -### SimpleVideoFileFilter ### - -A movie file is loaded from disk, an unsharp mask filter is applied to it, and the filtered result is re-encoded as another movie. - -### MultiViewFilterExample ### - -From a single camera feed, four views are populated with realtime filters applied to camera. One is just the straight camera video, one is a preprogrammed sepia tone, and two are custom filters based on shader programs. - -### FilterShowcase ### - -This demonstrates every filter supplied with GPUImage. - -### BenchmarkSuite ### - -This is used to test the performance of the overall framework by testing it against CPU-bound routines and Core Image. Benchmarks involving still images and video are run against all three, with results displayed in-application. - -### CubeExample ### - -This demonstrates the ability of GPUImage to interact with OpenGL ES rendering. Frames are captured from the camera, a sepia filter applied to them, and then they are fed into a texture to be applied to the face of a cube you can rotate with your finger. This cube in turn is rendered to a texture-backed framebuffer object, and that texture is fed back into GPUImage to have a pixellation filter applied to it before rendering to screen. - -In other words, the path of this application is camera -> sepia tone filter -> cube -> pixellation filter -> display. - -### ColorObjectTracking ### - -A version of my ColorTracking example from http://www.sunsetlakesoftware.com/2010/10/22/gpu-accelerated-video-processing-mac-and-ios ported across to use GPUImage, this application uses color in a scene to track objects from a live camera feed. The four views you can switch between include the raw camera feed, the camera feed with pixels matching the color threshold in white, the processed video where positions are encoded as colors within the pixels passing the threshold test, and finally the live video feed with a dot that tracks the selected color. Tapping the screen changes the color to track to match the color of the pixels under your finger. Tapping and dragging on the screen makes the color threshold more or less forgiving. This is most obvious on the second, color thresholding view. - -Currently, all processing for the color averaging in the last step is done on the CPU, so this is part is extremely slow. diff --git a/Example/Pods/GPUImage/framework/Resources/lookup.png b/Example/Pods/GPUImage/framework/Resources/lookup.png deleted file mode 100644 index ed814df..0000000 Binary files a/Example/Pods/GPUImage/framework/Resources/lookup.png and /dev/null differ diff --git a/Example/Pods/GPUImage/framework/Resources/lookup_amatorka.png b/Example/Pods/GPUImage/framework/Resources/lookup_amatorka.png deleted file mode 100644 index 4a2cc8a..0000000 Binary files a/Example/Pods/GPUImage/framework/Resources/lookup_amatorka.png and /dev/null differ diff --git a/Example/Pods/GPUImage/framework/Resources/lookup_miss_etikate.png b/Example/Pods/GPUImage/framework/Resources/lookup_miss_etikate.png deleted file mode 100644 index e1317d7..0000000 Binary files a/Example/Pods/GPUImage/framework/Resources/lookup_miss_etikate.png and /dev/null differ diff --git a/Example/Pods/GPUImage/framework/Resources/lookup_soft_elegance_1.png b/Example/Pods/GPUImage/framework/Resources/lookup_soft_elegance_1.png deleted file mode 100644 index 525437a..0000000 Binary files a/Example/Pods/GPUImage/framework/Resources/lookup_soft_elegance_1.png and /dev/null differ diff --git a/Example/Pods/GPUImage/framework/Resources/lookup_soft_elegance_2.png b/Example/Pods/GPUImage/framework/Resources/lookup_soft_elegance_2.png deleted file mode 100644 index ccc6d4e..0000000 Binary files a/Example/Pods/GPUImage/framework/Resources/lookup_soft_elegance_2.png and /dev/null differ diff --git a/Example/Pods/GPUImage/framework/Source/GLProgram.h b/Example/Pods/GPUImage/framework/Source/GLProgram.h deleted file mode 100755 index cd455e7..0000000 --- a/Example/Pods/GPUImage/framework/Source/GLProgram.h +++ /dev/null @@ -1,42 +0,0 @@ -// This is Jeff LaMarche's GLProgram OpenGL shader wrapper class from his OpenGL ES 2.0 book. -// A description of this can be found at his page on the topic: -// http://iphonedevelopment.blogspot.com/2010/11/opengl-es-20-for-ios-chapter-4.html -// I've extended this to be able to take programs as NSStrings in addition to files, for baked-in shaders - -#import - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -#import -#import -#else -#import -#import -#endif - -@interface GLProgram : NSObject -{ - NSMutableArray *attributes; - NSMutableArray *uniforms; - GLuint program, - vertShader, - fragShader; -} - -@property(readwrite, nonatomic) BOOL initialized; -@property(readwrite, copy, nonatomic) NSString *vertexShaderLog; -@property(readwrite, copy, nonatomic) NSString *fragmentShaderLog; -@property(readwrite, copy, nonatomic) NSString *programLog; - -- (id)initWithVertexShaderString:(NSString *)vShaderString - fragmentShaderString:(NSString *)fShaderString; -- (id)initWithVertexShaderString:(NSString *)vShaderString - fragmentShaderFilename:(NSString *)fShaderFilename; -- (id)initWithVertexShaderFilename:(NSString *)vShaderFilename - fragmentShaderFilename:(NSString *)fShaderFilename; -- (void)addAttribute:(NSString *)attributeName; -- (GLuint)attributeIndex:(NSString *)attributeName; -- (GLuint)uniformIndex:(NSString *)uniformName; -- (BOOL)link; -- (void)use; -- (void)validate; -@end diff --git a/Example/Pods/GPUImage/framework/Source/GLProgram.m b/Example/Pods/GPUImage/framework/Source/GLProgram.m deleted file mode 100755 index 105d75f..0000000 --- a/Example/Pods/GPUImage/framework/Source/GLProgram.m +++ /dev/null @@ -1,236 +0,0 @@ -// This is Jeff LaMarche's GLProgram OpenGL shader wrapper class from his OpenGL ES 2.0 book. -// A description of this can be found at his page on the topic: -// http://iphonedevelopment.blogspot.com/2010/11/opengl-es-20-for-ios-chapter-4.html - - -#import "GLProgram.h" -// START:typedefs -#pragma mark Function Pointer Definitions -typedef void (*GLInfoFunction)(GLuint program, GLenum pname, GLint* params); -typedef void (*GLLogFunction) (GLuint program, GLsizei bufsize, GLsizei* length, GLchar* infolog); -// END:typedefs -#pragma mark - -#pragma mark Private Extension Method Declaration -// START:extension -@interface GLProgram() - -- (BOOL)compileShader:(GLuint *)shader - type:(GLenum)type - string:(NSString *)shaderString; -@end -// END:extension -#pragma mark - - -@implementation GLProgram -// START:init - -@synthesize initialized = _initialized; - -- (id)initWithVertexShaderString:(NSString *)vShaderString - fragmentShaderString:(NSString *)fShaderString; -{ - if ((self = [super init])) - { - _initialized = NO; - - attributes = [[NSMutableArray alloc] init]; - uniforms = [[NSMutableArray alloc] init]; - program = glCreateProgram(); - - if (![self compileShader:&vertShader - type:GL_VERTEX_SHADER - string:vShaderString]) - { - NSLog(@"Failed to compile vertex shader"); - } - - // Create and compile fragment shader - if (![self compileShader:&fragShader - type:GL_FRAGMENT_SHADER - string:fShaderString]) - { - NSLog(@"Failed to compile fragment shader"); - } - - glAttachShader(program, vertShader); - glAttachShader(program, fragShader); - } - - return self; -} - -- (id)initWithVertexShaderString:(NSString *)vShaderString - fragmentShaderFilename:(NSString *)fShaderFilename; -{ - NSString *fragShaderPathname = [[NSBundle mainBundle] pathForResource:fShaderFilename ofType:@"fsh"]; - NSString *fragmentShaderString = [NSString stringWithContentsOfFile:fragShaderPathname encoding:NSUTF8StringEncoding error:nil]; - - if ((self = [self initWithVertexShaderString:vShaderString fragmentShaderString:fragmentShaderString])) - { - } - - return self; -} - -- (id)initWithVertexShaderFilename:(NSString *)vShaderFilename - fragmentShaderFilename:(NSString *)fShaderFilename; -{ - NSString *vertShaderPathname = [[NSBundle mainBundle] pathForResource:vShaderFilename ofType:@"vsh"]; - NSString *vertexShaderString = [NSString stringWithContentsOfFile:vertShaderPathname encoding:NSUTF8StringEncoding error:nil]; - - NSString *fragShaderPathname = [[NSBundle mainBundle] pathForResource:fShaderFilename ofType:@"fsh"]; - NSString *fragmentShaderString = [NSString stringWithContentsOfFile:fragShaderPathname encoding:NSUTF8StringEncoding error:nil]; - - if ((self = [self initWithVertexShaderString:vertexShaderString fragmentShaderString:fragmentShaderString])) - { - } - - return self; -} -// END:init -// START:compile -- (BOOL)compileShader:(GLuint *)shader - type:(GLenum)type - string:(NSString *)shaderString -{ -// CFAbsoluteTime startTime = CFAbsoluteTimeGetCurrent(); - - GLint status; - const GLchar *source; - - source = - (GLchar *)[shaderString UTF8String]; - if (!source) - { - NSLog(@"Failed to load vertex shader"); - return NO; - } - - *shader = glCreateShader(type); - glShaderSource(*shader, 1, &source, NULL); - glCompileShader(*shader); - - glGetShaderiv(*shader, GL_COMPILE_STATUS, &status); - - if (status != GL_TRUE) - { - GLint logLength; - glGetShaderiv(*shader, GL_INFO_LOG_LENGTH, &logLength); - if (logLength > 0) - { - GLchar *log = (GLchar *)malloc(logLength); - glGetShaderInfoLog(*shader, logLength, &logLength, log); - if (shader == &vertShader) - { - self.vertexShaderLog = [NSString stringWithFormat:@"%s", log]; - } - else - { - self.fragmentShaderLog = [NSString stringWithFormat:@"%s", log]; - } - - free(log); - } - } - -// CFAbsoluteTime linkTime = (CFAbsoluteTimeGetCurrent() - startTime); -// NSLog(@"Compiled in %f ms", linkTime * 1000.0); - - return status == GL_TRUE; -} -// END:compile -#pragma mark - -// START:addattribute -- (void)addAttribute:(NSString *)attributeName -{ - if (![attributes containsObject:attributeName]) - { - [attributes addObject:attributeName]; - glBindAttribLocation(program, - (GLuint)[attributes indexOfObject:attributeName], - [attributeName UTF8String]); - } -} -// END:addattribute -// START:indexmethods -- (GLuint)attributeIndex:(NSString *)attributeName -{ - return (GLuint)[attributes indexOfObject:attributeName]; -} -- (GLuint)uniformIndex:(NSString *)uniformName -{ - return glGetUniformLocation(program, [uniformName UTF8String]); -} -// END:indexmethods -#pragma mark - -// START:link -- (BOOL)link -{ -// CFAbsoluteTime startTime = CFAbsoluteTimeGetCurrent(); - - GLint status; - - glLinkProgram(program); - - glGetProgramiv(program, GL_LINK_STATUS, &status); - if (status == GL_FALSE) - return NO; - - if (vertShader) - { - glDeleteShader(vertShader); - vertShader = 0; - } - if (fragShader) - { - glDeleteShader(fragShader); - fragShader = 0; - } - - self.initialized = YES; - -// CFAbsoluteTime linkTime = (CFAbsoluteTimeGetCurrent() - startTime); -// NSLog(@"Linked in %f ms", linkTime * 1000.0); - - return YES; -} -// END:link -// START:use -- (void)use -{ - glUseProgram(program); -} -// END:use -#pragma mark - - -- (void)validate; -{ - GLint logLength; - - glValidateProgram(program); - glGetProgramiv(program, GL_INFO_LOG_LENGTH, &logLength); - if (logLength > 0) - { - GLchar *log = (GLchar *)malloc(logLength); - glGetProgramInfoLog(program, logLength, &logLength, log); - self.programLog = [NSString stringWithFormat:@"%s", log]; - free(log); - } -} - -#pragma mark - -// START:dealloc -- (void)dealloc -{ - if (vertShader) - glDeleteShader(vertShader); - - if (fragShader) - glDeleteShader(fragShader); - - if (program) - glDeleteProgram(program); - -} -// END:dealloc -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImage.h b/Example/Pods/GPUImage/framework/Source/GPUImage.h deleted file mode 100755 index f7e96b3..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImage.h +++ /dev/null @@ -1,164 +0,0 @@ -#import "GLProgram.h" - -// Base classes -#import "GPUImageContext.h" -#import "GPUImageOutput.h" -#import "GPUImageView.h" -#import "GPUImageVideoCamera.h" -#import "GPUImageStillCamera.h" -#import "GPUImageMovie.h" -#import "GPUImagePicture.h" -#import "GPUImageRawDataInput.h" -#import "GPUImageRawDataOutput.h" -#import "GPUImageMovieWriter.h" -#import "GPUImageFilterPipeline.h" -#import "GPUImageTextureOutput.h" -#import "GPUImageFilterGroup.h" -#import "GPUImageTextureInput.h" -#import "GPUImageUIElement.h" -#import "GPUImageBuffer.h" -#import "GPUImageFramebuffer.h" -#import "GPUImageFramebufferCache.h" - -// Filters -#import "GPUImageFilter.h" -#import "GPUImageTwoInputFilter.h" -#import "GPUImagePixellateFilter.h" -#import "GPUImagePixellatePositionFilter.h" -#import "GPUImageSepiaFilter.h" -#import "GPUImageColorInvertFilter.h" -#import "GPUImageSaturationFilter.h" -#import "GPUImageContrastFilter.h" -#import "GPUImageExposureFilter.h" -#import "GPUImageBrightnessFilter.h" -#import "GPUImageLevelsFilter.h" -#import "GPUImageSharpenFilter.h" -#import "GPUImageGammaFilter.h" -#import "GPUImageSobelEdgeDetectionFilter.h" -#import "GPUImageSketchFilter.h" -#import "GPUImageToonFilter.h" -#import "GPUImageSmoothToonFilter.h" -#import "GPUImageMultiplyBlendFilter.h" -#import "GPUImageDissolveBlendFilter.h" -#import "GPUImageKuwaharaFilter.h" -#import "GPUImageKuwaharaRadius3Filter.h" -#import "GPUImageVignetteFilter.h" -#import "GPUImageGaussianBlurFilter.h" -#import "GPUImageGaussianBlurPositionFilter.h" -#import "GPUImageGaussianSelectiveBlurFilter.h" -#import "GPUImageOverlayBlendFilter.h" -#import "GPUImageDarkenBlendFilter.h" -#import "GPUImageLightenBlendFilter.h" -#import "GPUImageSwirlFilter.h" -#import "GPUImageSourceOverBlendFilter.h" -#import "GPUImageColorBurnBlendFilter.h" -#import "GPUImageColorDodgeBlendFilter.h" -#import "GPUImageScreenBlendFilter.h" -#import "GPUImageExclusionBlendFilter.h" -#import "GPUImageDifferenceBlendFilter.h" -#import "GPUImageSubtractBlendFilter.h" -#import "GPUImageHardLightBlendFilter.h" -#import "GPUImageSoftLightBlendFilter.h" -#import "GPUImageColorBlendFilter.h" -#import "GPUImageHueBlendFilter.h" -#import "GPUImageSaturationBlendFilter.h" -#import "GPUImageLuminosityBlendFilter.h" -#import "GPUImageCropFilter.h" -#import "GPUImageGrayscaleFilter.h" -#import "GPUImageTransformFilter.h" -#import "GPUImageChromaKeyBlendFilter.h" -#import "GPUImageHazeFilter.h" -#import "GPUImageLuminanceThresholdFilter.h" -#import "GPUImagePosterizeFilter.h" -#import "GPUImageBoxBlurFilter.h" -#import "GPUImageAdaptiveThresholdFilter.h" -#import "GPUImageUnsharpMaskFilter.h" -#import "GPUImageBulgeDistortionFilter.h" -#import "GPUImagePinchDistortionFilter.h" -#import "GPUImageCrosshatchFilter.h" -#import "GPUImageCGAColorspaceFilter.h" -#import "GPUImagePolarPixellateFilter.h" -#import "GPUImageStretchDistortionFilter.h" -#import "GPUImagePerlinNoiseFilter.h" -#import "GPUImageJFAVoronoiFilter.h" -#import "GPUImageVoronoiConsumerFilter.h" -#import "GPUImageMosaicFilter.h" -#import "GPUImageTiltShiftFilter.h" -#import "GPUImage3x3ConvolutionFilter.h" -#import "GPUImageEmbossFilter.h" -#import "GPUImageCannyEdgeDetectionFilter.h" -#import "GPUImageThresholdEdgeDetectionFilter.h" -#import "GPUImageMaskFilter.h" -#import "GPUImageHistogramFilter.h" -#import "GPUImageHistogramGenerator.h" -#import "GPUImageHistogramEqualizationFilter.h" -#import "GPUImagePrewittEdgeDetectionFilter.h" -#import "GPUImageXYDerivativeFilter.h" -#import "GPUImageHarrisCornerDetectionFilter.h" -#import "GPUImageAlphaBlendFilter.h" -#import "GPUImageNormalBlendFilter.h" -#import "GPUImageNonMaximumSuppressionFilter.h" -#import "GPUImageRGBFilter.h" -#import "GPUImageMedianFilter.h" -#import "GPUImageBilateralFilter.h" -#import "GPUImageCrosshairGenerator.h" -#import "GPUImageToneCurveFilter.h" -#import "GPUImageNobleCornerDetectionFilter.h" -#import "GPUImageShiTomasiFeatureDetectionFilter.h" -#import "GPUImageErosionFilter.h" -#import "GPUImageRGBErosionFilter.h" -#import "GPUImageDilationFilter.h" -#import "GPUImageRGBDilationFilter.h" -#import "GPUImageOpeningFilter.h" -#import "GPUImageRGBOpeningFilter.h" -#import "GPUImageClosingFilter.h" -#import "GPUImageRGBClosingFilter.h" -#import "GPUImageColorPackingFilter.h" -#import "GPUImageSphereRefractionFilter.h" -#import "GPUImageMonochromeFilter.h" -#import "GPUImageOpacityFilter.h" -#import "GPUImageHighlightShadowFilter.h" -#import "GPUImageFalseColorFilter.h" -#import "GPUImageHSBFilter.h" -#import "GPUImageHueFilter.h" -#import "GPUImageGlassSphereFilter.h" -#import "GPUImageLookupFilter.h" -#import "GPUImageAmatorkaFilter.h" -#import "GPUImageMissEtikateFilter.h" -#import "GPUImageSoftEleganceFilter.h" -#import "GPUImageAddBlendFilter.h" -#import "GPUImageDivideBlendFilter.h" -#import "GPUImagePolkaDotFilter.h" -#import "GPUImageLocalBinaryPatternFilter.h" -#import "GPUImageLanczosResamplingFilter.h" -#import "GPUImageAverageColor.h" -#import "GPUImageSolidColorGenerator.h" -#import "GPUImageLuminosity.h" -#import "GPUImageAverageLuminanceThresholdFilter.h" -#import "GPUImageWhiteBalanceFilter.h" -#import "GPUImageChromaKeyFilter.h" -#import "GPUImageLowPassFilter.h" -#import "GPUImageHighPassFilter.h" -#import "GPUImageMotionDetector.h" -#import "GPUImageHalftoneFilter.h" -#import "GPUImageThresholdedNonMaximumSuppressionFilter.h" -#import "GPUImageHoughTransformLineDetector.h" -#import "GPUImageParallelCoordinateLineTransformFilter.h" -#import "GPUImageThresholdSketchFilter.h" -#import "GPUImageLineGenerator.h" -#import "GPUImageLinearBurnBlendFilter.h" -#import "GPUImageGaussianBlurPositionFilter.h" -#import "GPUImagePixellatePositionFilter.h" -#import "GPUImageTwoInputCrossTextureSamplingFilter.h" -#import "GPUImagePoissonBlendFilter.h" -#import "GPUImageMotionBlurFilter.h" -#import "GPUImageZoomBlurFilter.h" -#import "GPUImageLaplacianFilter.h" -#import "GPUImageiOSBlurFilter.h" -#import "GPUImageLuminanceRangeFilter.h" -#import "GPUImageDirectionalNonMaximumSuppressionFilter.h" -#import "GPUImageDirectionalSobelEdgeDetectionFilter.h" -#import "GPUImageSingleComponentGaussianBlurFilter.h" -#import "GPUImageThreeInputFilter.h" -#import "GPUImageWeakPixelInclusionFilter.h" - diff --git a/Example/Pods/GPUImage/framework/Source/GPUImage3x3ConvolutionFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImage3x3ConvolutionFilter.h deleted file mode 100755 index 67e68de..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImage3x3ConvolutionFilter.h +++ /dev/null @@ -1,18 +0,0 @@ -#import "GPUImage3x3TextureSamplingFilter.h" - -/** Runs a 3x3 convolution kernel against the image - */ -@interface GPUImage3x3ConvolutionFilter : GPUImage3x3TextureSamplingFilter -{ - GLint convolutionMatrixUniform; -} - -/** Convolution kernel to run against the image - - The convolution kernel is a 3x3 matrix of values to apply to the pixel and its 8 surrounding pixels. - The matrix is specified in row-major order, with the top left pixel being one.one and the bottom right three.three - If the values in the matrix don't add up to 1.0, the image could be brightened or darkened. - */ -@property(readwrite, nonatomic) GPUMatrix3x3 convolutionKernel; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImage3x3ConvolutionFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImage3x3ConvolutionFilter.m deleted file mode 100755 index c623ac6..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImage3x3ConvolutionFilter.m +++ /dev/null @@ -1,128 +0,0 @@ -#import "GPUImage3x3ConvolutionFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImage3x3ConvolutionFragmentShaderString = SHADER_STRING -( - precision highp float; - - uniform sampler2D inputImageTexture; - - uniform mediump mat3 convolutionMatrix; - - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - void main() - { - mediump vec3 bottomColor = texture2D(inputImageTexture, bottomTextureCoordinate).rgb; - mediump vec3 bottomLeftColor = texture2D(inputImageTexture, bottomLeftTextureCoordinate).rgb; - mediump vec3 bottomRightColor = texture2D(inputImageTexture, bottomRightTextureCoordinate).rgb; - mediump vec4 centerColor = texture2D(inputImageTexture, textureCoordinate); - mediump vec3 leftColor = texture2D(inputImageTexture, leftTextureCoordinate).rgb; - mediump vec3 rightColor = texture2D(inputImageTexture, rightTextureCoordinate).rgb; - mediump vec3 topColor = texture2D(inputImageTexture, topTextureCoordinate).rgb; - mediump vec3 topRightColor = texture2D(inputImageTexture, topRightTextureCoordinate).rgb; - mediump vec3 topLeftColor = texture2D(inputImageTexture, topLeftTextureCoordinate).rgb; - - mediump vec3 resultColor = topLeftColor * convolutionMatrix[0][0] + topColor * convolutionMatrix[0][1] + topRightColor * convolutionMatrix[0][2]; - resultColor += leftColor * convolutionMatrix[1][0] + centerColor.rgb * convolutionMatrix[1][1] + rightColor * convolutionMatrix[1][2]; - resultColor += bottomLeftColor * convolutionMatrix[2][0] + bottomColor * convolutionMatrix[2][1] + bottomRightColor * convolutionMatrix[2][2]; - - gl_FragColor = vec4(resultColor, centerColor.a); - } -); -#else -NSString *const kGPUImage3x3ConvolutionFragmentShaderString = SHADER_STRING -( - uniform sampler2D inputImageTexture; - - uniform mat3 convolutionMatrix; - - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - void main() - { - vec3 bottomColor = texture2D(inputImageTexture, bottomTextureCoordinate).rgb; - vec3 bottomLeftColor = texture2D(inputImageTexture, bottomLeftTextureCoordinate).rgb; - vec3 bottomRightColor = texture2D(inputImageTexture, bottomRightTextureCoordinate).rgb; - vec4 centerColor = texture2D(inputImageTexture, textureCoordinate); - vec3 leftColor = texture2D(inputImageTexture, leftTextureCoordinate).rgb; - vec3 rightColor = texture2D(inputImageTexture, rightTextureCoordinate).rgb; - vec3 topColor = texture2D(inputImageTexture, topTextureCoordinate).rgb; - vec3 topRightColor = texture2D(inputImageTexture, topRightTextureCoordinate).rgb; - vec3 topLeftColor = texture2D(inputImageTexture, topLeftTextureCoordinate).rgb; - - vec3 resultColor = topLeftColor * convolutionMatrix[0][0] + topColor * convolutionMatrix[0][1] + topRightColor * convolutionMatrix[0][2]; - resultColor += leftColor * convolutionMatrix[1][0] + centerColor.rgb * convolutionMatrix[1][1] + rightColor * convolutionMatrix[1][2]; - resultColor += bottomLeftColor * convolutionMatrix[2][0] + bottomColor * convolutionMatrix[2][1] + bottomRightColor * convolutionMatrix[2][2]; - - gl_FragColor = vec4(resultColor, centerColor.a); - } -); -#endif - -@implementation GPUImage3x3ConvolutionFilter - -@synthesize convolutionKernel = _convolutionKernel; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [self initWithFragmentShaderFromString:kGPUImage3x3ConvolutionFragmentShaderString])) - { - return nil; - } - - self.convolutionKernel = (GPUMatrix3x3){ - {0.f, 0.f, 0.f}, - {0.f, 1.f, 0.f}, - {0.f, 0.f, 0.f} - }; - - return self; -} - -- (id)initWithFragmentShaderFromString:(NSString *)fragmentShaderString; -{ - if (!(self = [super initWithFragmentShaderFromString:fragmentShaderString])) - { - return nil; - } - - convolutionMatrixUniform = [filterProgram uniformIndex:@"convolutionMatrix"]; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setConvolutionKernel:(GPUMatrix3x3)newValue; -{ - _convolutionKernel = newValue; - - [self setMatrix3f:_convolutionKernel forUniform:convolutionMatrixUniform program:filterProgram]; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImage3x3TextureSamplingFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImage3x3TextureSamplingFilter.h deleted file mode 100644 index 5599e15..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImage3x3TextureSamplingFilter.h +++ /dev/null @@ -1,18 +0,0 @@ -#import "GPUImageFilter.h" - -extern NSString *const kGPUImageNearbyTexelSamplingVertexShaderString; - -@interface GPUImage3x3TextureSamplingFilter : GPUImageFilter -{ - GLint texelWidthUniform, texelHeightUniform; - - CGFloat texelWidth, texelHeight; - BOOL hasOverriddenImageSizeFactor; -} - -// The texel width and height determines how far out to sample from this texel. By default, this is the normalized width of a pixel, but this can be overridden for different effects. -@property(readwrite, nonatomic) CGFloat texelWidth; -@property(readwrite, nonatomic) CGFloat texelHeight; - - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImage3x3TextureSamplingFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImage3x3TextureSamplingFilter.m deleted file mode 100644 index 05c4d50..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImage3x3TextureSamplingFilter.m +++ /dev/null @@ -1,121 +0,0 @@ -#import "GPUImage3x3TextureSamplingFilter.h" - -// Override vertex shader to remove dependent texture reads -NSString *const kGPUImageNearbyTexelSamplingVertexShaderString = SHADER_STRING -( - attribute vec4 position; - attribute vec4 inputTextureCoordinate; - - uniform float texelWidth; - uniform float texelHeight; - - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - void main() - { - gl_Position = position; - - vec2 widthStep = vec2(texelWidth, 0.0); - vec2 heightStep = vec2(0.0, texelHeight); - vec2 widthHeightStep = vec2(texelWidth, texelHeight); - vec2 widthNegativeHeightStep = vec2(texelWidth, -texelHeight); - - textureCoordinate = inputTextureCoordinate.xy; - leftTextureCoordinate = inputTextureCoordinate.xy - widthStep; - rightTextureCoordinate = inputTextureCoordinate.xy + widthStep; - - topTextureCoordinate = inputTextureCoordinate.xy - heightStep; - topLeftTextureCoordinate = inputTextureCoordinate.xy - widthHeightStep; - topRightTextureCoordinate = inputTextureCoordinate.xy + widthNegativeHeightStep; - - bottomTextureCoordinate = inputTextureCoordinate.xy + heightStep; - bottomLeftTextureCoordinate = inputTextureCoordinate.xy - widthNegativeHeightStep; - bottomRightTextureCoordinate = inputTextureCoordinate.xy + widthHeightStep; - } -); - - -@implementation GPUImage3x3TextureSamplingFilter - -@synthesize texelWidth = _texelWidth; -@synthesize texelHeight = _texelHeight; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)initWithVertexShaderFromString:(NSString *)vertexShaderString fragmentShaderFromString:(NSString *)fragmentShaderString; -{ - if (!(self = [super initWithVertexShaderFromString:vertexShaderString fragmentShaderFromString:fragmentShaderString])) - { - return nil; - } - - texelWidthUniform = [filterProgram uniformIndex:@"texelWidth"]; - texelHeightUniform = [filterProgram uniformIndex:@"texelHeight"]; - - return self; -} - -- (id)initWithFragmentShaderFromString:(NSString *)fragmentShaderString; -{ - if (!(self = [self initWithVertexShaderFromString:kGPUImageNearbyTexelSamplingVertexShaderString fragmentShaderFromString:fragmentShaderString])) - { - return nil; - } - - return self; -} - -- (void)setupFilterForSize:(CGSize)filterFrameSize; -{ - if (!hasOverriddenImageSizeFactor) - { - _texelWidth = 1.0 / filterFrameSize.width; - _texelHeight = 1.0 / filterFrameSize.height; - - runSynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext setActiveShaderProgram:filterProgram]; - if (GPUImageRotationSwapsWidthAndHeight(inputRotation)) - { - glUniform1f(texelWidthUniform, _texelHeight); - glUniform1f(texelHeightUniform, _texelWidth); - } - else - { - glUniform1f(texelWidthUniform, _texelWidth); - glUniform1f(texelHeightUniform, _texelHeight); - } - }); - } -} - -#pragma mark - -#pragma mark Accessors - -- (void)setTexelWidth:(CGFloat)newValue; -{ - hasOverriddenImageSizeFactor = YES; - _texelWidth = newValue; - - [self setFloat:_texelWidth forUniform:texelWidthUniform program:filterProgram]; -} - -- (void)setTexelHeight:(CGFloat)newValue; -{ - hasOverriddenImageSizeFactor = YES; - _texelHeight = newValue; - - [self setFloat:_texelHeight forUniform:texelHeightUniform program:filterProgram]; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageAdaptiveThresholdFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageAdaptiveThresholdFilter.h deleted file mode 100755 index 3278556..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageAdaptiveThresholdFilter.h +++ /dev/null @@ -1,9 +0,0 @@ -#import "GPUImageFilterGroup.h" - -@interface GPUImageAdaptiveThresholdFilter : GPUImageFilterGroup - -/** A multiplier for the background averaging blur radius in pixels, with a default of 4 - */ -@property(readwrite, nonatomic) CGFloat blurRadiusInPixels; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageAdaptiveThresholdFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageAdaptiveThresholdFilter.m deleted file mode 100755 index 71fa6ab..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageAdaptiveThresholdFilter.m +++ /dev/null @@ -1,100 +0,0 @@ -#import "GPUImageAdaptiveThresholdFilter.h" -#import "GPUImageFilter.h" -#import "GPUImageTwoInputFilter.h" -#import "GPUImageGrayscaleFilter.h" -#import "GPUImageBoxBlurFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageAdaptiveThresholdFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - varying highp vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - highp float blurredInput = texture2D(inputImageTexture, textureCoordinate).r; - highp float localLuminance = texture2D(inputImageTexture2, textureCoordinate2).r; - highp float thresholdResult = step(blurredInput - 0.05, localLuminance); - - gl_FragColor = vec4(vec3(thresholdResult), 1.0); - } -); -#else -NSString *const kGPUImageAdaptiveThresholdFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - float blurredInput = texture2D(inputImageTexture, textureCoordinate).r; - float localLuminance = texture2D(inputImageTexture2, textureCoordinate2).r; - float thresholdResult = step(blurredInput - 0.05, localLuminance); - - gl_FragColor = vec4(vec3(thresholdResult), 1.0); - } -); -#endif - -@interface GPUImageAdaptiveThresholdFilter() -{ - GPUImageBoxBlurFilter *boxBlurFilter; -} -@end - -@implementation GPUImageAdaptiveThresholdFilter - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super init])) - { - return nil; - } - - // First pass: reduce to luminance - GPUImageGrayscaleFilter *luminanceFilter = [[GPUImageGrayscaleFilter alloc] init]; - [self addFilter:luminanceFilter]; - - // Second pass: perform a box blur - boxBlurFilter = [[GPUImageBoxBlurFilter alloc] init]; - [self addFilter:boxBlurFilter]; - - // Third pass: compare the blurred background luminance to the local value - GPUImageFilter *adaptiveThresholdFilter = [[GPUImageTwoInputFilter alloc] initWithFragmentShaderFromString:kGPUImageAdaptiveThresholdFragmentShaderString]; - [self addFilter:adaptiveThresholdFilter]; - - [luminanceFilter addTarget:boxBlurFilter]; - - [boxBlurFilter addTarget:adaptiveThresholdFilter]; - // To prevent double updating of this filter, disable updates from the sharp luminance image side - [luminanceFilter addTarget:adaptiveThresholdFilter]; - - self.initialFilters = [NSArray arrayWithObject:luminanceFilter]; - self.terminalFilter = adaptiveThresholdFilter; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setBlurRadiusInPixels:(CGFloat)newValue; -{ - boxBlurFilter.blurRadiusInPixels = newValue; -} - -- (CGFloat)blurRadiusInPixels; -{ - return boxBlurFilter.blurRadiusInPixels; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageAddBlendFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageAddBlendFilter.h deleted file mode 100644 index b14c60c..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageAddBlendFilter.h +++ /dev/null @@ -1,5 +0,0 @@ -#import "GPUImageTwoInputFilter.h" - -@interface GPUImageAddBlendFilter : GPUImageTwoInputFilter - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageAddBlendFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageAddBlendFilter.m deleted file mode 100644 index c89054a..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageAddBlendFilter.m +++ /dev/null @@ -1,100 +0,0 @@ -#import "GPUImageAddBlendFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageAddBlendFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - varying highp vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - lowp vec4 base = texture2D(inputImageTexture, textureCoordinate); - lowp vec4 overlay = texture2D(inputImageTexture2, textureCoordinate2); - - mediump float r; - if (overlay.r * base.a + base.r * overlay.a >= overlay.a * base.a) { - r = overlay.a * base.a + overlay.r * (1.0 - base.a) + base.r * (1.0 - overlay.a); - } else { - r = overlay.r + base.r; - } - - mediump float g; - if (overlay.g * base.a + base.g * overlay.a >= overlay.a * base.a) { - g = overlay.a * base.a + overlay.g * (1.0 - base.a) + base.g * (1.0 - overlay.a); - } else { - g = overlay.g + base.g; - } - - mediump float b; - if (overlay.b * base.a + base.b * overlay.a >= overlay.a * base.a) { - b = overlay.a * base.a + overlay.b * (1.0 - base.a) + base.b * (1.0 - overlay.a); - } else { - b = overlay.b + base.b; - } - - mediump float a = overlay.a + base.a - overlay.a * base.a; - - gl_FragColor = vec4(r, g, b, a); - } -); -#else -NSString *const kGPUImageAddBlendFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - vec4 base = texture2D(inputImageTexture, textureCoordinate); - vec4 overlay = texture2D(inputImageTexture2, textureCoordinate2); - - float r; - if (overlay.r * base.a + base.r * overlay.a >= overlay.a * base.a) { - r = overlay.a * base.a + overlay.r * (1.0 - base.a) + base.r * (1.0 - overlay.a); - } else { - r = overlay.r + base.r; - } - - float g; - if (overlay.g * base.a + base.g * overlay.a >= overlay.a * base.a) { - g = overlay.a * base.a + overlay.g * (1.0 - base.a) + base.g * (1.0 - overlay.a); - } else { - g = overlay.g + base.g; - } - - float b; - if (overlay.b * base.a + base.b * overlay.a >= overlay.a * base.a) { - b = overlay.a * base.a + overlay.b * (1.0 - base.a) + base.b * (1.0 - overlay.a); - } else { - b = overlay.b + base.b; - } - - float a = overlay.a + base.a - overlay.a * base.a; - - gl_FragColor = vec4(r, g, b, a); - } -); -#endif - - - -@implementation GPUImageAddBlendFilter - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageAddBlendFragmentShaderString])) - { - return nil; - } - - return self; -} - -@end - diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageAlphaBlendFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageAlphaBlendFilter.h deleted file mode 100755 index c4d7575..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageAlphaBlendFilter.h +++ /dev/null @@ -1,11 +0,0 @@ -#import "GPUImageTwoInputFilter.h" - -@interface GPUImageAlphaBlendFilter : GPUImageTwoInputFilter -{ - GLint mixUniform; -} - -// Mix ranges from 0.0 (only image 1) to 1.0 (only image 2), with 1.0 as the normal level -@property(readwrite, nonatomic) CGFloat mix; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageAlphaBlendFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageAlphaBlendFilter.m deleted file mode 100755 index 077df79..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageAlphaBlendFilter.m +++ /dev/null @@ -1,72 +0,0 @@ -#import "GPUImageAlphaBlendFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageAlphaBlendFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - varying highp vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - uniform lowp float mixturePercent; - - void main() - { - lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - lowp vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate2); - - gl_FragColor = vec4(mix(textureColor.rgb, textureColor2.rgb, textureColor2.a * mixturePercent), textureColor.a); - } -); -#else -NSString *const kGPUImageAlphaBlendFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - uniform float mixturePercent; - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate2); - - gl_FragColor = vec4(mix(textureColor.rgb, textureColor2.rgb, textureColor2.a * mixturePercent), textureColor.a); - } -); -#endif - -@implementation GPUImageAlphaBlendFilter - -@synthesize mix = _mix; - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageAlphaBlendFragmentShaderString])) - { - return nil; - } - - mixUniform = [filterProgram uniformIndex:@"mixturePercent"]; - self.mix = 0.5; - - return self; -} - - -#pragma mark - -#pragma mark Accessors - -- (void)setMix:(CGFloat)newValue; -{ - _mix = newValue; - - [self setFloat:_mix forUniform:mixUniform program:filterProgram]; -} - - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageAmatorkaFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageAmatorkaFilter.h deleted file mode 100755 index 1dbe096..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageAmatorkaFilter.h +++ /dev/null @@ -1,17 +0,0 @@ -#import "GPUImageFilterGroup.h" - -@class GPUImagePicture; - -/** A photo filter based on Photoshop action by Amatorka - http://amatorka.deviantart.com/art/Amatorka-Action-2-121069631 - */ - -// Note: If you want to use this effect you have to add lookup_amatorka.png -// from Resources folder to your application bundle. - -@interface GPUImageAmatorkaFilter : GPUImageFilterGroup -{ - GPUImagePicture *lookupImageSource; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageAmatorkaFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageAmatorkaFilter.m deleted file mode 100755 index 1ab3ec4..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageAmatorkaFilter.m +++ /dev/null @@ -1,38 +0,0 @@ -#import "GPUImageAmatorkaFilter.h" -#import "GPUImagePicture.h" -#import "GPUImageLookupFilter.h" - -@implementation GPUImageAmatorkaFilter - -- (id)init; -{ - if (!(self = [super init])) - { - return nil; - } - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - UIImage *image = [UIImage imageNamed:@"lookup_amatorka.png"]; -#else - NSImage *image = [NSImage imageNamed:@"lookup_amatorka.png"]; -#endif - - NSAssert(image, @"To use GPUImageAmatorkaFilter you need to add lookup_amatorka.png from GPUImage/framework/Resources to your application bundle."); - - lookupImageSource = [[GPUImagePicture alloc] initWithImage:image]; - GPUImageLookupFilter *lookupFilter = [[GPUImageLookupFilter alloc] init]; - [self addFilter:lookupFilter]; - - [lookupImageSource addTarget:lookupFilter atTextureLocation:1]; - [lookupImageSource processImage]; - - self.initialFilters = [NSArray arrayWithObjects:lookupFilter, nil]; - self.terminalFilter = lookupFilter; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageAverageColor.h b/Example/Pods/GPUImage/framework/Source/GPUImageAverageColor.h deleted file mode 100644 index e3d957d..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageAverageColor.h +++ /dev/null @@ -1,20 +0,0 @@ -#import "GPUImageFilter.h" - -extern NSString *const kGPUImageColorAveragingVertexShaderString; - -@interface GPUImageAverageColor : GPUImageFilter -{ - GLint texelWidthUniform, texelHeightUniform; - - NSUInteger numberOfStages; - - GLubyte *rawImagePixels; - CGSize finalStageSize; -} - -// This block is called on the completion of color averaging for a frame -@property(nonatomic, copy) void(^colorAverageProcessingFinishedBlock)(CGFloat redComponent, CGFloat greenComponent, CGFloat blueComponent, CGFloat alphaComponent, CMTime frameTime); - -- (void)extractAverageColorAtFrameTime:(CMTime)frameTime; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageAverageColor.m b/Example/Pods/GPUImage/framework/Source/GPUImageAverageColor.m deleted file mode 100644 index a768ecb..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageAverageColor.m +++ /dev/null @@ -1,210 +0,0 @@ -#import "GPUImageAverageColor.h" - -NSString *const kGPUImageColorAveragingVertexShaderString = SHADER_STRING -( - attribute vec4 position; - attribute vec4 inputTextureCoordinate; - - uniform float texelWidth; - uniform float texelHeight; - - varying vec2 upperLeftInputTextureCoordinate; - varying vec2 upperRightInputTextureCoordinate; - varying vec2 lowerLeftInputTextureCoordinate; - varying vec2 lowerRightInputTextureCoordinate; - - void main() - { - gl_Position = position; - - upperLeftInputTextureCoordinate = inputTextureCoordinate.xy + vec2(-texelWidth, -texelHeight); - upperRightInputTextureCoordinate = inputTextureCoordinate.xy + vec2(texelWidth, -texelHeight); - lowerLeftInputTextureCoordinate = inputTextureCoordinate.xy + vec2(-texelWidth, texelHeight); - lowerRightInputTextureCoordinate = inputTextureCoordinate.xy + vec2(texelWidth, texelHeight); - } - ); - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageColorAveragingFragmentShaderString = SHADER_STRING -( - precision highp float; - - uniform sampler2D inputImageTexture; - - varying highp vec2 outputTextureCoordinate; - - varying highp vec2 upperLeftInputTextureCoordinate; - varying highp vec2 upperRightInputTextureCoordinate; - varying highp vec2 lowerLeftInputTextureCoordinate; - varying highp vec2 lowerRightInputTextureCoordinate; - - void main() - { - highp vec4 upperLeftColor = texture2D(inputImageTexture, upperLeftInputTextureCoordinate); - highp vec4 upperRightColor = texture2D(inputImageTexture, upperRightInputTextureCoordinate); - highp vec4 lowerLeftColor = texture2D(inputImageTexture, lowerLeftInputTextureCoordinate); - highp vec4 lowerRightColor = texture2D(inputImageTexture, lowerRightInputTextureCoordinate); - - gl_FragColor = 0.25 * (upperLeftColor + upperRightColor + lowerLeftColor + lowerRightColor); - } -); -#else -NSString *const kGPUImageColorAveragingFragmentShaderString = SHADER_STRING -( - uniform sampler2D inputImageTexture; - - varying vec2 outputTextureCoordinate; - - varying vec2 upperLeftInputTextureCoordinate; - varying vec2 upperRightInputTextureCoordinate; - varying vec2 lowerLeftInputTextureCoordinate; - varying vec2 lowerRightInputTextureCoordinate; - - void main() - { - vec4 upperLeftColor = texture2D(inputImageTexture, upperLeftInputTextureCoordinate); - vec4 upperRightColor = texture2D(inputImageTexture, upperRightInputTextureCoordinate); - vec4 lowerLeftColor = texture2D(inputImageTexture, lowerLeftInputTextureCoordinate); - vec4 lowerRightColor = texture2D(inputImageTexture, lowerRightInputTextureCoordinate); - - gl_FragColor = 0.25 * (upperLeftColor + upperRightColor + lowerLeftColor + lowerRightColor); - } -); -#endif - -@implementation GPUImageAverageColor - -@synthesize colorAverageProcessingFinishedBlock = _colorAverageProcessingFinishedBlock; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithVertexShaderFromString:kGPUImageColorAveragingVertexShaderString fragmentShaderFromString:kGPUImageColorAveragingFragmentShaderString])) - { - return nil; - } - - texelWidthUniform = [filterProgram uniformIndex:@"texelWidth"]; - texelHeightUniform = [filterProgram uniformIndex:@"texelHeight"]; - finalStageSize = CGSizeMake(1.0, 1.0); - - __unsafe_unretained GPUImageAverageColor *weakSelf = self; - [self setFrameProcessingCompletionBlock:^(GPUImageOutput *filter, CMTime frameTime) { - [weakSelf extractAverageColorAtFrameTime:frameTime]; - }]; - - return self; -} - -- (void)dealloc; -{ - if (rawImagePixels != NULL) - { - free(rawImagePixels); - } -} - -#pragma mark - -#pragma mark Managing the display FBOs - -- (void)renderToTextureWithVertices:(const GLfloat *)vertices textureCoordinates:(const GLfloat *)textureCoordinates; -{ - if (self.preventRendering) - { - [firstInputFramebuffer unlock]; - return; - } - - outputFramebuffer = nil; - [GPUImageContext setActiveShaderProgram:filterProgram]; - - glVertexAttribPointer(filterPositionAttribute, 2, GL_FLOAT, 0, 0, vertices); - glVertexAttribPointer(filterTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, textureCoordinates); - - GLuint currentTexture = [firstInputFramebuffer texture]; - - NSUInteger numberOfReductionsInX = floor(log(inputTextureSize.width) / log(4.0)); - NSUInteger numberOfReductionsInY = floor(log(inputTextureSize.height) / log(4.0)); - NSUInteger reductionsToHitSideLimit = MIN(numberOfReductionsInX, numberOfReductionsInY); - for (NSUInteger currentReduction = 0; currentReduction < reductionsToHitSideLimit; currentReduction++) - { - CGSize currentStageSize = CGSizeMake(floor(inputTextureSize.width / pow(4.0, currentReduction + 1.0)), floor(inputTextureSize.height / pow(4.0, currentReduction + 1.0))); - if ( (currentStageSize.height < 2.0) || (currentStageSize.width < 2.0) ) - { - // A really small last stage seems to cause significant errors in the average, so I abort and leave the rest to the CPU at this point - break; - // currentStageSize.height = 2.0; // TODO: Rotate the image to account for this case, which causes FBO construction to fail - } - - [outputFramebuffer unlock]; - outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:currentStageSize textureOptions:self.outputTextureOptions onlyTexture:NO]; - [outputFramebuffer activateFramebuffer]; - - glClearColor(0.0f, 0.0f, 0.0f, 1.0f); - glClear(GL_COLOR_BUFFER_BIT); - - glActiveTexture(GL_TEXTURE2); - glBindTexture(GL_TEXTURE_2D, currentTexture); - - glUniform1i(filterInputTextureUniform, 2); - - glUniform1f(texelWidthUniform, 0.5 / currentStageSize.width); - glUniform1f(texelHeightUniform, 0.5 / currentStageSize.height); - - glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); - - currentTexture = [outputFramebuffer texture]; - finalStageSize = currentStageSize; - } - - [firstInputFramebuffer unlock]; -} - -- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; -{ - inputRotation = kGPUImageNoRotation; -} - -- (void)extractAverageColorAtFrameTime:(CMTime)frameTime; -{ - runSynchronouslyOnVideoProcessingQueue(^{ - // we need a normal color texture for averaging the color values - NSAssert(self.outputTextureOptions.internalFormat == GL_RGBA, @"The output texture internal format for this filter must be GL_RGBA."); - NSAssert(self.outputTextureOptions.type == GL_UNSIGNED_BYTE, @"The type of the output texture of this filter must be GL_UNSIGNED_BYTE."); - - NSUInteger totalNumberOfPixels = round(finalStageSize.width * finalStageSize.height); - - if (rawImagePixels == NULL) - { - rawImagePixels = (GLubyte *)malloc(totalNumberOfPixels * 4); - } - - [GPUImageContext useImageProcessingContext]; - [outputFramebuffer activateFramebuffer]; - glReadPixels(0, 0, (int)finalStageSize.width, (int)finalStageSize.height, GL_RGBA, GL_UNSIGNED_BYTE, rawImagePixels); - - NSUInteger redTotal = 0, greenTotal = 0, blueTotal = 0, alphaTotal = 0; - NSUInteger byteIndex = 0; - for (NSUInteger currentPixel = 0; currentPixel < totalNumberOfPixels; currentPixel++) - { - redTotal += rawImagePixels[byteIndex++]; - greenTotal += rawImagePixels[byteIndex++]; - blueTotal += rawImagePixels[byteIndex++]; - alphaTotal += rawImagePixels[byteIndex++]; - } - - CGFloat normalizedRedTotal = (CGFloat)redTotal / (CGFloat)totalNumberOfPixels / 255.0; - CGFloat normalizedGreenTotal = (CGFloat)greenTotal / (CGFloat)totalNumberOfPixels / 255.0; - CGFloat normalizedBlueTotal = (CGFloat)blueTotal / (CGFloat)totalNumberOfPixels / 255.0; - CGFloat normalizedAlphaTotal = (CGFloat)alphaTotal / (CGFloat)totalNumberOfPixels / 255.0; - - if (_colorAverageProcessingFinishedBlock != NULL) - { - _colorAverageProcessingFinishedBlock(normalizedRedTotal, normalizedGreenTotal, normalizedBlueTotal, normalizedAlphaTotal, frameTime); - } - }); -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageAverageLuminanceThresholdFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageAverageLuminanceThresholdFilter.h deleted file mode 100644 index 7f1ae46..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageAverageLuminanceThresholdFilter.h +++ /dev/null @@ -1,8 +0,0 @@ -#import "GPUImageFilterGroup.h" - -@interface GPUImageAverageLuminanceThresholdFilter : GPUImageFilterGroup - -// This is multiplied by the continually calculated average image luminosity to arrive at the final threshold. Default is 1.0. -@property(readwrite, nonatomic) CGFloat thresholdMultiplier; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageAverageLuminanceThresholdFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageAverageLuminanceThresholdFilter.m deleted file mode 100644 index eb2796f..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageAverageLuminanceThresholdFilter.m +++ /dev/null @@ -1,47 +0,0 @@ -#import "GPUImageAverageLuminanceThresholdFilter.h" -#import "GPUImageLuminosity.h" -#import "GPUImageLuminanceThresholdFilter.h" - -@interface GPUImageAverageLuminanceThresholdFilter() -{ - GPUImageLuminosity *luminosityFilter; - GPUImageLuminanceThresholdFilter *luminanceThresholdFilter; -} -@end - -@implementation GPUImageAverageLuminanceThresholdFilter - -@synthesize thresholdMultiplier = _thresholdMultiplier; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super init])) - { - return nil; - } - - self.thresholdMultiplier = 1.0; - - luminosityFilter = [[GPUImageLuminosity alloc] init]; - [self addFilter:luminosityFilter]; - - luminanceThresholdFilter = [[GPUImageLuminanceThresholdFilter alloc] init]; - [self addFilter:luminanceThresholdFilter]; - - __unsafe_unretained GPUImageAverageLuminanceThresholdFilter *weakSelf = self; - __unsafe_unretained GPUImageLuminanceThresholdFilter *weakThreshold = luminanceThresholdFilter; - - [luminosityFilter setLuminosityProcessingFinishedBlock:^(CGFloat luminosity, CMTime frameTime) { - weakThreshold.threshold = luminosity * weakSelf.thresholdMultiplier; - }]; - - self.initialFilters = [NSArray arrayWithObjects:luminosityFilter, luminanceThresholdFilter, nil]; - self.terminalFilter = luminanceThresholdFilter; - - return self; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageBilateralFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageBilateralFilter.h deleted file mode 100644 index 6b736cc..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageBilateralFilter.h +++ /dev/null @@ -1,10 +0,0 @@ -#import "GPUImageGaussianBlurFilter.h" - -@interface GPUImageBilateralFilter : GPUImageGaussianBlurFilter -{ - CGFloat firstDistanceNormalizationFactorUniform; - CGFloat secondDistanceNormalizationFactorUniform; -} -// A normalization factor for the distance between central color and sample color. -@property(nonatomic, readwrite) CGFloat distanceNormalizationFactor; -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageBilateralFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageBilateralFilter.m deleted file mode 100644 index c2a8c86..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageBilateralFilter.m +++ /dev/null @@ -1,231 +0,0 @@ -#import "GPUImageBilateralFilter.h" - -NSString *const kGPUImageBilateralBlurVertexShaderString = SHADER_STRING -( - attribute vec4 position; - attribute vec4 inputTextureCoordinate; - - const int GAUSSIAN_SAMPLES = 9; - - uniform float texelWidthOffset; - uniform float texelHeightOffset; - - varying vec2 textureCoordinate; - varying vec2 blurCoordinates[GAUSSIAN_SAMPLES]; - - void main() - { - gl_Position = position; - textureCoordinate = inputTextureCoordinate.xy; - - // Calculate the positions for the blur - int multiplier = 0; - vec2 blurStep; - vec2 singleStepOffset = vec2(texelWidthOffset, texelHeightOffset); - - for (int i = 0; i < GAUSSIAN_SAMPLES; i++) - { - multiplier = (i - ((GAUSSIAN_SAMPLES - 1) / 2)); - // Blur in x (horizontal) - blurStep = float(multiplier) * singleStepOffset; - blurCoordinates[i] = inputTextureCoordinate.xy + blurStep; - } - } -); - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageBilateralFilterFragmentShaderString = SHADER_STRING -( - uniform sampler2D inputImageTexture; - - const lowp int GAUSSIAN_SAMPLES = 9; - - varying highp vec2 textureCoordinate; - varying highp vec2 blurCoordinates[GAUSSIAN_SAMPLES]; - - uniform mediump float distanceNormalizationFactor; - - void main() - { - lowp vec4 centralColor; - lowp float gaussianWeightTotal; - lowp vec4 sum; - lowp vec4 sampleColor; - lowp float distanceFromCentralColor; - lowp float gaussianWeight; - - centralColor = texture2D(inputImageTexture, blurCoordinates[4]); - gaussianWeightTotal = 0.18; - sum = centralColor * 0.18; - - sampleColor = texture2D(inputImageTexture, blurCoordinates[0]); - distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0); - gaussianWeight = 0.05 * (1.0 - distanceFromCentralColor); - gaussianWeightTotal += gaussianWeight; - sum += sampleColor * gaussianWeight; - - sampleColor = texture2D(inputImageTexture, blurCoordinates[1]); - distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0); - gaussianWeight = 0.09 * (1.0 - distanceFromCentralColor); - gaussianWeightTotal += gaussianWeight; - sum += sampleColor * gaussianWeight; - - sampleColor = texture2D(inputImageTexture, blurCoordinates[2]); - distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0); - gaussianWeight = 0.12 * (1.0 - distanceFromCentralColor); - gaussianWeightTotal += gaussianWeight; - sum += sampleColor * gaussianWeight; - - sampleColor = texture2D(inputImageTexture, blurCoordinates[3]); - distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0); - gaussianWeight = 0.15 * (1.0 - distanceFromCentralColor); - gaussianWeightTotal += gaussianWeight; - sum += sampleColor * gaussianWeight; - - sampleColor = texture2D(inputImageTexture, blurCoordinates[5]); - distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0); - gaussianWeight = 0.15 * (1.0 - distanceFromCentralColor); - gaussianWeightTotal += gaussianWeight; - sum += sampleColor * gaussianWeight; - - sampleColor = texture2D(inputImageTexture, blurCoordinates[6]); - distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0); - gaussianWeight = 0.12 * (1.0 - distanceFromCentralColor); - gaussianWeightTotal += gaussianWeight; - sum += sampleColor * gaussianWeight; - - sampleColor = texture2D(inputImageTexture, blurCoordinates[7]); - distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0); - gaussianWeight = 0.09 * (1.0 - distanceFromCentralColor); - gaussianWeightTotal += gaussianWeight; - sum += sampleColor * gaussianWeight; - - sampleColor = texture2D(inputImageTexture, blurCoordinates[8]); - distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0); - gaussianWeight = 0.05 * (1.0 - distanceFromCentralColor); - gaussianWeightTotal += gaussianWeight; - sum += sampleColor * gaussianWeight; - - gl_FragColor = sum / gaussianWeightTotal; - } -); -#else -NSString *const kGPUImageBilateralFilterFragmentShaderString = SHADER_STRING -( - uniform sampler2D inputImageTexture; - - const int GAUSSIAN_SAMPLES = 9; - - varying vec2 textureCoordinate; - varying vec2 blurCoordinates[GAUSSIAN_SAMPLES]; - - uniform float distanceNormalizationFactor; - - void main() - { - vec4 centralColor; - float gaussianWeightTotal; - vec4 sum; - vec4 sampleColor; - float distanceFromCentralColor; - float gaussianWeight; - - centralColor = texture2D(inputImageTexture, blurCoordinates[4]); - gaussianWeightTotal = 0.18; - sum = centralColor * 0.18; - - sampleColor = texture2D(inputImageTexture, blurCoordinates[0]); - distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0); - gaussianWeight = 0.05 * (1.0 - distanceFromCentralColor); - gaussianWeightTotal += gaussianWeight; - sum += sampleColor * gaussianWeight; - - sampleColor = texture2D(inputImageTexture, blurCoordinates[1]); - distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0); - gaussianWeight = 0.09 * (1.0 - distanceFromCentralColor); - gaussianWeightTotal += gaussianWeight; - sum += sampleColor * gaussianWeight; - - sampleColor = texture2D(inputImageTexture, blurCoordinates[2]); - distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0); - gaussianWeight = 0.12 * (1.0 - distanceFromCentralColor); - gaussianWeightTotal += gaussianWeight; - sum += sampleColor * gaussianWeight; - - sampleColor = texture2D(inputImageTexture, blurCoordinates[3]); - distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0); - gaussianWeight = 0.15 * (1.0 - distanceFromCentralColor); - gaussianWeightTotal += gaussianWeight; - sum += sampleColor * gaussianWeight; - - sampleColor = texture2D(inputImageTexture, blurCoordinates[5]); - distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0); - gaussianWeight = 0.15 * (1.0 - distanceFromCentralColor); - gaussianWeightTotal += gaussianWeight; - sum += sampleColor * gaussianWeight; - - sampleColor = texture2D(inputImageTexture, blurCoordinates[6]); - distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0); - gaussianWeight = 0.12 * (1.0 - distanceFromCentralColor); - gaussianWeightTotal += gaussianWeight; - sum += sampleColor * gaussianWeight; - - sampleColor = texture2D(inputImageTexture, blurCoordinates[7]); - distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0); - gaussianWeight = 0.09 * (1.0 - distanceFromCentralColor); - gaussianWeightTotal += gaussianWeight; - sum += sampleColor * gaussianWeight; - - sampleColor = texture2D(inputImageTexture, blurCoordinates[8]); - distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0); - gaussianWeight = 0.05 * (1.0 - distanceFromCentralColor); - gaussianWeightTotal += gaussianWeight; - sum += sampleColor * gaussianWeight; - - gl_FragColor = sum / gaussianWeightTotal; - } -); -#endif - -@implementation GPUImageBilateralFilter - -@synthesize distanceNormalizationFactor = _distanceNormalizationFactor; - -- (id)init; -{ - - if (!(self = [super initWithFirstStageVertexShaderFromString:kGPUImageBilateralBlurVertexShaderString - firstStageFragmentShaderFromString:kGPUImageBilateralFilterFragmentShaderString - secondStageVertexShaderFromString:kGPUImageBilateralBlurVertexShaderString - secondStageFragmentShaderFromString:kGPUImageBilateralFilterFragmentShaderString])) { - return nil; - } - - firstDistanceNormalizationFactorUniform = [filterProgram uniformIndex:@"distanceNormalizationFactor"]; - secondDistanceNormalizationFactorUniform = [filterProgram uniformIndex:@"distanceNormalizationFactor"]; - - self.texelSpacingMultiplier = 4.0; - self.distanceNormalizationFactor = 8.0; - - - return self; -} - - -#pragma mark - -#pragma mark Accessors - -- (void)setDistanceNormalizationFactor:(CGFloat)newValue -{ - _distanceNormalizationFactor = newValue; - - [self setFloat:newValue - forUniform:firstDistanceNormalizationFactorUniform - program:filterProgram]; - - [self setFloat:newValue - forUniform:secondDistanceNormalizationFactorUniform - program:secondFilterProgram]; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageBoxBlurFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageBoxBlurFilter.h deleted file mode 100755 index 3fd880b..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageBoxBlurFilter.h +++ /dev/null @@ -1,7 +0,0 @@ -#import "GPUImageGaussianBlurFilter.h" - -/** A hardware-accelerated box blur of an image - */ -@interface GPUImageBoxBlurFilter : GPUImageGaussianBlurFilter - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageBoxBlurFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageBoxBlurFilter.m deleted file mode 100755 index 5a49385..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageBoxBlurFilter.m +++ /dev/null @@ -1,178 +0,0 @@ -#import "GPUImageBoxBlurFilter.h" - - -@implementation GPUImageBoxBlurFilter - -+ (NSString *)vertexShaderForOptimizedBlurOfRadius:(NSUInteger)blurRadius sigma:(CGFloat)sigma; -{ - if (blurRadius < 1) - { - return kGPUImageVertexShaderString; - } - - // From these weights we calculate the offsets to read interpolated values from - NSUInteger numberOfOptimizedOffsets = MIN(blurRadius / 2 + (blurRadius % 2), 7); - - NSMutableString *shaderString = [[NSMutableString alloc] init]; - // Header - [shaderString appendFormat:@"\ - attribute vec4 position;\n\ - attribute vec4 inputTextureCoordinate;\n\ - \n\ - uniform float texelWidthOffset;\n\ - uniform float texelHeightOffset;\n\ - \n\ - varying vec2 blurCoordinates[%lu];\n\ - \n\ - void main()\n\ - {\n\ - gl_Position = position;\n\ - \n\ - vec2 singleStepOffset = vec2(texelWidthOffset, texelHeightOffset);\n", (unsigned long)(1 + (numberOfOptimizedOffsets * 2))]; - - // Inner offset loop - [shaderString appendString:@"blurCoordinates[0] = inputTextureCoordinate.xy;\n"]; - for (NSUInteger currentOptimizedOffset = 0; currentOptimizedOffset < numberOfOptimizedOffsets; currentOptimizedOffset++) - { - GLfloat optimizedOffset = (GLfloat)(currentOptimizedOffset * 2) + 1.5; - - [shaderString appendFormat:@"\ - blurCoordinates[%lu] = inputTextureCoordinate.xy + singleStepOffset * %f;\n\ - blurCoordinates[%lu] = inputTextureCoordinate.xy - singleStepOffset * %f;\n", (unsigned long)((currentOptimizedOffset * 2) + 1), optimizedOffset, (unsigned long)((currentOptimizedOffset * 2) + 2), optimizedOffset]; - } - - // Footer - [shaderString appendString:@"}\n"]; - - return shaderString; -} - -+ (NSString *)fragmentShaderForOptimizedBlurOfRadius:(NSUInteger)blurRadius sigma:(CGFloat)sigma; -{ - if (blurRadius < 1) - { - return kGPUImagePassthroughFragmentShaderString; - } - - NSUInteger numberOfOptimizedOffsets = MIN(blurRadius / 2 + (blurRadius % 2), 7); - NSUInteger trueNumberOfOptimizedOffsets = blurRadius / 2 + (blurRadius % 2); - - NSMutableString *shaderString = [[NSMutableString alloc] init]; - - // Header -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - [shaderString appendFormat:@"\ - uniform sampler2D inputImageTexture;\n\ - uniform highp float texelWidthOffset;\n\ - uniform highp float texelHeightOffset;\n\ - \n\ - varying highp vec2 blurCoordinates[%lu];\n\ - \n\ - void main()\n\ - {\n\ - lowp vec4 sum = vec4(0.0);\n", (unsigned long)(1 + (numberOfOptimizedOffsets * 2)) ]; -#else - [shaderString appendFormat:@"\ - uniform sampler2D inputImageTexture;\n\ - uniform float texelWidthOffset;\n\ - uniform float texelHeightOffset;\n\ - \n\ - varying vec2 blurCoordinates[%lu];\n\ - \n\ - void main()\n\ - {\n\ - vec4 sum = vec4(0.0);\n", 1 + (numberOfOptimizedOffsets * 2) ]; -#endif - - GLfloat boxWeight = 1.0 / (GLfloat)((blurRadius * 2) + 1); - - // Inner texture loop - [shaderString appendFormat:@"sum += texture2D(inputImageTexture, blurCoordinates[0]) * %f;\n", boxWeight]; - - for (NSUInteger currentBlurCoordinateIndex = 0; currentBlurCoordinateIndex < numberOfOptimizedOffsets; currentBlurCoordinateIndex++) - { - [shaderString appendFormat:@"sum += texture2D(inputImageTexture, blurCoordinates[%lu]) * %f;\n", (unsigned long)((currentBlurCoordinateIndex * 2) + 1), boxWeight * 2.0]; - [shaderString appendFormat:@"sum += texture2D(inputImageTexture, blurCoordinates[%lu]) * %f;\n", (unsigned long)((currentBlurCoordinateIndex * 2) + 2), boxWeight * 2.0]; - } - - // If the number of required samples exceeds the amount we can pass in via varyings, we have to do dependent texture reads in the fragment shader - if (trueNumberOfOptimizedOffsets > numberOfOptimizedOffsets) - { -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - [shaderString appendString:@"highp vec2 singleStepOffset = vec2(texelWidthOffset, texelHeightOffset);\n"]; -#else - [shaderString appendString:@"vec2 singleStepOffset = vec2(texelWidthOffset, texelHeightOffset);\n"]; -#endif - - for (NSUInteger currentOverlowTextureRead = numberOfOptimizedOffsets; currentOverlowTextureRead < trueNumberOfOptimizedOffsets; currentOverlowTextureRead++) - { - GLfloat optimizedOffset = (GLfloat)(currentOverlowTextureRead * 2) + 1.5; - - [shaderString appendFormat:@"sum += texture2D(inputImageTexture, blurCoordinates[0] + singleStepOffset * %f) * %f;\n", optimizedOffset, boxWeight * 2.0]; - [shaderString appendFormat:@"sum += texture2D(inputImageTexture, blurCoordinates[0] - singleStepOffset * %f) * %f;\n", optimizedOffset, boxWeight * 2.0]; - } - } - - // Footer - [shaderString appendString:@"\ - gl_FragColor = sum;\n\ - }\n"]; - - return shaderString; -} - -- (void)setupFilterForSize:(CGSize)filterFrameSize; -{ - [super setupFilterForSize:filterFrameSize]; - - if (shouldResizeBlurRadiusWithImageSize == YES) - { - - } -} - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - // NSString *currentGaussianBlurVertexShader = [GPUImageGaussianBlurFilter vertexShaderForStandardGaussianOfRadius:4 sigma:2.0]; - // NSString *currentGaussianBlurFragmentShader = [GPUImageGaussianBlurFilter fragmentShaderForStandardGaussianOfRadius:4 sigma:2.0]; - - NSString *currentBoxBlurVertexShader = [[self class] vertexShaderForOptimizedBlurOfRadius:4 sigma:0.0]; - NSString *currentBoxBlurFragmentShader = [[self class] fragmentShaderForOptimizedBlurOfRadius:4 sigma:0.0]; - - if (!(self = [super initWithFirstStageVertexShaderFromString:currentBoxBlurVertexShader firstStageFragmentShaderFromString:currentBoxBlurFragmentShader secondStageVertexShaderFromString:currentBoxBlurVertexShader secondStageFragmentShaderFromString:currentBoxBlurFragmentShader])) - { - return nil; - } - - _blurRadiusInPixels = 4.0; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setBlurRadiusInPixels:(CGFloat)newValue; -{ - CGFloat newBlurRadius = round(round(newValue / 2.0) * 2.0); // For now, only do even radii - - if (newBlurRadius != _blurRadiusInPixels) - { - _blurRadiusInPixels = newBlurRadius; - - NSString *newGaussianBlurVertexShader = [[self class] vertexShaderForOptimizedBlurOfRadius:_blurRadiusInPixels sigma:0.0]; - NSString *newGaussianBlurFragmentShader = [[self class] fragmentShaderForOptimizedBlurOfRadius:_blurRadiusInPixels sigma:0.0]; - - // NSLog(@"Optimized vertex shader: \n%@", newGaussianBlurVertexShader); - // NSLog(@"Optimized fragment shader: \n%@", newGaussianBlurFragmentShader); - // - [self switchToVertexShader:newGaussianBlurVertexShader fragmentShader:newGaussianBlurFragmentShader]; - } - shouldResizeBlurRadiusWithImageSize = NO; -} - -@end - diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageBrightnessFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageBrightnessFilter.h deleted file mode 100755 index 046473b..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageBrightnessFilter.h +++ /dev/null @@ -1,11 +0,0 @@ -#import "GPUImageFilter.h" - -@interface GPUImageBrightnessFilter : GPUImageFilter -{ - GLint brightnessUniform; -} - -// Brightness ranges from -1.0 to 1.0, with 0.0 as the normal level -@property(readwrite, nonatomic) CGFloat brightness; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageBrightnessFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageBrightnessFilter.m deleted file mode 100755 index 7e526d8..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageBrightnessFilter.m +++ /dev/null @@ -1,66 +0,0 @@ -#import "GPUImageBrightnessFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageBrightnessFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform lowp float brightness; - - void main() - { - lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - - gl_FragColor = vec4((textureColor.rgb + vec3(brightness)), textureColor.w); - } -); -#else -NSString *const kGPUImageBrightnessFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform float brightness; - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - - gl_FragColor = vec4((textureColor.rgb + vec3(brightness)), textureColor.w); - } - ); -#endif - -@implementation GPUImageBrightnessFilter - -@synthesize brightness = _brightness; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageBrightnessFragmentShaderString])) - { - return nil; - } - - brightnessUniform = [filterProgram uniformIndex:@"brightness"]; - self.brightness = 0.0; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setBrightness:(CGFloat)newValue; -{ - _brightness = newValue; - - [self setFloat:_brightness forUniform:brightnessUniform program:filterProgram]; -} - -@end - diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageBuffer.h b/Example/Pods/GPUImage/framework/Source/GPUImageBuffer.h deleted file mode 100644 index caf09c8..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageBuffer.h +++ /dev/null @@ -1,10 +0,0 @@ -#import "GPUImageFilter.h" - -@interface GPUImageBuffer : GPUImageFilter -{ - NSMutableArray *bufferedFramebuffers; -} - -@property(readwrite, nonatomic) NSUInteger bufferSize; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageBuffer.m b/Example/Pods/GPUImage/framework/Source/GPUImageBuffer.m deleted file mode 100644 index c90d020..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageBuffer.m +++ /dev/null @@ -1,112 +0,0 @@ -#import "GPUImageBuffer.h" - -@interface GPUImageBuffer() - -@end - -@implementation GPUImageBuffer - -@synthesize bufferSize = _bufferSize; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [self initWithFragmentShaderFromString:kGPUImagePassthroughFragmentShaderString])) - { - return nil; - } - - bufferedFramebuffers = [[NSMutableArray alloc] init]; -// [bufferedTextures addObject:[NSNumber numberWithInt:outputTexture]]; - _bufferSize = 1; - - return self; -} - -- (void)dealloc -{ - for (GPUImageFramebuffer *currentFramebuffer in bufferedFramebuffers) - { - [currentFramebuffer unlock]; - } -} - -#pragma mark - -#pragma mark GPUImageInput - -- (void)newFrameReadyAtTime:(CMTime)frameTime atIndex:(NSInteger)textureIndex; -{ - if ([bufferedFramebuffers count] >= _bufferSize) - { - outputFramebuffer = [bufferedFramebuffers objectAtIndex:0]; - [bufferedFramebuffers removeObjectAtIndex:0]; - } - else - { - // Nothing yet in the buffer, so don't process further until the buffer is full - outputFramebuffer = firstInputFramebuffer; - [firstInputFramebuffer lock]; - } - - [bufferedFramebuffers addObject:firstInputFramebuffer]; - - // Need to pass along rotation information, as we're just holding on to buffered framebuffers and not rotating them ourselves - for (id currentTarget in targets) - { - if (currentTarget != self.targetToIgnoreForUpdates) - { - NSInteger indexOfObject = [targets indexOfObject:currentTarget]; - NSInteger textureIndex = [[targetTextureIndices objectAtIndex:indexOfObject] integerValue]; - - [currentTarget setInputRotation:inputRotation atIndex:textureIndex]; - } - } - - // Let the downstream video elements see the previous frame from the buffer before rendering a new one into place - [self informTargetsAboutNewFrameAtTime:frameTime]; - -// [self renderToTextureWithVertices:imageVertices textureCoordinates:[[self class] textureCoordinatesForRotation:inputRotation]]; -} - -- (void)renderToTextureWithVertices:(const GLfloat *)vertices textureCoordinates:(const GLfloat *)textureCoordinates; -{ - // No need to render to another texture anymore, since we'll be hanging on to the textures in our buffer -} - -#pragma mark - -#pragma mark Accessors - -- (void)setBufferSize:(NSUInteger)newValue; -{ - if ( (newValue == _bufferSize) || (newValue < 1) ) - { - return; - } - - if (newValue > _bufferSize) - { - NSUInteger texturesToAdd = newValue - _bufferSize; - for (NSUInteger currentTextureIndex = 0; currentTextureIndex < texturesToAdd; currentTextureIndex++) - { - // TODO: Deal with the growth of the size of the buffer by rotating framebuffers, no textures - } - } - else - { - NSUInteger texturesToRemove = _bufferSize - newValue; - for (NSUInteger currentTextureIndex = 0; currentTextureIndex < texturesToRemove; currentTextureIndex++) - { - GPUImageFramebuffer *lastFramebuffer = [bufferedFramebuffers lastObject]; - [bufferedFramebuffers removeObjectAtIndex:([bufferedFramebuffers count] - 1)]; - - [lastFramebuffer unlock]; - lastFramebuffer = nil; - } - } - - _bufferSize = newValue; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageBulgeDistortionFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageBulgeDistortionFilter.h deleted file mode 100755 index d416e53..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageBulgeDistortionFilter.h +++ /dev/null @@ -1,16 +0,0 @@ -#import "GPUImageFilter.h" - -/// Creates a bulge distortion on the image -@interface GPUImageBulgeDistortionFilter : GPUImageFilter -{ - GLint aspectRatioUniform, radiusUniform, centerUniform, scaleUniform; -} - -/// The center about which to apply the distortion, with a default of (0.5, 0.5) -@property(readwrite, nonatomic) CGPoint center; -/// The radius of the distortion, ranging from 0.0 to 1.0, with a default of 0.25 -@property(readwrite, nonatomic) CGFloat radius; -/// The amount of distortion to apply, from -1.0 to 1.0, with a default of 0.5 -@property(readwrite, nonatomic) CGFloat scale; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageBulgeDistortionFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageBulgeDistortionFilter.m deleted file mode 100755 index 1f778ad..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageBulgeDistortionFilter.m +++ /dev/null @@ -1,174 +0,0 @@ -#import "GPUImageBulgeDistortionFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageBulgeDistortionFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform highp float aspectRatio; - uniform highp vec2 center; - uniform highp float radius; - uniform highp float scale; - - void main() - { - highp vec2 textureCoordinateToUse = vec2(textureCoordinate.x, (textureCoordinate.y * aspectRatio + 0.5 - 0.5 * aspectRatio)); - highp float dist = distance(center, textureCoordinateToUse); - textureCoordinateToUse = textureCoordinate; - - if (dist < radius) - { - textureCoordinateToUse -= center; - highp float percent = 1.0 - ((radius - dist) / radius) * scale; - percent = percent * percent; - - textureCoordinateToUse = textureCoordinateToUse * percent; - textureCoordinateToUse += center; - } - - gl_FragColor = texture2D(inputImageTexture, textureCoordinateToUse ); - } -); -#else -NSString *const kGPUImageBulgeDistortionFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform float aspectRatio; - uniform vec2 center; - uniform float radius; - uniform float scale; - - void main() - { - vec2 textureCoordinateToUse = vec2(textureCoordinate.x, (textureCoordinate.y * aspectRatio + 0.5 - 0.5 * aspectRatio)); - float dist = distance(center, textureCoordinateToUse); - textureCoordinateToUse = textureCoordinate; - - if (dist < radius) - { - textureCoordinateToUse -= center; - float percent = 1.0 - ((radius - dist) / radius) * scale; - percent = percent * percent; - - textureCoordinateToUse = textureCoordinateToUse * percent; - textureCoordinateToUse += center; - } - - gl_FragColor = texture2D(inputImageTexture, textureCoordinateToUse ); - } -); -#endif - - -@interface GPUImageBulgeDistortionFilter () - -- (void)adjustAspectRatio; - -@property (readwrite, nonatomic) CGFloat aspectRatio; - -@end - -@implementation GPUImageBulgeDistortionFilter - -@synthesize aspectRatio = _aspectRatio; -@synthesize center = _center; -@synthesize radius = _radius; -@synthesize scale = _scale; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageBulgeDistortionFragmentShaderString])) - { - return nil; - } - - aspectRatioUniform = [filterProgram uniformIndex:@"aspectRatio"]; - radiusUniform = [filterProgram uniformIndex:@"radius"]; - scaleUniform = [filterProgram uniformIndex:@"scale"]; - centerUniform = [filterProgram uniformIndex:@"center"]; - - self.radius = 0.25; - self.scale = 0.5; - self.center = CGPointMake(0.5, 0.5); - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)adjustAspectRatio; -{ - if (GPUImageRotationSwapsWidthAndHeight(inputRotation)) - { - [self setAspectRatio:(inputTextureSize.width / inputTextureSize.height)]; - } - else - { - [self setAspectRatio:(inputTextureSize.height / inputTextureSize.width)]; - } -} - -- (void)forceProcessingAtSize:(CGSize)frameSize; -{ - [super forceProcessingAtSize:frameSize]; - [self adjustAspectRatio]; -} - -- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex; -{ - CGSize oldInputSize = inputTextureSize; - [super setInputSize:newSize atIndex:textureIndex]; - - if ( (!CGSizeEqualToSize(oldInputSize, inputTextureSize)) && (!CGSizeEqualToSize(newSize, CGSizeZero)) ) - { - [self adjustAspectRatio]; - } -} - -- (void)setAspectRatio:(CGFloat)newValue; -{ - _aspectRatio = newValue; - - [self setFloat:_aspectRatio forUniform:aspectRatioUniform program:filterProgram]; -} - -- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; -{ - [super setInputRotation:newInputRotation atIndex:textureIndex]; - [self setCenter:self.center]; - [self adjustAspectRatio]; -} - -- (void)setRadius:(CGFloat)newValue; -{ - _radius = newValue; - - [self setFloat:_radius forUniform:radiusUniform program:filterProgram]; -} - -- (void)setScale:(CGFloat)newValue; -{ - _scale = newValue; - - [self setFloat:_scale forUniform:scaleUniform program:filterProgram]; -} - -- (void)setCenter:(CGPoint)newValue; -{ - _center = newValue; - - CGPoint rotatedPoint = [self rotatedPoint:_center forRotation:inputRotation]; - - [self setPoint:rotatedPoint forUniform:centerUniform program:filterProgram]; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageCGAColorspaceFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageCGAColorspaceFilter.h deleted file mode 100755 index 4f97804..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageCGAColorspaceFilter.h +++ /dev/null @@ -1,5 +0,0 @@ -#import "GPUImageFilter.h" - -@interface GPUImageCGAColorspaceFilter : GPUImageFilter - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageCGAColorspaceFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageCGAColorspaceFilter.m deleted file mode 100755 index eee939a..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageCGAColorspaceFilter.m +++ /dev/null @@ -1,113 +0,0 @@ -// -// GPUImageCGAColorspaceFilter.m -// - -#import "GPUImageCGAColorspaceFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageCGAColorspaceFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - highp vec2 sampleDivisor = vec2(1.0 / 200.0, 1.0 / 320.0); - //highp vec4 colorDivisor = vec4(colorDepth); - - highp vec2 samplePos = textureCoordinate - mod(textureCoordinate, sampleDivisor); - highp vec4 color = texture2D(inputImageTexture, samplePos ); - - //gl_FragColor = texture2D(inputImageTexture, samplePos ); - mediump vec4 colorCyan = vec4(85.0 / 255.0, 1.0, 1.0, 1.0); - mediump vec4 colorMagenta = vec4(1.0, 85.0 / 255.0, 1.0, 1.0); - mediump vec4 colorWhite = vec4(1.0, 1.0, 1.0, 1.0); - mediump vec4 colorBlack = vec4(0.0, 0.0, 0.0, 1.0); - - mediump vec4 endColor; - highp float blackDistance = distance(color, colorBlack); - highp float whiteDistance = distance(color, colorWhite); - highp float magentaDistance = distance(color, colorMagenta); - highp float cyanDistance = distance(color, colorCyan); - - mediump vec4 finalColor; - - highp float colorDistance = min(magentaDistance, cyanDistance); - colorDistance = min(colorDistance, whiteDistance); - colorDistance = min(colorDistance, blackDistance); - - if (colorDistance == blackDistance) { - finalColor = colorBlack; - } else if (colorDistance == whiteDistance) { - finalColor = colorWhite; - } else if (colorDistance == cyanDistance) { - finalColor = colorCyan; - } else { - finalColor = colorMagenta; - } - - gl_FragColor = finalColor; - } -); -#else -NSString *const kGPUImageCGAColorspaceFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - vec2 sampleDivisor = vec2(1.0 / 200.0, 1.0 / 320.0); - //highp vec4 colorDivisor = vec4(colorDepth); - - vec2 samplePos = textureCoordinate - mod(textureCoordinate, sampleDivisor); - vec4 color = texture2D(inputImageTexture, samplePos ); - - //gl_FragColor = texture2D(inputImageTexture, samplePos ); - vec4 colorCyan = vec4(85.0 / 255.0, 1.0, 1.0, 1.0); - vec4 colorMagenta = vec4(1.0, 85.0 / 255.0, 1.0, 1.0); - vec4 colorWhite = vec4(1.0, 1.0, 1.0, 1.0); - vec4 colorBlack = vec4(0.0, 0.0, 0.0, 1.0); - - vec4 endColor; - float blackDistance = distance(color, colorBlack); - float whiteDistance = distance(color, colorWhite); - float magentaDistance = distance(color, colorMagenta); - float cyanDistance = distance(color, colorCyan); - - vec4 finalColor; - - float colorDistance = min(magentaDistance, cyanDistance); - colorDistance = min(colorDistance, whiteDistance); - colorDistance = min(colorDistance, blackDistance); - - if (colorDistance == blackDistance) { - finalColor = colorBlack; - } else if (colorDistance == whiteDistance) { - finalColor = colorWhite; - } else if (colorDistance == cyanDistance) { - finalColor = colorCyan; - } else { - finalColor = colorMagenta; - } - - gl_FragColor = finalColor; - } -); -#endif - -@implementation GPUImageCGAColorspaceFilter - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageCGAColorspaceFragmentShaderString])) - { - return nil; - } - - return self; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageCannyEdgeDetectionFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageCannyEdgeDetectionFilter.h deleted file mode 100755 index 53c5850..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageCannyEdgeDetectionFilter.h +++ /dev/null @@ -1,62 +0,0 @@ -#import "GPUImageFilterGroup.h" - -@class GPUImageGrayscaleFilter; -@class GPUImageSingleComponentGaussianBlurFilter; -@class GPUImageDirectionalSobelEdgeDetectionFilter; -@class GPUImageDirectionalNonMaximumSuppressionFilter; -@class GPUImageWeakPixelInclusionFilter; - -/** This applies the edge detection process described by John Canny in - - Canny, J., A Computational Approach To Edge Detection, IEEE Trans. Pattern Analysis and Machine Intelligence, 8(6):679–698, 1986. - - and implemented in OpenGL ES by - - A. Ensor, S. Hall. GPU-based Image Analysis on Mobile Devices. Proceedings of Image and Vision Computing New Zealand 2011. - - It starts with a conversion to luminance, followed by an accelerated 9-hit Gaussian blur. A Sobel operator is applied to obtain the overall - gradient strength in the blurred image, as well as the direction (in texture sampling steps) of the gradient. A non-maximum suppression filter - acts along the direction of the gradient, highlighting strong edges that pass the threshold and completely removing those that fail the lower - threshold. Finally, pixels from in-between these thresholds are either included in edges or rejected based on neighboring pixels. - */ -@interface GPUImageCannyEdgeDetectionFilter : GPUImageFilterGroup -{ - GPUImageGrayscaleFilter *luminanceFilter; - GPUImageSingleComponentGaussianBlurFilter *blurFilter; - GPUImageDirectionalSobelEdgeDetectionFilter *edgeDetectionFilter; - GPUImageDirectionalNonMaximumSuppressionFilter *nonMaximumSuppressionFilter; - GPUImageWeakPixelInclusionFilter *weakPixelInclusionFilter; -} - -/** The image width and height factors tweak the appearance of the edges. - - These parameters affect the visibility of the detected edges - - By default, they match the inverse of the filter size in pixels - */ -@property(readwrite, nonatomic) CGFloat texelWidth; -/** The image width and height factors tweak the appearance of the edges. - - These parameters affect the visibility of the detected edges - - By default, they match the inverse of the filter size in pixels - */ -@property(readwrite, nonatomic) CGFloat texelHeight; - -/** The underlying blur radius for the Gaussian blur. Default is 2.0. - */ -@property (readwrite, nonatomic) CGFloat blurRadiusInPixels; - -/** The underlying blur texel spacing multiplier. Default is 1.0. - */ -@property (readwrite, nonatomic) CGFloat blurTexelSpacingMultiplier; - -/** Any edge with a gradient magnitude above this threshold will pass and show up in the final result. - */ -@property(readwrite, nonatomic) CGFloat upperThreshold; - -/** Any edge with a gradient magnitude below this threshold will fail and be removed from the final result. - */ -@property(readwrite, nonatomic) CGFloat lowerThreshold; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageCannyEdgeDetectionFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageCannyEdgeDetectionFilter.m deleted file mode 100755 index 7327d53..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageCannyEdgeDetectionFilter.m +++ /dev/null @@ -1,125 +0,0 @@ -#import "GPUImageCannyEdgeDetectionFilter.h" - -#import "GPUImageGrayscaleFilter.h" -#import "GPUImageDirectionalSobelEdgeDetectionFilter.h" -#import "GPUImageDirectionalNonMaximumSuppressionFilter.h" -#import "GPUImageWeakPixelInclusionFilter.h" -#import "GPUImageSingleComponentGaussianBlurFilter.h" - -@implementation GPUImageCannyEdgeDetectionFilter - -@synthesize upperThreshold; -@synthesize lowerThreshold; -@synthesize blurRadiusInPixels; -@synthesize blurTexelSpacingMultiplier; -@synthesize texelWidth; -@synthesize texelHeight; - -- (id)init; -{ - if (!(self = [super init])) - { - return nil; - } - - // First pass: convert image to luminance - luminanceFilter = [[GPUImageGrayscaleFilter alloc] init]; - [self addFilter:luminanceFilter]; - - // Second pass: apply a variable Gaussian blur - blurFilter = [[GPUImageSingleComponentGaussianBlurFilter alloc] init]; - [self addFilter:blurFilter]; - - // Third pass: run the Sobel edge detection, with calculated gradient directions, on this blurred image - edgeDetectionFilter = [[GPUImageDirectionalSobelEdgeDetectionFilter alloc] init]; - [self addFilter:edgeDetectionFilter]; - - // Fourth pass: apply non-maximum suppression - nonMaximumSuppressionFilter = [[GPUImageDirectionalNonMaximumSuppressionFilter alloc] init]; - [self addFilter:nonMaximumSuppressionFilter]; - - // Fifth pass: include weak pixels to complete edges - weakPixelInclusionFilter = [[GPUImageWeakPixelInclusionFilter alloc] init]; - [self addFilter:weakPixelInclusionFilter]; - - [luminanceFilter addTarget:blurFilter]; - [blurFilter addTarget:edgeDetectionFilter]; - [edgeDetectionFilter addTarget:nonMaximumSuppressionFilter]; - [nonMaximumSuppressionFilter addTarget:weakPixelInclusionFilter]; - - self.initialFilters = [NSArray arrayWithObject:luminanceFilter]; -// self.terminalFilter = nonMaximumSuppressionFilter; - self.terminalFilter = weakPixelInclusionFilter; - - self.blurRadiusInPixels = 2.0; - self.blurTexelSpacingMultiplier = 1.0; - self.upperThreshold = 0.4; - self.lowerThreshold = 0.1; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setBlurRadiusInPixels:(CGFloat)newValue; -{ - blurFilter.blurRadiusInPixels = newValue; -} - -- (CGFloat)blurRadiusInPixels; -{ - return blurFilter.blurRadiusInPixels; -} - -- (void)setBlurTexelSpacingMultiplier:(CGFloat)newValue; -{ - blurFilter.texelSpacingMultiplier = newValue; -} - -- (CGFloat)blurTexelSpacingMultiplier; -{ - return blurFilter.texelSpacingMultiplier; -} - -- (void)setTexelWidth:(CGFloat)newValue; -{ - edgeDetectionFilter.texelWidth = newValue; -} - -- (CGFloat)texelWidth; -{ - return edgeDetectionFilter.texelWidth; -} - -- (void)setTexelHeight:(CGFloat)newValue; -{ - edgeDetectionFilter.texelHeight = newValue; -} - -- (CGFloat)texelHeight; -{ - return edgeDetectionFilter.texelHeight; -} - -- (void)setUpperThreshold:(CGFloat)newValue; -{ - nonMaximumSuppressionFilter.upperThreshold = newValue; -} - -- (CGFloat)upperThreshold; -{ - return nonMaximumSuppressionFilter.upperThreshold; -} - -- (void)setLowerThreshold:(CGFloat)newValue; -{ - nonMaximumSuppressionFilter.lowerThreshold = newValue; -} - -- (CGFloat)lowerThreshold; -{ - return nonMaximumSuppressionFilter.lowerThreshold; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageChromaKeyBlendFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageChromaKeyBlendFilter.h deleted file mode 100755 index 00a5aed..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageChromaKeyBlendFilter.h +++ /dev/null @@ -1,32 +0,0 @@ -#import "GPUImageTwoInputFilter.h" - -/** Selectively replaces a color in the first image with the second image - */ -@interface GPUImageChromaKeyBlendFilter : GPUImageTwoInputFilter -{ - GLint colorToReplaceUniform, thresholdSensitivityUniform, smoothingUniform; -} - -/** The threshold sensitivity controls how similar pixels need to be colored to be replaced - - The default value is 0.3 - */ -@property(readwrite, nonatomic) CGFloat thresholdSensitivity; - -/** The degree of smoothing controls how gradually similar colors are replaced in the image - - The default value is 0.1 - */ -@property(readwrite, nonatomic) CGFloat smoothing; - -/** The color to be replaced is specified using individual red, green, and blue components (normalized to 1.0). - - The default is green: (0.0, 1.0, 0.0). - - @param redComponent Red component of color to be replaced - @param greenComponent Green component of color to be replaced - @param blueComponent Blue component of color to be replaced - */ -- (void)setColorToReplaceRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageChromaKeyBlendFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageChromaKeyBlendFilter.m deleted file mode 100755 index 4e6b466..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageChromaKeyBlendFilter.m +++ /dev/null @@ -1,117 +0,0 @@ -#import "GPUImageChromaKeyBlendFilter.h" - -// Shader code based on Apple's CIChromaKeyFilter example: https://developer.apple.com/library/mac/#samplecode/CIChromaKeyFilter/Introduction/Intro.html - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageChromaKeyBlendFragmentShaderString = SHADER_STRING -( - precision highp float; - - varying highp vec2 textureCoordinate; - varying highp vec2 textureCoordinate2; - - uniform float thresholdSensitivity; - uniform float smoothing; - uniform vec3 colorToReplace; - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate2); - - float maskY = 0.2989 * colorToReplace.r + 0.5866 * colorToReplace.g + 0.1145 * colorToReplace.b; - float maskCr = 0.7132 * (colorToReplace.r - maskY); - float maskCb = 0.5647 * (colorToReplace.b - maskY); - - float Y = 0.2989 * textureColor.r + 0.5866 * textureColor.g + 0.1145 * textureColor.b; - float Cr = 0.7132 * (textureColor.r - Y); - float Cb = 0.5647 * (textureColor.b - Y); - -// float blendValue = 1.0 - smoothstep(thresholdSensitivity - smoothing, thresholdSensitivity , abs(Cr - maskCr) + abs(Cb - maskCb)); - float blendValue = 1.0 - smoothstep(thresholdSensitivity, thresholdSensitivity + smoothing, distance(vec2(Cr, Cb), vec2(maskCr, maskCb))); - gl_FragColor = mix(textureColor, textureColor2, blendValue); - } -); -#else -NSString *const kGPUImageChromaKeyBlendFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; - - uniform float thresholdSensitivity; - uniform float smoothing; - uniform vec3 colorToReplace; - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate2); - - float maskY = 0.2989 * colorToReplace.r + 0.5866 * colorToReplace.g + 0.1145 * colorToReplace.b; - float maskCr = 0.7132 * (colorToReplace.r - maskY); - float maskCb = 0.5647 * (colorToReplace.b - maskY); - - float Y = 0.2989 * textureColor.r + 0.5866 * textureColor.g + 0.1145 * textureColor.b; - float Cr = 0.7132 * (textureColor.r - Y); - float Cb = 0.5647 * (textureColor.b - Y); - - // float blendValue = 1.0 - smoothstep(thresholdSensitivity - smoothing, thresholdSensitivity , abs(Cr - maskCr) + abs(Cb - maskCb)); - float blendValue = 1.0 - smoothstep(thresholdSensitivity, thresholdSensitivity + smoothing, distance(vec2(Cr, Cb), vec2(maskCr, maskCb))); - gl_FragColor = mix(textureColor, textureColor2, blendValue); - } -); -#endif - -@implementation GPUImageChromaKeyBlendFilter - -@synthesize thresholdSensitivity = _thresholdSensitivity; -@synthesize smoothing = _smoothing; - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageChromaKeyBlendFragmentShaderString])) - { - return nil; - } - - thresholdSensitivityUniform = [filterProgram uniformIndex:@"thresholdSensitivity"]; - smoothingUniform = [filterProgram uniformIndex:@"smoothing"]; - colorToReplaceUniform = [filterProgram uniformIndex:@"colorToReplace"]; - - self.thresholdSensitivity = 0.4; - self.smoothing = 0.1; - [self setColorToReplaceRed:0.0 green:1.0 blue:0.0]; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setColorToReplaceRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent; -{ - GPUVector3 colorToReplace = {redComponent, greenComponent, blueComponent}; - - [self setVec3:colorToReplace forUniform:colorToReplaceUniform program:filterProgram]; -} - -- (void)setThresholdSensitivity:(CGFloat)newValue; -{ - _thresholdSensitivity = newValue; - - [self setFloat:(GLfloat)_thresholdSensitivity forUniform:thresholdSensitivityUniform program:filterProgram]; -} - -- (void)setSmoothing:(CGFloat)newValue; -{ - _smoothing = newValue; - - [self setFloat:(GLfloat)_smoothing forUniform:smoothingUniform program:filterProgram]; -} - -@end - diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageChromaKeyFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageChromaKeyFilter.h deleted file mode 100644 index 5ee7e49..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageChromaKeyFilter.h +++ /dev/null @@ -1,30 +0,0 @@ -#import "GPUImageFilter.h" - -@interface GPUImageChromaKeyFilter : GPUImageFilter -{ - GLint colorToReplaceUniform, thresholdSensitivityUniform, smoothingUniform; -} - -/** The threshold sensitivity controls how similar pixels need to be colored to be replaced - - The default value is 0.3 - */ -@property(readwrite, nonatomic) CGFloat thresholdSensitivity; - -/** The degree of smoothing controls how gradually similar colors are replaced in the image - - The default value is 0.1 - */ -@property(readwrite, nonatomic) CGFloat smoothing; - -/** The color to be replaced is specified using individual red, green, and blue components (normalized to 1.0). - - The default is green: (0.0, 1.0, 0.0). - - @param redComponent Red component of color to be replaced - @param greenComponent Green component of color to be replaced - @param blueComponent Blue component of color to be replaced - */ -- (void)setColorToReplaceRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageChromaKeyFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageChromaKeyFilter.m deleted file mode 100644 index c70ef61..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageChromaKeyFilter.m +++ /dev/null @@ -1,113 +0,0 @@ -#import "GPUImageChromaKeyFilter.h" - -// Shader code based on Apple's CIChromaKeyFilter example: https://developer.apple.com/library/mac/#samplecode/CIChromaKeyFilter/Introduction/Intro.html - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageChromaKeyFragmentShaderString = SHADER_STRING -( - precision highp float; - - varying highp vec2 textureCoordinate; - - uniform float thresholdSensitivity; - uniform float smoothing; - uniform vec3 colorToReplace; - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - - float maskY = 0.2989 * colorToReplace.r + 0.5866 * colorToReplace.g + 0.1145 * colorToReplace.b; - float maskCr = 0.7132 * (colorToReplace.r - maskY); - float maskCb = 0.5647 * (colorToReplace.b - maskY); - - float Y = 0.2989 * textureColor.r + 0.5866 * textureColor.g + 0.1145 * textureColor.b; - float Cr = 0.7132 * (textureColor.r - Y); - float Cb = 0.5647 * (textureColor.b - Y); - - // float blendValue = 1.0 - smoothstep(thresholdSensitivity - smoothing, thresholdSensitivity , abs(Cr - maskCr) + abs(Cb - maskCb)); - float blendValue = smoothstep(thresholdSensitivity, thresholdSensitivity + smoothing, distance(vec2(Cr, Cb), vec2(maskCr, maskCb))); - gl_FragColor = vec4(textureColor.rgb, textureColor.a * blendValue); - } -); -#else -NSString *const kGPUImageChromaKeyFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform float thresholdSensitivity; - uniform float smoothing; - uniform vec3 colorToReplace; - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - - float maskY = 0.2989 * colorToReplace.r + 0.5866 * colorToReplace.g + 0.1145 * colorToReplace.b; - float maskCr = 0.7132 * (colorToReplace.r - maskY); - float maskCb = 0.5647 * (colorToReplace.b - maskY); - - float Y = 0.2989 * textureColor.r + 0.5866 * textureColor.g + 0.1145 * textureColor.b; - float Cr = 0.7132 * (textureColor.r - Y); - float Cb = 0.5647 * (textureColor.b - Y); - - // float blendValue = 1.0 - smoothstep(thresholdSensitivity - smoothing, thresholdSensitivity , abs(Cr - maskCr) + abs(Cb - maskCb)); - float blendValue = smoothstep(thresholdSensitivity, thresholdSensitivity + smoothing, distance(vec2(Cr, Cb), vec2(maskCr, maskCb))); - gl_FragColor = vec4(textureColor.rgb, textureColor.a * blendValue); - } - ); -#endif - -@implementation GPUImageChromaKeyFilter - -@synthesize thresholdSensitivity = _thresholdSensitivity; -@synthesize smoothing = _smoothing; - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageChromaKeyFragmentShaderString])) - { - return nil; - } - - thresholdSensitivityUniform = [filterProgram uniformIndex:@"thresholdSensitivity"]; - smoothingUniform = [filterProgram uniformIndex:@"smoothing"]; - colorToReplaceUniform = [filterProgram uniformIndex:@"colorToReplace"]; - - self.thresholdSensitivity = 0.4; - self.smoothing = 0.1; - [self setColorToReplaceRed:0.0 green:1.0 blue:0.0]; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setColorToReplaceRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent; -{ - GPUVector3 colorToReplace = {redComponent, greenComponent, blueComponent}; - - [self setVec3:colorToReplace forUniform:colorToReplaceUniform program:filterProgram]; -} - -- (void)setThresholdSensitivity:(CGFloat)newValue; -{ - _thresholdSensitivity = newValue; - - [self setFloat:(GLfloat)_thresholdSensitivity forUniform:thresholdSensitivityUniform program:filterProgram]; -} - -- (void)setSmoothing:(CGFloat)newValue; -{ - _smoothing = newValue; - - [self setFloat:(GLfloat)_smoothing forUniform:smoothingUniform program:filterProgram]; -} - - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageClosingFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageClosingFilter.h deleted file mode 100644 index 61e34c4..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageClosingFilter.h +++ /dev/null @@ -1,19 +0,0 @@ -#import "GPUImageFilterGroup.h" - -@class GPUImageErosionFilter; -@class GPUImageDilationFilter; - -// A filter that first performs a dilation on the red channel of an image, followed by an erosion of the same radius. -// This helps to filter out smaller dark elements. - -@interface GPUImageClosingFilter : GPUImageFilterGroup -{ - GPUImageErosionFilter *erosionFilter; - GPUImageDilationFilter *dilationFilter; -} - -@property(readwrite, nonatomic) CGFloat verticalTexelSpacing, horizontalTexelSpacing; - -- (id)initWithRadius:(NSUInteger)radius; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageClosingFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageClosingFilter.m deleted file mode 100644 index 01e9b29..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageClosingFilter.m +++ /dev/null @@ -1,57 +0,0 @@ -#import "GPUImageClosingFilter.h" -#import "GPUImageErosionFilter.h" -#import "GPUImageDilationFilter.h" - -@implementation GPUImageClosingFilter - -@synthesize verticalTexelSpacing = _verticalTexelSpacing; -@synthesize horizontalTexelSpacing = _horizontalTexelSpacing; - -- (id)init; -{ - if (!(self = [self initWithRadius:1])) - { - return nil; - } - - return self; -} - -- (id)initWithRadius:(NSUInteger)radius; -{ - if (!(self = [super init])) - { - return nil; - } - - // First pass: dilation - dilationFilter = [[GPUImageDilationFilter alloc] initWithRadius:radius]; - [self addFilter:dilationFilter]; - - // Second pass: erosion - erosionFilter = [[GPUImageErosionFilter alloc] initWithRadius:radius]; - [self addFilter:erosionFilter]; - - [dilationFilter addTarget:erosionFilter]; - - self.initialFilters = [NSArray arrayWithObjects:dilationFilter, nil]; - self.terminalFilter = erosionFilter; - - return self; -} - -- (void)setVerticalTexelSpacing:(CGFloat)newValue; -{ - _verticalTexelSpacing = newValue; - erosionFilter.verticalTexelSpacing = newValue; - dilationFilter.verticalTexelSpacing = newValue; -} - -- (void)setHorizontalTexelSpacing:(CGFloat)newValue; -{ - _horizontalTexelSpacing = newValue; - erosionFilter.horizontalTexelSpacing = newValue; - dilationFilter.horizontalTexelSpacing = newValue; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageColorBlendFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageColorBlendFilter.h deleted file mode 100644 index 302a16c..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageColorBlendFilter.h +++ /dev/null @@ -1,5 +0,0 @@ -#import "GPUImageTwoInputFilter.h" - -@interface GPUImageColorBlendFilter : GPUImageTwoInputFilter - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageColorBlendFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageColorBlendFilter.m deleted file mode 100644 index ced1cb8..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageColorBlendFilter.m +++ /dev/null @@ -1,113 +0,0 @@ -#import "GPUImageColorBlendFilter.h" - -/** - * Color blend mode based upon pseudo code from the PDF specification. - */ -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageColorBlendFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - varying highp vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - highp float lum(lowp vec3 c) { - return dot(c, vec3(0.3, 0.59, 0.11)); - } - - lowp vec3 clipcolor(lowp vec3 c) { - highp float l = lum(c); - lowp float n = min(min(c.r, c.g), c.b); - lowp float x = max(max(c.r, c.g), c.b); - - if (n < 0.0) { - c.r = l + ((c.r - l) * l) / (l - n); - c.g = l + ((c.g - l) * l) / (l - n); - c.b = l + ((c.b - l) * l) / (l - n); - } - if (x > 1.0) { - c.r = l + ((c.r - l) * (1.0 - l)) / (x - l); - c.g = l + ((c.g - l) * (1.0 - l)) / (x - l); - c.b = l + ((c.b - l) * (1.0 - l)) / (x - l); - } - - return c; - } - - lowp vec3 setlum(lowp vec3 c, highp float l) { - highp float d = l - lum(c); - c = c + vec3(d); - return clipcolor(c); - } - - void main() - { - highp vec4 baseColor = texture2D(inputImageTexture, textureCoordinate); - highp vec4 overlayColor = texture2D(inputImageTexture2, textureCoordinate2); - - gl_FragColor = vec4(baseColor.rgb * (1.0 - overlayColor.a) + setlum(overlayColor.rgb, lum(baseColor.rgb)) * overlayColor.a, baseColor.a); - } -); -#else -NSString *const kGPUImageColorBlendFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - float lum(vec3 c) { - return dot(c, vec3(0.3, 0.59, 0.11)); - } - - vec3 clipcolor(vec3 c) { - float l = lum(c); - float n = min(min(c.r, c.g), c.b); - float x = max(max(c.r, c.g), c.b); - - if (n < 0.0) { - c.r = l + ((c.r - l) * l) / (l - n); - c.g = l + ((c.g - l) * l) / (l - n); - c.b = l + ((c.b - l) * l) / (l - n); - } - if (x > 1.0) { - c.r = l + ((c.r - l) * (1.0 - l)) / (x - l); - c.g = l + ((c.g - l) * (1.0 - l)) / (x - l); - c.b = l + ((c.b - l) * (1.0 - l)) / (x - l); - } - - return c; - } - - vec3 setlum(vec3 c, float l) { - float d = l - lum(c); - c = c + vec3(d); - return clipcolor(c); - } - - void main() - { - vec4 baseColor = texture2D(inputImageTexture, textureCoordinate); - vec4 overlayColor = texture2D(inputImageTexture2, textureCoordinate2); - - gl_FragColor = vec4(baseColor.rgb * (1.0 - overlayColor.a) + setlum(overlayColor.rgb, lum(baseColor.rgb)) * overlayColor.a, baseColor.a); - } -); -#endif - - -@implementation GPUImageColorBlendFilter - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageColorBlendFragmentShaderString])) - { - return nil; - } - - return self; -} - -@end \ No newline at end of file diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageColorBurnBlendFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageColorBurnBlendFilter.h deleted file mode 100755 index 50ebb3f..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageColorBurnBlendFilter.h +++ /dev/null @@ -1,9 +0,0 @@ -#import "GPUImageTwoInputFilter.h" - -/** Applies a color burn blend of two images - */ -@interface GPUImageColorBurnBlendFilter : GPUImageTwoInputFilter -{ -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageColorBurnBlendFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageColorBurnBlendFilter.m deleted file mode 100755 index 5d6ff60..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageColorBurnBlendFilter.m +++ /dev/null @@ -1,52 +0,0 @@ -#import "GPUImageColorBurnBlendFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageColorBurnBlendFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - varying highp vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - mediump vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - mediump vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate2); - mediump vec4 whiteColor = vec4(1.0); - gl_FragColor = whiteColor - (whiteColor - textureColor) / textureColor2; - } -); -#else -NSString *const kGPUImageColorBurnBlendFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate2); - vec4 whiteColor = vec4(1.0); - gl_FragColor = whiteColor - (whiteColor - textureColor) / textureColor2; - } -); -#endif - -@implementation GPUImageColorBurnBlendFilter - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageColorBurnBlendFragmentShaderString])) - { - return nil; - } - - return self; -} - -@end - diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageColorDodgeBlendFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageColorDodgeBlendFilter.h deleted file mode 100755 index 0f541c4..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageColorDodgeBlendFilter.h +++ /dev/null @@ -1,9 +0,0 @@ -#import "GPUImageTwoInputFilter.h" - -/** Applies a color dodge blend of two images - */ -@interface GPUImageColorDodgeBlendFilter : GPUImageTwoInputFilter -{ -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageColorDodgeBlendFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageColorDodgeBlendFilter.m deleted file mode 100755 index 6a38827..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageColorDodgeBlendFilter.m +++ /dev/null @@ -1,75 +0,0 @@ -#import "GPUImageColorDodgeBlendFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageColorDodgeBlendFragmentShaderString = SHADER_STRING -( - - precision mediump float; - - varying highp vec2 textureCoordinate; - varying highp vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - vec4 base = texture2D(inputImageTexture, textureCoordinate); - vec4 overlay = texture2D(inputImageTexture2, textureCoordinate2); - - vec3 baseOverlayAlphaProduct = vec3(overlay.a * base.a); - vec3 rightHandProduct = overlay.rgb * (1.0 - base.a) + base.rgb * (1.0 - overlay.a); - - vec3 firstBlendColor = baseOverlayAlphaProduct + rightHandProduct; - vec3 overlayRGB = clamp((overlay.rgb / clamp(overlay.a, 0.01, 1.0)) * step(0.0, overlay.a), 0.0, 0.99); - - vec3 secondBlendColor = (base.rgb * overlay.a) / (1.0 - overlayRGB) + rightHandProduct; - - vec3 colorChoice = step((overlay.rgb * base.a + base.rgb * overlay.a), baseOverlayAlphaProduct); - - gl_FragColor = vec4(mix(firstBlendColor, secondBlendColor, colorChoice), 1.0); - } -); -#else -NSString *const kGPUImageColorDodgeBlendFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - vec4 base = texture2D(inputImageTexture, textureCoordinate); - vec4 overlay = texture2D(inputImageTexture2, textureCoordinate2); - - vec3 baseOverlayAlphaProduct = vec3(overlay.a * base.a); - vec3 rightHandProduct = overlay.rgb * (1.0 - base.a) + base.rgb * (1.0 - overlay.a); - - vec3 firstBlendColor = baseOverlayAlphaProduct + rightHandProduct; - vec3 overlayRGB = clamp((overlay.rgb / clamp(overlay.a, 0.01, 1.0)) * step(0.0, overlay.a), 0.0, 0.99); - - vec3 secondBlendColor = (base.rgb * overlay.a) / (1.0 - overlayRGB) + rightHandProduct; - - vec3 colorChoice = step((overlay.rgb * base.a + base.rgb * overlay.a), baseOverlayAlphaProduct); - - gl_FragColor = vec4(mix(firstBlendColor, secondBlendColor, colorChoice), 1.0); - } -); -#endif - -@implementation GPUImageColorDodgeBlendFilter - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageColorDodgeBlendFragmentShaderString])) - { - return nil; - } - - return self; -} - -@end - diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageColorInvertFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageColorInvertFilter.h deleted file mode 100755 index aaeec43..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageColorInvertFilter.h +++ /dev/null @@ -1,7 +0,0 @@ -#import "GPUImageFilter.h" - -@interface GPUImageColorInvertFilter : GPUImageFilter -{ -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageColorInvertFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageColorInvertFilter.m deleted file mode 100755 index 0a8798b..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageColorInvertFilter.m +++ /dev/null @@ -1,46 +0,0 @@ -#import "GPUImageColorInvertFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageInvertFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - - gl_FragColor = vec4((1.0 - textureColor.rgb), textureColor.w); - } -); -#else -NSString *const kGPUImageInvertFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - - gl_FragColor = vec4((1.0 - textureColor.rgb), textureColor.w); - } - ); -#endif - -@implementation GPUImageColorInvertFilter - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageInvertFragmentShaderString])) - { - return nil; - } - - return self; -} - -@end - diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageColorMatrixFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageColorMatrixFilter.h deleted file mode 100755 index 7588727..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageColorMatrixFilter.h +++ /dev/null @@ -1,19 +0,0 @@ -#import "GPUImageFilter.h" - -/** Transforms the colors of an image by applying a matrix to them - */ -@interface GPUImageColorMatrixFilter : GPUImageFilter -{ - GLint colorMatrixUniform; - GLint intensityUniform; -} - -/** A 4x4 matrix used to transform each color in an image - */ -@property(readwrite, nonatomic) GPUMatrix4x4 colorMatrix; - -/** The degree to which the new transformed color replaces the original color for each pixel - */ -@property(readwrite, nonatomic) CGFloat intensity; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageColorMatrixFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageColorMatrixFilter.m deleted file mode 100755 index 0e21c7e..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageColorMatrixFilter.m +++ /dev/null @@ -1,87 +0,0 @@ -#import "GPUImageColorMatrixFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageColorMatrixFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform lowp mat4 colorMatrix; - uniform lowp float intensity; - - void main() - { - lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - lowp vec4 outputColor = textureColor * colorMatrix; - - gl_FragColor = (intensity * outputColor) + ((1.0 - intensity) * textureColor); - } -); -#else -NSString *const kGPUImageColorMatrixFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform mat4 colorMatrix; - uniform float intensity; - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - vec4 outputColor = textureColor * colorMatrix; - - gl_FragColor = (intensity * outputColor) + ((1.0 - intensity) * textureColor); - } -); -#endif - -@implementation GPUImageColorMatrixFilter - -@synthesize intensity = _intensity; -@synthesize colorMatrix = _colorMatrix; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageColorMatrixFragmentShaderString])) - { - return nil; - } - - colorMatrixUniform = [filterProgram uniformIndex:@"colorMatrix"]; - intensityUniform = [filterProgram uniformIndex:@"intensity"]; - - self.intensity = 1.f; - self.colorMatrix = (GPUMatrix4x4){ - {1.f, 0.f, 0.f, 0.f}, - {0.f, 1.f, 0.f, 0.f}, - {0.f, 0.f, 1.f, 0.f}, - {0.f, 0.f, 0.f, 1.f} - }; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setIntensity:(CGFloat)newIntensity; -{ - _intensity = newIntensity; - - [self setFloat:_intensity forUniform:intensityUniform program:filterProgram]; -} - -- (void)setColorMatrix:(GPUMatrix4x4)newColorMatrix; -{ - _colorMatrix = newColorMatrix; - - [self setMatrix4f:_colorMatrix forUniform:colorMatrixUniform program:filterProgram]; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageColorPackingFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageColorPackingFilter.h deleted file mode 100644 index c2edca5..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageColorPackingFilter.h +++ /dev/null @@ -1,10 +0,0 @@ -#import "GPUImageFilter.h" - -@interface GPUImageColorPackingFilter : GPUImageFilter -{ - GLint texelWidthUniform, texelHeightUniform; - - CGFloat texelWidth, texelHeight; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageColorPackingFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageColorPackingFilter.m deleted file mode 100644 index 1a087ca..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageColorPackingFilter.m +++ /dev/null @@ -1,139 +0,0 @@ -#import "GPUImageColorPackingFilter.h" - -NSString *const kGPUImageColorPackingVertexShaderString = SHADER_STRING -( - attribute vec4 position; - attribute vec4 inputTextureCoordinate; - - uniform float texelWidth; - uniform float texelHeight; - - varying vec2 upperLeftInputTextureCoordinate; - varying vec2 upperRightInputTextureCoordinate; - varying vec2 lowerLeftInputTextureCoordinate; - varying vec2 lowerRightInputTextureCoordinate; - - void main() - { - gl_Position = position; - - upperLeftInputTextureCoordinate = inputTextureCoordinate.xy + vec2(-texelWidth, -texelHeight); - upperRightInputTextureCoordinate = inputTextureCoordinate.xy + vec2(texelWidth, -texelHeight); - lowerLeftInputTextureCoordinate = inputTextureCoordinate.xy + vec2(-texelWidth, texelHeight); - lowerRightInputTextureCoordinate = inputTextureCoordinate.xy + vec2(texelWidth, texelHeight); - } -); - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageColorPackingFragmentShaderString = SHADER_STRING -( - precision lowp float; - - uniform sampler2D inputImageTexture; - - uniform mediump mat3 convolutionMatrix; - - varying highp vec2 outputTextureCoordinate; - - varying highp vec2 upperLeftInputTextureCoordinate; - varying highp vec2 upperRightInputTextureCoordinate; - varying highp vec2 lowerLeftInputTextureCoordinate; - varying highp vec2 lowerRightInputTextureCoordinate; - - void main() - { - float upperLeftIntensity = texture2D(inputImageTexture, upperLeftInputTextureCoordinate).r; - float upperRightIntensity = texture2D(inputImageTexture, upperRightInputTextureCoordinate).r; - float lowerLeftIntensity = texture2D(inputImageTexture, lowerLeftInputTextureCoordinate).r; - float lowerRightIntensity = texture2D(inputImageTexture, lowerRightInputTextureCoordinate).r; - - gl_FragColor = vec4(upperLeftIntensity, upperRightIntensity, lowerLeftIntensity, lowerRightIntensity); - } -); -#else -NSString *const kGPUImageColorPackingFragmentShaderString = SHADER_STRING -( - uniform sampler2D inputImageTexture; - - uniform mat3 convolutionMatrix; - - varying vec2 outputTextureCoordinate; - - varying vec2 upperLeftInputTextureCoordinate; - varying vec2 upperRightInputTextureCoordinate; - varying vec2 lowerLeftInputTextureCoordinate; - varying vec2 lowerRightInputTextureCoordinate; - - void main() - { - float upperLeftIntensity = texture2D(inputImageTexture, upperLeftInputTextureCoordinate).r; - float upperRightIntensity = texture2D(inputImageTexture, upperRightInputTextureCoordinate).r; - float lowerLeftIntensity = texture2D(inputImageTexture, lowerLeftInputTextureCoordinate).r; - float lowerRightIntensity = texture2D(inputImageTexture, lowerRightInputTextureCoordinate).r; - - gl_FragColor = vec4(upperLeftIntensity, upperRightIntensity, lowerLeftIntensity, lowerRightIntensity); - } -); -#endif - -@implementation GPUImageColorPackingFilter - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithVertexShaderFromString:kGPUImageColorPackingVertexShaderString fragmentShaderFromString:kGPUImageColorPackingFragmentShaderString])) - { - return nil; - } - - texelWidthUniform = [filterProgram uniformIndex:@"texelWidth"]; - texelHeightUniform = [filterProgram uniformIndex:@"texelHeight"]; - - return self; -} - -- (void)setupFilterForSize:(CGSize)filterFrameSize; -{ - texelWidth = 0.5 / inputTextureSize.width; - texelHeight = 0.5 / inputTextureSize.height; - - runSynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext setActiveShaderProgram:filterProgram]; - glUniform1f(texelWidthUniform, texelWidth); - glUniform1f(texelHeightUniform, texelHeight); - }); -} - -#pragma mark - -#pragma mark Managing the display FBOs - -- (CGSize)sizeOfFBO; -{ - CGSize outputSize = [self maximumOutputSize]; - if ( (CGSizeEqualToSize(outputSize, CGSizeZero)) || (inputTextureSize.width < outputSize.width) ) - { - CGSize quarterSize; - quarterSize.width = inputTextureSize.width / 2.0; - quarterSize.height = inputTextureSize.height / 2.0; - return quarterSize; - } - else - { - return outputSize; - } -} - -#pragma mark - -#pragma mark Rendering - -- (CGSize)outputFrameSize; -{ - CGSize quarterSize; - quarterSize.width = inputTextureSize.width / 2.0; - quarterSize.height = inputTextureSize.height / 2.0; - return quarterSize; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageContrastFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageContrastFilter.h deleted file mode 100755 index e09e6dc..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageContrastFilter.h +++ /dev/null @@ -1,14 +0,0 @@ -#import "GPUImageFilter.h" - -/** Adjusts the contrast of the image - */ -@interface GPUImageContrastFilter : GPUImageFilter -{ - GLint contrastUniform; -} - -/** Contrast ranges from 0.0 to 4.0 (max contrast), with 1.0 as the normal level - */ -@property(readwrite, nonatomic) CGFloat contrast; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageContrastFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageContrastFilter.m deleted file mode 100755 index 5ed1e22..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageContrastFilter.m +++ /dev/null @@ -1,66 +0,0 @@ -#import "GPUImageContrastFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageContrastFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform lowp float contrast; - - void main() - { - lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - - gl_FragColor = vec4(((textureColor.rgb - vec3(0.5)) * contrast + vec3(0.5)), textureColor.w); - } -); -#else -NSString *const kGPUImageContrastFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform float contrast; - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - - gl_FragColor = vec4(((textureColor.rgb - vec3(0.5)) * contrast + vec3(0.5)), textureColor.w); - } - ); -#endif - -@implementation GPUImageContrastFilter - -@synthesize contrast = _contrast; - -#pragma mark - -#pragma mark Initialization - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageContrastFragmentShaderString])) - { - return nil; - } - - contrastUniform = [filterProgram uniformIndex:@"contrast"]; - self.contrast = 1.0; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setContrast:(CGFloat)newValue; -{ - _contrast = newValue; - - [self setFloat:_contrast forUniform:contrastUniform program:filterProgram]; -} - -@end - diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageCropFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageCropFilter.h deleted file mode 100755 index 641fb7b..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageCropFilter.h +++ /dev/null @@ -1,14 +0,0 @@ -#import "GPUImageFilter.h" - -@interface GPUImageCropFilter : GPUImageFilter -{ - GLfloat cropTextureCoordinates[8]; -} - -// The crop region is the rectangle within the image to crop. It is normalized to a coordinate space from 0.0 to 1.0, with 0.0, 0.0 being the upper left corner of the image -@property(readwrite, nonatomic) CGRect cropRegion; - -// Initialization and teardown -- (id)initWithCropRegion:(CGRect)newCropRegion; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageCropFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageCropFilter.m deleted file mode 100755 index 22e33c1..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageCropFilter.m +++ /dev/null @@ -1,274 +0,0 @@ -#import "GPUImageCropFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageCropFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - gl_FragColor = texture2D(inputImageTexture, textureCoordinate); - } -); -#else -NSString *const kGPUImageCropFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - gl_FragColor = texture2D(inputImageTexture, textureCoordinate); - } -); -#endif - -@interface GPUImageCropFilter () - -- (void)calculateCropTextureCoordinates; - -@end - -@interface GPUImageCropFilter() -{ - CGSize originallySuppliedInputSize; -} - -@end - -@implementation GPUImageCropFilter - -@synthesize cropRegion = _cropRegion; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)initWithCropRegion:(CGRect)newCropRegion; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageCropFragmentShaderString])) - { - return nil; - } - - self.cropRegion = newCropRegion; - - return self; -} - -- (id)init; -{ - if (!(self = [self initWithCropRegion:CGRectMake(0.0, 0.0, 1.0, 1.0)])) - { - return nil; - } - - return self; -} - -#pragma mark - -#pragma mark Rendering - -- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex; -{ - if (self.preventRendering) - { - return; - } - -// if (overrideInputSize) -// { -// if (CGSizeEqualToSize(forcedMaximumSize, CGSizeZero)) -// { -// return; -// } -// else -// { -// CGRect insetRect = AVMakeRectWithAspectRatioInsideRect(newSize, CGRectMake(0.0, 0.0, forcedMaximumSize.width, forcedMaximumSize.height)); -// inputTextureSize = insetRect.size; -// return; -// } -// } - - CGSize rotatedSize = [self rotatedSize:newSize forIndex:textureIndex]; - originallySuppliedInputSize = rotatedSize; - - CGSize scaledSize; - scaledSize.width = rotatedSize.width * _cropRegion.size.width; - scaledSize.height = rotatedSize.height * _cropRegion.size.height; - - - if (CGSizeEqualToSize(scaledSize, CGSizeZero)) - { - inputTextureSize = scaledSize; - } - else if (!CGSizeEqualToSize(inputTextureSize, scaledSize)) - { - inputTextureSize = scaledSize; - } -} - -#pragma mark - -#pragma mark GPUImageInput - -- (void)calculateCropTextureCoordinates; -{ - CGFloat minX = _cropRegion.origin.x; - CGFloat minY = _cropRegion.origin.y; - CGFloat maxX = CGRectGetMaxX(_cropRegion); - CGFloat maxY = CGRectGetMaxY(_cropRegion); - - switch(inputRotation) - { - case kGPUImageNoRotation: // Works - { - cropTextureCoordinates[0] = minX; // 0,0 - cropTextureCoordinates[1] = minY; - - cropTextureCoordinates[2] = maxX; // 1,0 - cropTextureCoordinates[3] = minY; - - cropTextureCoordinates[4] = minX; // 0,1 - cropTextureCoordinates[5] = maxY; - - cropTextureCoordinates[6] = maxX; // 1,1 - cropTextureCoordinates[7] = maxY; - }; break; - case kGPUImageRotateLeft: // Fixed - { - cropTextureCoordinates[0] = maxY; // 1,0 - cropTextureCoordinates[1] = 1.0 - maxX; - - cropTextureCoordinates[2] = maxY; // 1,1 - cropTextureCoordinates[3] = 1.0 - minX; - - cropTextureCoordinates[4] = minY; // 0,0 - cropTextureCoordinates[5] = 1.0 - maxX; - - cropTextureCoordinates[6] = minY; // 0,1 - cropTextureCoordinates[7] = 1.0 - minX; - }; break; - case kGPUImageRotateRight: // Fixed - { - cropTextureCoordinates[0] = minY; // 0,1 - cropTextureCoordinates[1] = 1.0 - minX; - - cropTextureCoordinates[2] = minY; // 0,0 - cropTextureCoordinates[3] = 1.0 - maxX; - - cropTextureCoordinates[4] = maxY; // 1,1 - cropTextureCoordinates[5] = 1.0 - minX; - - cropTextureCoordinates[6] = maxY; // 1,0 - cropTextureCoordinates[7] = 1.0 - maxX; - }; break; - case kGPUImageFlipVertical: // Works for me - { - cropTextureCoordinates[0] = minX; // 0,1 - cropTextureCoordinates[1] = maxY; - - cropTextureCoordinates[2] = maxX; // 1,1 - cropTextureCoordinates[3] = maxY; - - cropTextureCoordinates[4] = minX; // 0,0 - cropTextureCoordinates[5] = minY; - - cropTextureCoordinates[6] = maxX; // 1,0 - cropTextureCoordinates[7] = minY; - }; break; - case kGPUImageFlipHorizonal: // Works for me - { - cropTextureCoordinates[0] = maxX; // 1,0 - cropTextureCoordinates[1] = minY; - - cropTextureCoordinates[2] = minX; // 0,0 - cropTextureCoordinates[3] = minY; - - cropTextureCoordinates[4] = maxX; // 1,1 - cropTextureCoordinates[5] = maxY; - - cropTextureCoordinates[6] = minX; // 0,1 - cropTextureCoordinates[7] = maxY; - }; break; - case kGPUImageRotate180: // Fixed - { - cropTextureCoordinates[0] = maxX; // 1,1 - cropTextureCoordinates[1] = maxY; - - cropTextureCoordinates[2] = minX; // 0,1 - cropTextureCoordinates[3] = maxY; - - cropTextureCoordinates[4] = maxX; // 1,0 - cropTextureCoordinates[5] = minY; - - cropTextureCoordinates[6] = minX; // 0,0 - cropTextureCoordinates[7] = minY; - }; break; - case kGPUImageRotateRightFlipVertical: // Fixed - { - cropTextureCoordinates[0] = minY; // 0,0 - cropTextureCoordinates[1] = 1.0 - maxX; - - cropTextureCoordinates[2] = minY; // 0,1 - cropTextureCoordinates[3] = 1.0 - minX; - - cropTextureCoordinates[4] = maxY; // 1,0 - cropTextureCoordinates[5] = 1.0 - maxX; - - cropTextureCoordinates[6] = maxY; // 1,1 - cropTextureCoordinates[7] = 1.0 - minX; - }; break; - case kGPUImageRotateRightFlipHorizontal: // Fixed - { - cropTextureCoordinates[0] = maxY; // 1,1 - cropTextureCoordinates[1] = 1.0 - minX; - - cropTextureCoordinates[2] = maxY; // 1,0 - cropTextureCoordinates[3] = 1.0 - maxX; - - cropTextureCoordinates[4] = minY; // 0,1 - cropTextureCoordinates[5] = 1.0 - minX; - - cropTextureCoordinates[6] = minY; // 0,0 - cropTextureCoordinates[7] = 1.0 - maxX; - }; break; - } -} - -- (void)newFrameReadyAtTime:(CMTime)frameTime atIndex:(NSInteger)textureIndex; -{ - static const GLfloat cropSquareVertices[] = { - -1.0f, -1.0f, - 1.0f, -1.0f, - -1.0f, 1.0f, - 1.0f, 1.0f, - }; - - [self renderToTextureWithVertices:cropSquareVertices textureCoordinates:cropTextureCoordinates]; - - [self informTargetsAboutNewFrameAtTime:frameTime]; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setCropRegion:(CGRect)newValue; -{ - NSParameterAssert(newValue.origin.x >= 0 && newValue.origin.x <= 1 && - newValue.origin.y >= 0 && newValue.origin.y <= 1 && - newValue.size.width >= 0 && newValue.size.width <= 1 && - newValue.size.height >= 0 && newValue.size.height <= 1); - - _cropRegion = newValue; - [self calculateCropTextureCoordinates]; -} - -- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; -{ - [super setInputRotation:newInputRotation atIndex:textureIndex]; - [self calculateCropTextureCoordinates]; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageCrosshairGenerator.h b/Example/Pods/GPUImage/framework/Source/GPUImageCrosshairGenerator.h deleted file mode 100644 index 569774f..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageCrosshairGenerator.h +++ /dev/null @@ -1,17 +0,0 @@ -#import "GPUImageFilter.h" - -@interface GPUImageCrosshairGenerator : GPUImageFilter -{ - GLint crosshairWidthUniform, crosshairColorUniform; -} - -// The width of the displayed crosshairs, in pixels. Currently this only works well for odd widths. The default is 5. -@property(readwrite, nonatomic) CGFloat crosshairWidth; - -// The color of the crosshairs is specified using individual red, green, and blue components (normalized to 1.0). The default is green: (0.0, 1.0, 0.0). -- (void)setCrosshairColorRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent; - -// Rendering -- (void)renderCrosshairsFromArray:(GLfloat *)crosshairCoordinates count:(NSUInteger)numberOfCrosshairs frameTime:(CMTime)frameTime; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageCrosshairGenerator.m b/Example/Pods/GPUImage/framework/Source/GPUImageCrosshairGenerator.m deleted file mode 100644 index 9e2a29a..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageCrosshairGenerator.m +++ /dev/null @@ -1,139 +0,0 @@ -#import "GPUImageCrosshairGenerator.h" - -NSString *const kGPUImageCrosshairVertexShaderString = SHADER_STRING -( - attribute vec4 position; - - uniform float crosshairWidth; - - varying vec2 centerLocation; - varying float pointSpacing; - - void main() - { - gl_Position = vec4(((position.xy * 2.0) - 1.0), 0.0, 1.0); - gl_PointSize = crosshairWidth + 1.0; - pointSpacing = 1.0 / crosshairWidth; - centerLocation = vec2(pointSpacing * ceil(crosshairWidth / 2.0), pointSpacing * ceil(crosshairWidth / 2.0)); - } -); - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageCrosshairFragmentShaderString = SHADER_STRING -( - uniform lowp vec3 crosshairColor; - - varying highp vec2 centerLocation; - varying highp float pointSpacing; - - void main() - { - lowp vec2 distanceFromCenter = abs(centerLocation - gl_PointCoord.xy); - lowp float axisTest = step(pointSpacing, gl_PointCoord.y) * step(distanceFromCenter.x, 0.09) + step(pointSpacing, gl_PointCoord.x) * step(distanceFromCenter.y, 0.09); - - gl_FragColor = vec4(crosshairColor * axisTest, axisTest); -// gl_FragColor = vec4(distanceFromCenterInX, distanceFromCenterInY, 0.0, 1.0); - } -); -#else -NSString *const kGPUImageCrosshairFragmentShaderString = SHADER_STRING -( - GPUImageEscapedHashIdentifier(version 120)\n - - uniform vec3 crosshairColor; - - varying vec2 centerLocation; - varying float pointSpacing; - - void main() - { - vec2 distanceFromCenter = abs(centerLocation - gl_PointCoord.xy); - float axisTest = step(pointSpacing, gl_PointCoord.y) * step(distanceFromCenter.x, 0.09) + step(pointSpacing, gl_PointCoord.x) * step(distanceFromCenter.y, 0.09); - - gl_FragColor = vec4(crosshairColor * axisTest, axisTest); - // gl_FragColor = vec4(distanceFromCenterInX, distanceFromCenterInY, 0.0, 1.0); - } -); -#endif - -@implementation GPUImageCrosshairGenerator - -@synthesize crosshairWidth = _crosshairWidth; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithVertexShaderFromString:kGPUImageCrosshairVertexShaderString fragmentShaderFromString:kGPUImageCrosshairFragmentShaderString])) - { - return nil; - } - - runSynchronouslyOnVideoProcessingQueue(^{ - crosshairWidthUniform = [filterProgram uniformIndex:@"crosshairWidth"]; - crosshairColorUniform = [filterProgram uniformIndex:@"crosshairColor"]; - - self.crosshairWidth = 5.0; - [self setCrosshairColorRed:0.0 green:1.0 blue:0.0]; - }); - - return self; -} - -#pragma mark - -#pragma mark Rendering - -- (void)renderCrosshairsFromArray:(GLfloat *)crosshairCoordinates count:(NSUInteger)numberOfCrosshairs frameTime:(CMTime)frameTime; -{ - if (self.preventRendering) - { - return; - } - - runSynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext setActiveShaderProgram:filterProgram]; - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -#else - glEnable(GL_POINT_SPRITE); - glEnable(GL_VERTEX_PROGRAM_POINT_SIZE); -#endif - - outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:[self sizeOfFBO] textureOptions:self.outputTextureOptions onlyTexture:NO]; - [outputFramebuffer activateFramebuffer]; - - glClearColor(0.0, 0.0, 0.0, 0.0); - glClear(GL_COLOR_BUFFER_BIT); - - glVertexAttribPointer(filterPositionAttribute, 2, GL_FLOAT, 0, 0, crosshairCoordinates); - - glDrawArrays(GL_POINTS, 0, (GLsizei)numberOfCrosshairs); - - [self informTargetsAboutNewFrameAtTime:frameTime]; - }); -} - -- (void)renderToTextureWithVertices:(const GLfloat *)vertices textureCoordinates:(const GLfloat *)textureCoordinates; -{ - // Prevent rendering of the frame by normal means -} - -#pragma mark - -#pragma mark Accessors - -- (void)setCrosshairWidth:(CGFloat)newValue; -{ - _crosshairWidth = newValue; - - [self setFloat:_crosshairWidth forUniform:crosshairWidthUniform program:filterProgram]; -} - -- (void)setCrosshairColorRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent; -{ - GPUVector3 crosshairColor = {redComponent, greenComponent, blueComponent}; - - [self setVec3:crosshairColor forUniform:crosshairColorUniform program:filterProgram]; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageCrosshatchFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageCrosshatchFilter.h deleted file mode 100755 index dab1896..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageCrosshatchFilter.h +++ /dev/null @@ -1,13 +0,0 @@ -#import "GPUImageFilter.h" - -@interface GPUImageCrosshatchFilter : GPUImageFilter -{ - GLint crossHatchSpacingUniform, lineWidthUniform; -} -// The fractional width of the image to use as the spacing for the crosshatch. The default is 0.03. -@property(readwrite, nonatomic) CGFloat crossHatchSpacing; - -// A relative width for the crosshatch lines. The default is 0.003. -@property(readwrite, nonatomic) CGFloat lineWidth; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageCrosshatchFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageCrosshatchFilter.m deleted file mode 100755 index 51dbd59..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageCrosshatchFilter.m +++ /dev/null @@ -1,163 +0,0 @@ -#import "GPUImageCrosshatchFilter.h" - -// Shader code based on http://machinesdontcare.wordpress.com/ - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageCrosshatchFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform highp float crossHatchSpacing; - uniform highp float lineWidth; - - const highp vec3 W = vec3(0.2125, 0.7154, 0.0721); - - void main() - { - highp float luminance = dot(texture2D(inputImageTexture, textureCoordinate).rgb, W); - - lowp vec4 colorToDisplay = vec4(1.0, 1.0, 1.0, 1.0); - if (luminance < 1.00) - { - if (mod(textureCoordinate.x + textureCoordinate.y, crossHatchSpacing) <= lineWidth) - { - colorToDisplay = vec4(0.0, 0.0, 0.0, 1.0); - } - } - if (luminance < 0.75) - { - if (mod(textureCoordinate.x - textureCoordinate.y, crossHatchSpacing) <= lineWidth) - { - colorToDisplay = vec4(0.0, 0.0, 0.0, 1.0); - } - } - if (luminance < 0.50) - { - if (mod(textureCoordinate.x + textureCoordinate.y - (crossHatchSpacing / 2.0), crossHatchSpacing) <= lineWidth) - { - colorToDisplay = vec4(0.0, 0.0, 0.0, 1.0); - } - } - if (luminance < 0.3) - { - if (mod(textureCoordinate.x - textureCoordinate.y - (crossHatchSpacing / 2.0), crossHatchSpacing) <= lineWidth) - { - colorToDisplay = vec4(0.0, 0.0, 0.0, 1.0); - } - } - - gl_FragColor = colorToDisplay; - } -); -#else -NSString *const kGPUImageCrosshatchFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform float crossHatchSpacing; - uniform float lineWidth; - - const vec3 W = vec3(0.2125, 0.7154, 0.0721); - - void main() - { - float luminance = dot(texture2D(inputImageTexture, textureCoordinate).rgb, W); - - vec4 colorToDisplay = vec4(1.0, 1.0, 1.0, 1.0); - if (luminance < 1.00) - { - if (mod(textureCoordinate.x + textureCoordinate.y, crossHatchSpacing) <= lineWidth) - { - colorToDisplay = vec4(0.0, 0.0, 0.0, 1.0); - } - } - if (luminance < 0.75) - { - if (mod(textureCoordinate.x - textureCoordinate.y, crossHatchSpacing) <= lineWidth) - { - colorToDisplay = vec4(0.0, 0.0, 0.0, 1.0); - } - } - if (luminance < 0.50) - { - if (mod(textureCoordinate.x + textureCoordinate.y - (crossHatchSpacing / 2.0), crossHatchSpacing) <= lineWidth) - { - colorToDisplay = vec4(0.0, 0.0, 0.0, 1.0); - } - } - if (luminance < 0.3) - { - if (mod(textureCoordinate.x - textureCoordinate.y - (crossHatchSpacing / 2.0), crossHatchSpacing) <= lineWidth) - { - colorToDisplay = vec4(0.0, 0.0, 0.0, 1.0); - } - } - - gl_FragColor = colorToDisplay; - } -); -#endif - -@implementation GPUImageCrosshatchFilter - -@synthesize crossHatchSpacing = _crossHatchSpacing; -@synthesize lineWidth = _lineWidth; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageCrosshatchFragmentShaderString])) - { - return nil; - } - - crossHatchSpacingUniform = [filterProgram uniformIndex:@"crossHatchSpacing"]; - lineWidthUniform = [filterProgram uniformIndex:@"lineWidth"]; - - self.crossHatchSpacing = 0.03; - self.lineWidth = 0.003; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setCrossHatchSpacing:(CGFloat)newValue; -{ - CGFloat singlePixelSpacing; - if (inputTextureSize.width != 0.0) - { - singlePixelSpacing = 1.0 / inputTextureSize.width; - } - else - { - singlePixelSpacing = 1.0 / 2048.0; - } - - if (newValue < singlePixelSpacing) - { - _crossHatchSpacing = singlePixelSpacing; - } - else - { - _crossHatchSpacing = newValue; - } - - [self setFloat:_crossHatchSpacing forUniform:crossHatchSpacingUniform program:filterProgram]; -} - -- (void)setLineWidth:(CGFloat)newValue; -{ - _lineWidth = newValue; - - [self setFloat:_lineWidth forUniform:lineWidthUniform program:filterProgram]; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageDarkenBlendFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageDarkenBlendFilter.h deleted file mode 100755 index 5dfe340..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageDarkenBlendFilter.h +++ /dev/null @@ -1,7 +0,0 @@ -#import "GPUImageTwoInputFilter.h" - -@interface GPUImageDarkenBlendFilter : GPUImageTwoInputFilter -{ -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageDarkenBlendFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageDarkenBlendFilter.m deleted file mode 100644 index 85ec9e8..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageDarkenBlendFilter.m +++ /dev/null @@ -1,52 +0,0 @@ -#import "GPUImageDarkenBlendFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageDarkenBlendFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - varying highp vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - lowp vec4 base = texture2D(inputImageTexture, textureCoordinate); - lowp vec4 overlayer = texture2D(inputImageTexture2, textureCoordinate2); - - gl_FragColor = vec4(min(overlayer.rgb * base.a, base.rgb * overlayer.a) + overlayer.rgb * (1.0 - base.a) + base.rgb * (1.0 - overlayer.a), 1.0); - } -); -#else -NSString *const kGPUImageDarkenBlendFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - vec4 base = texture2D(inputImageTexture, textureCoordinate); - vec4 overlayer = texture2D(inputImageTexture2, textureCoordinate2); - - gl_FragColor = vec4(min(overlayer.rgb * base.a, base.rgb * overlayer.a) + overlayer.rgb * (1.0 - base.a) + base.rgb * (1.0 - overlayer.a), 1.0); - } - ); -#endif - -@implementation GPUImageDarkenBlendFilter - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageDarkenBlendFragmentShaderString])) - { - return nil; - } - - return self; -} - -@end - diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageDifferenceBlendFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageDifferenceBlendFilter.h deleted file mode 100755 index 7c7dfc2..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageDifferenceBlendFilter.h +++ /dev/null @@ -1,7 +0,0 @@ -#import "GPUImageTwoInputFilter.h" - -@interface GPUImageDifferenceBlendFilter : GPUImageTwoInputFilter -{ -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageDifferenceBlendFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageDifferenceBlendFilter.m deleted file mode 100755 index 01bf09b..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageDifferenceBlendFilter.m +++ /dev/null @@ -1,50 +0,0 @@ -#import "GPUImageDifferenceBlendFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageDifferenceBlendFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - varying highp vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - mediump vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - mediump vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate2); - gl_FragColor = vec4(abs(textureColor2.rgb - textureColor.rgb), textureColor.a); - } -); -#else -NSString *const kGPUImageDifferenceBlendFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate2); - gl_FragColor = vec4(abs(textureColor2.rgb - textureColor.rgb), textureColor.a); - } -); -#endif - -@implementation GPUImageDifferenceBlendFilter - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageDifferenceBlendFragmentShaderString])) - { - return nil; - } - - return self; -} - -@end - diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageDilationFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageDilationFilter.h deleted file mode 100644 index 59423a3..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageDilationFilter.h +++ /dev/null @@ -1,16 +0,0 @@ -#import "GPUImageTwoPassTextureSamplingFilter.h" - -// For each pixel, this sets it to the maximum value of the red channel in a rectangular neighborhood extending out dilationRadius pixels from the center. -// This extends out bright features, and is most commonly used with black-and-white thresholded images. - -extern NSString *const kGPUImageDilationRadiusOneVertexShaderString; -extern NSString *const kGPUImageDilationRadiusTwoVertexShaderString; -extern NSString *const kGPUImageDilationRadiusThreeVertexShaderString; -extern NSString *const kGPUImageDilationRadiusFourVertexShaderString; - -@interface GPUImageDilationFilter : GPUImageTwoPassTextureSamplingFilter - -// Acceptable values for dilationRadius, which sets the distance in pixels to sample out from the center, are 1, 2, 3, and 4. -- (id)initWithRadius:(NSUInteger)dilationRadius; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageDilationFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageDilationFilter.m deleted file mode 100644 index df06518..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageDilationFilter.m +++ /dev/null @@ -1,431 +0,0 @@ -#import "GPUImageDilationFilter.h" - -@implementation GPUImageDilationFilter - -NSString *const kGPUImageDilationRadiusOneVertexShaderString = SHADER_STRING -( - attribute vec4 position; - attribute vec2 inputTextureCoordinate; - - uniform float texelWidthOffset; - uniform float texelHeightOffset; - - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - - void main() - { - gl_Position = position; - - vec2 offset = vec2(texelWidthOffset, texelHeightOffset); - - centerTextureCoordinate = inputTextureCoordinate; - oneStepNegativeTextureCoordinate = inputTextureCoordinate - offset; - oneStepPositiveTextureCoordinate = inputTextureCoordinate + offset; - } -); - -NSString *const kGPUImageDilationRadiusTwoVertexShaderString = SHADER_STRING -( - attribute vec4 position; - attribute vec2 inputTextureCoordinate; - - uniform float texelWidthOffset; - uniform float texelHeightOffset; - - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - varying vec2 twoStepsPositiveTextureCoordinate; - varying vec2 twoStepsNegativeTextureCoordinate; - - void main() - { - gl_Position = position; - - vec2 offset = vec2(texelWidthOffset, texelHeightOffset); - - centerTextureCoordinate = inputTextureCoordinate; - oneStepNegativeTextureCoordinate = inputTextureCoordinate - offset; - oneStepPositiveTextureCoordinate = inputTextureCoordinate + offset; - twoStepsNegativeTextureCoordinate = inputTextureCoordinate - (offset * 2.0); - twoStepsPositiveTextureCoordinate = inputTextureCoordinate + (offset * 2.0); - } -); - -NSString *const kGPUImageDilationRadiusThreeVertexShaderString = SHADER_STRING -( - attribute vec4 position; - attribute vec2 inputTextureCoordinate; - - uniform float texelWidthOffset; - uniform float texelHeightOffset; - - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - varying vec2 twoStepsPositiveTextureCoordinate; - varying vec2 twoStepsNegativeTextureCoordinate; - varying vec2 threeStepsPositiveTextureCoordinate; - varying vec2 threeStepsNegativeTextureCoordinate; - - void main() - { - gl_Position = position; - - vec2 offset = vec2(texelWidthOffset, texelHeightOffset); - - centerTextureCoordinate = inputTextureCoordinate; - oneStepNegativeTextureCoordinate = inputTextureCoordinate - offset; - oneStepPositiveTextureCoordinate = inputTextureCoordinate + offset; - twoStepsNegativeTextureCoordinate = inputTextureCoordinate - (offset * 2.0); - twoStepsPositiveTextureCoordinate = inputTextureCoordinate + (offset * 2.0); - threeStepsNegativeTextureCoordinate = inputTextureCoordinate - (offset * 3.0); - threeStepsPositiveTextureCoordinate = inputTextureCoordinate + (offset * 3.0); - } -); - -NSString *const kGPUImageDilationRadiusFourVertexShaderString = SHADER_STRING -( - attribute vec4 position; - attribute vec2 inputTextureCoordinate; - - uniform float texelWidthOffset; - uniform float texelHeightOffset; - - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - varying vec2 twoStepsPositiveTextureCoordinate; - varying vec2 twoStepsNegativeTextureCoordinate; - varying vec2 threeStepsPositiveTextureCoordinate; - varying vec2 threeStepsNegativeTextureCoordinate; - varying vec2 fourStepsPositiveTextureCoordinate; - varying vec2 fourStepsNegativeTextureCoordinate; - - void main() - { - gl_Position = position; - - vec2 offset = vec2(texelWidthOffset, texelHeightOffset); - - centerTextureCoordinate = inputTextureCoordinate; - oneStepNegativeTextureCoordinate = inputTextureCoordinate - offset; - oneStepPositiveTextureCoordinate = inputTextureCoordinate + offset; - twoStepsNegativeTextureCoordinate = inputTextureCoordinate - (offset * 2.0); - twoStepsPositiveTextureCoordinate = inputTextureCoordinate + (offset * 2.0); - threeStepsNegativeTextureCoordinate = inputTextureCoordinate - (offset * 3.0); - threeStepsPositiveTextureCoordinate = inputTextureCoordinate + (offset * 3.0); - fourStepsNegativeTextureCoordinate = inputTextureCoordinate - (offset * 4.0); - fourStepsPositiveTextureCoordinate = inputTextureCoordinate + (offset * 4.0); - } -); - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageDilationRadiusOneFragmentShaderString = SHADER_STRING -( - precision lowp float; - - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - float centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate).r; - float oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate).r; - float oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate).r; - - lowp float maxValue = max(centerIntensity, oneStepPositiveIntensity); - maxValue = max(maxValue, oneStepNegativeIntensity); - - gl_FragColor = vec4(vec3(maxValue), 1.0); - } -); - -NSString *const kGPUImageDilationRadiusTwoFragmentShaderString = SHADER_STRING -( - precision lowp float; - - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - varying vec2 twoStepsPositiveTextureCoordinate; - varying vec2 twoStepsNegativeTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - float centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate).r; - float oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate).r; - float oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate).r; - float twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate).r; - float twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate).r; - - lowp float maxValue = max(centerIntensity, oneStepPositiveIntensity); - maxValue = max(maxValue, oneStepNegativeIntensity); - maxValue = max(maxValue, twoStepsPositiveIntensity); - maxValue = max(maxValue, twoStepsNegativeIntensity); - - gl_FragColor = vec4(vec3(maxValue), 1.0); - } -); - -NSString *const kGPUImageDilationRadiusThreeFragmentShaderString = SHADER_STRING -( - precision lowp float; - - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - varying vec2 twoStepsPositiveTextureCoordinate; - varying vec2 twoStepsNegativeTextureCoordinate; - varying vec2 threeStepsPositiveTextureCoordinate; - varying vec2 threeStepsNegativeTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - float centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate).r; - float oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate).r; - float oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate).r; - float twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate).r; - float twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate).r; - float threeStepsPositiveIntensity = texture2D(inputImageTexture, threeStepsPositiveTextureCoordinate).r; - float threeStepsNegativeIntensity = texture2D(inputImageTexture, threeStepsNegativeTextureCoordinate).r; - - lowp float maxValue = max(centerIntensity, oneStepPositiveIntensity); - maxValue = max(maxValue, oneStepNegativeIntensity); - maxValue = max(maxValue, twoStepsPositiveIntensity); - maxValue = max(maxValue, twoStepsNegativeIntensity); - maxValue = max(maxValue, threeStepsPositiveIntensity); - maxValue = max(maxValue, threeStepsNegativeIntensity); - - gl_FragColor = vec4(vec3(maxValue), 1.0); - } -); - -NSString *const kGPUImageDilationRadiusFourFragmentShaderString = SHADER_STRING -( - precision lowp float; - - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - varying vec2 twoStepsPositiveTextureCoordinate; - varying vec2 twoStepsNegativeTextureCoordinate; - varying vec2 threeStepsPositiveTextureCoordinate; - varying vec2 threeStepsNegativeTextureCoordinate; - varying vec2 fourStepsPositiveTextureCoordinate; - varying vec2 fourStepsNegativeTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - float centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate).r; - float oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate).r; - float oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate).r; - float twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate).r; - float twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate).r; - float threeStepsPositiveIntensity = texture2D(inputImageTexture, threeStepsPositiveTextureCoordinate).r; - float threeStepsNegativeIntensity = texture2D(inputImageTexture, threeStepsNegativeTextureCoordinate).r; - float fourStepsPositiveIntensity = texture2D(inputImageTexture, fourStepsPositiveTextureCoordinate).r; - float fourStepsNegativeIntensity = texture2D(inputImageTexture, fourStepsNegativeTextureCoordinate).r; - - lowp float maxValue = max(centerIntensity, oneStepPositiveIntensity); - maxValue = max(maxValue, oneStepNegativeIntensity); - maxValue = max(maxValue, twoStepsPositiveIntensity); - maxValue = max(maxValue, twoStepsNegativeIntensity); - maxValue = max(maxValue, threeStepsPositiveIntensity); - maxValue = max(maxValue, threeStepsNegativeIntensity); - maxValue = max(maxValue, fourStepsPositiveIntensity); - maxValue = max(maxValue, fourStepsNegativeIntensity); - - gl_FragColor = vec4(vec3(maxValue), 1.0); - } -); -#else -NSString *const kGPUImageDilationRadiusOneFragmentShaderString = SHADER_STRING -( - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - float centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate).r; - float oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate).r; - float oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate).r; - - float maxValue = max(centerIntensity, oneStepPositiveIntensity); - maxValue = max(maxValue, oneStepNegativeIntensity); - - gl_FragColor = vec4(vec3(maxValue), 1.0); - } -); - -NSString *const kGPUImageDilationRadiusTwoFragmentShaderString = SHADER_STRING -( - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - varying vec2 twoStepsPositiveTextureCoordinate; - varying vec2 twoStepsNegativeTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - float centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate).r; - float oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate).r; - float oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate).r; - float twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate).r; - float twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate).r; - - float maxValue = max(centerIntensity, oneStepPositiveIntensity); - maxValue = max(maxValue, oneStepNegativeIntensity); - maxValue = max(maxValue, twoStepsPositiveIntensity); - maxValue = max(maxValue, twoStepsNegativeIntensity); - - gl_FragColor = vec4(vec3(maxValue), 1.0); - } -); - -NSString *const kGPUImageDilationRadiusThreeFragmentShaderString = SHADER_STRING -( - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - varying vec2 twoStepsPositiveTextureCoordinate; - varying vec2 twoStepsNegativeTextureCoordinate; - varying vec2 threeStepsPositiveTextureCoordinate; - varying vec2 threeStepsNegativeTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - float centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate).r; - float oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate).r; - float oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate).r; - float twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate).r; - float twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate).r; - float threeStepsPositiveIntensity = texture2D(inputImageTexture, threeStepsPositiveTextureCoordinate).r; - float threeStepsNegativeIntensity = texture2D(inputImageTexture, threeStepsNegativeTextureCoordinate).r; - - float maxValue = max(centerIntensity, oneStepPositiveIntensity); - maxValue = max(maxValue, oneStepNegativeIntensity); - maxValue = max(maxValue, twoStepsPositiveIntensity); - maxValue = max(maxValue, twoStepsNegativeIntensity); - maxValue = max(maxValue, threeStepsPositiveIntensity); - maxValue = max(maxValue, threeStepsNegativeIntensity); - - gl_FragColor = vec4(vec3(maxValue), 1.0); - } -); - -NSString *const kGPUImageDilationRadiusFourFragmentShaderString = SHADER_STRING -( - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - varying vec2 twoStepsPositiveTextureCoordinate; - varying vec2 twoStepsNegativeTextureCoordinate; - varying vec2 threeStepsPositiveTextureCoordinate; - varying vec2 threeStepsNegativeTextureCoordinate; - varying vec2 fourStepsPositiveTextureCoordinate; - varying vec2 fourStepsNegativeTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - float centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate).r; - float oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate).r; - float oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate).r; - float twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate).r; - float twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate).r; - float threeStepsPositiveIntensity = texture2D(inputImageTexture, threeStepsPositiveTextureCoordinate).r; - float threeStepsNegativeIntensity = texture2D(inputImageTexture, threeStepsNegativeTextureCoordinate).r; - float fourStepsPositiveIntensity = texture2D(inputImageTexture, fourStepsPositiveTextureCoordinate).r; - float fourStepsNegativeIntensity = texture2D(inputImageTexture, fourStepsNegativeTextureCoordinate).r; - - float maxValue = max(centerIntensity, oneStepPositiveIntensity); - maxValue = max(maxValue, oneStepNegativeIntensity); - maxValue = max(maxValue, twoStepsPositiveIntensity); - maxValue = max(maxValue, twoStepsNegativeIntensity); - maxValue = max(maxValue, threeStepsPositiveIntensity); - maxValue = max(maxValue, threeStepsNegativeIntensity); - maxValue = max(maxValue, fourStepsPositiveIntensity); - maxValue = max(maxValue, fourStepsNegativeIntensity); - - gl_FragColor = vec4(vec3(maxValue), 1.0); - } -); -#endif - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)initWithRadius:(NSUInteger)dilationRadius; -{ - NSString *fragmentShaderForThisRadius = nil; - NSString *vertexShaderForThisRadius = nil; - - switch (dilationRadius) - { - case 0: - case 1: - { - vertexShaderForThisRadius = kGPUImageDilationRadiusOneVertexShaderString; - fragmentShaderForThisRadius = kGPUImageDilationRadiusOneFragmentShaderString; - }; break; - case 2: - { - vertexShaderForThisRadius = kGPUImageDilationRadiusTwoVertexShaderString; - fragmentShaderForThisRadius = kGPUImageDilationRadiusTwoFragmentShaderString; - }; break; - case 3: - { - vertexShaderForThisRadius = kGPUImageDilationRadiusThreeVertexShaderString; - fragmentShaderForThisRadius = kGPUImageDilationRadiusThreeFragmentShaderString; - }; break; - case 4: - { - vertexShaderForThisRadius = kGPUImageDilationRadiusFourVertexShaderString; - fragmentShaderForThisRadius = kGPUImageDilationRadiusFourFragmentShaderString; - }; break; - default: - { - vertexShaderForThisRadius = kGPUImageDilationRadiusFourVertexShaderString; - fragmentShaderForThisRadius = kGPUImageDilationRadiusFourFragmentShaderString; - }; break; - } - - if (!(self = [super initWithFirstStageVertexShaderFromString:vertexShaderForThisRadius firstStageFragmentShaderFromString:fragmentShaderForThisRadius secondStageVertexShaderFromString:vertexShaderForThisRadius secondStageFragmentShaderFromString:fragmentShaderForThisRadius])) - { - return nil; - } - - return self; -} - -- (id)init; -{ - if (!(self = [self initWithRadius:1])) - { - return nil; - } - - return self; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageDirectionalNonMaximumSuppressionFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageDirectionalNonMaximumSuppressionFilter.h deleted file mode 100644 index fdffb9f..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageDirectionalNonMaximumSuppressionFilter.h +++ /dev/null @@ -1,19 +0,0 @@ -#import "GPUImageFilter.h" - -@interface GPUImageDirectionalNonMaximumSuppressionFilter : GPUImageFilter -{ - GLint texelWidthUniform, texelHeightUniform; - GLint upperThresholdUniform, lowerThresholdUniform; - - BOOL hasOverriddenImageSizeFactor; -} - -// The texel width and height determines how far out to sample from this texel. By default, this is the normalized width of a pixel, but this can be overridden for different effects. -@property(readwrite, nonatomic) CGFloat texelWidth; -@property(readwrite, nonatomic) CGFloat texelHeight; - -// These thresholds set cutoffs for the intensities that definitely get registered (upper threshold) and those that definitely don't (lower threshold) -@property(readwrite, nonatomic) CGFloat upperThreshold; -@property(readwrite, nonatomic) CGFloat lowerThreshold; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageDirectionalNonMaximumSuppressionFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageDirectionalNonMaximumSuppressionFilter.m deleted file mode 100644 index b442f3a..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageDirectionalNonMaximumSuppressionFilter.m +++ /dev/null @@ -1,141 +0,0 @@ -#import "GPUImageDirectionalNonMaximumSuppressionFilter.h" - -@implementation GPUImageDirectionalNonMaximumSuppressionFilter - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageDirectionalNonmaximumSuppressionFragmentShaderString = SHADER_STRING -( - precision mediump float; - - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform highp float texelWidth; - uniform highp float texelHeight; - uniform mediump float upperThreshold; - uniform mediump float lowerThreshold; - - void main() - { - vec3 currentGradientAndDirection = texture2D(inputImageTexture, textureCoordinate).rgb; - vec2 gradientDirection = ((currentGradientAndDirection.gb * 2.0) - 1.0) * vec2(texelWidth, texelHeight); - - float firstSampledGradientMagnitude = texture2D(inputImageTexture, textureCoordinate + gradientDirection).r; - float secondSampledGradientMagnitude = texture2D(inputImageTexture, textureCoordinate - gradientDirection).r; - - float multiplier = step(firstSampledGradientMagnitude, currentGradientAndDirection.r); - multiplier = multiplier * step(secondSampledGradientMagnitude, currentGradientAndDirection.r); - - float thresholdCompliance = smoothstep(lowerThreshold, upperThreshold, currentGradientAndDirection.r); - multiplier = multiplier * thresholdCompliance; - - gl_FragColor = vec4(multiplier, multiplier, multiplier, 1.0); - } -); -#else -NSString *const kGPUImageDirectionalNonmaximumSuppressionFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform float texelWidth; - uniform float texelHeight; - uniform float upperThreshold; - uniform float lowerThreshold; - - void main() - { - vec3 currentGradientAndDirection = texture2D(inputImageTexture, textureCoordinate).rgb; - vec2 gradientDirection = ((currentGradientAndDirection.gb * 2.0) - 1.0) * vec2(texelWidth, texelHeight); - - float firstSampledGradientMagnitude = texture2D(inputImageTexture, textureCoordinate + gradientDirection).r; - float secondSampledGradientMagnitude = texture2D(inputImageTexture, textureCoordinate - gradientDirection).r; - - float multiplier = step(firstSampledGradientMagnitude, currentGradientAndDirection.r); - multiplier = multiplier * step(secondSampledGradientMagnitude, currentGradientAndDirection.r); - - float thresholdCompliance = smoothstep(lowerThreshold, upperThreshold, currentGradientAndDirection.r); - multiplier = multiplier * thresholdCompliance; - - gl_FragColor = vec4(multiplier, multiplier, multiplier, 1.0); - } -); -#endif - -@synthesize texelWidth = _texelWidth; -@synthesize texelHeight = _texelHeight; -@synthesize upperThreshold = _upperThreshold; -@synthesize lowerThreshold = _lowerThreshold; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageDirectionalNonmaximumSuppressionFragmentShaderString])) - { - return nil; - } - - texelWidthUniform = [filterProgram uniformIndex:@"texelWidth"]; - texelHeightUniform = [filterProgram uniformIndex:@"texelHeight"]; - upperThresholdUniform = [filterProgram uniformIndex:@"upperThreshold"]; - lowerThresholdUniform = [filterProgram uniformIndex:@"lowerThreshold"]; - - self.upperThreshold = 0.5; - self.lowerThreshold = 0.1; - - return self; -} - -- (void)setupFilterForSize:(CGSize)filterFrameSize; -{ - if (!hasOverriddenImageSizeFactor) - { - _texelWidth = 1.0 / filterFrameSize.width; - _texelHeight = 1.0 / filterFrameSize.height; - - runSynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext setActiveShaderProgram:filterProgram]; - glUniform1f(texelWidthUniform, _texelWidth); - glUniform1f(texelHeightUniform, _texelHeight); - }); - } -} - -#pragma mark - -#pragma mark Accessors - -- (void)setTexelWidth:(CGFloat)newValue; -{ - hasOverriddenImageSizeFactor = YES; - _texelWidth = newValue; - - [self setFloat:_texelWidth forUniform:texelWidthUniform program:filterProgram]; -} - -- (void)setTexelHeight:(CGFloat)newValue; -{ - hasOverriddenImageSizeFactor = YES; - _texelHeight = newValue; - - [self setFloat:_texelHeight forUniform:texelHeightUniform program:filterProgram]; -} - -- (void)setLowerThreshold:(CGFloat)newValue; -{ - _lowerThreshold = newValue; - - [self setFloat:_lowerThreshold forUniform:lowerThresholdUniform program:filterProgram]; -} - -- (void)setUpperThreshold:(CGFloat)newValue; -{ - _upperThreshold = newValue; - - [self setFloat:_upperThreshold forUniform:upperThresholdUniform program:filterProgram]; -} - - - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageDirectionalSobelEdgeDetectionFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageDirectionalSobelEdgeDetectionFilter.h deleted file mode 100644 index cfccc89..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageDirectionalSobelEdgeDetectionFilter.h +++ /dev/null @@ -1,5 +0,0 @@ -#import "GPUImage3x3TextureSamplingFilter.h" - -@interface GPUImageDirectionalSobelEdgeDetectionFilter : GPUImage3x3TextureSamplingFilter - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageDirectionalSobelEdgeDetectionFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageDirectionalSobelEdgeDetectionFilter.m deleted file mode 100644 index a3575e3..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageDirectionalSobelEdgeDetectionFilter.m +++ /dev/null @@ -1,103 +0,0 @@ -#import "GPUImageDirectionalSobelEdgeDetectionFilter.h" - -@implementation GPUImageDirectionalSobelEdgeDetectionFilter - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageDirectionalSobelEdgeDetectionFragmentShaderString = SHADER_STRING -( - precision mediump float; - - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; - float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r; - float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r; - float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; - float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r; - float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r; - float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r; - float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r; - - vec2 gradientDirection; - gradientDirection.x = -bottomLeftIntensity - 2.0 * leftIntensity - topLeftIntensity + bottomRightIntensity + 2.0 * rightIntensity + topRightIntensity; - gradientDirection.y = -topLeftIntensity - 2.0 * topIntensity - topRightIntensity + bottomLeftIntensity + 2.0 * bottomIntensity + bottomRightIntensity; - - float gradientMagnitude = length(gradientDirection); - vec2 normalizedDirection = normalize(gradientDirection); - normalizedDirection = sign(normalizedDirection) * floor(abs(normalizedDirection) + 0.617316); // Offset by 1-sin(pi/8) to set to 0 if near axis, 1 if away - normalizedDirection = (normalizedDirection + 1.0) * 0.5; // Place -1.0 - 1.0 within 0 - 1.0 - - gl_FragColor = vec4(gradientMagnitude, normalizedDirection.x, normalizedDirection.y, 1.0); - } -); -#else -NSString *const kGPUImageDirectionalSobelEdgeDetectionFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; - float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r; - float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r; - float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; - float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r; - float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r; - float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r; - float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r; - - vec2 gradientDirection; - gradientDirection.x = -bottomLeftIntensity - 2.0 * leftIntensity - topLeftIntensity + bottomRightIntensity + 2.0 * rightIntensity + topRightIntensity; - gradientDirection.y = -topLeftIntensity - 2.0 * topIntensity - topRightIntensity + bottomLeftIntensity + 2.0 * bottomIntensity + bottomRightIntensity; - - float gradientMagnitude = length(gradientDirection); - vec2 normalizedDirection = normalize(gradientDirection); - normalizedDirection = sign(normalizedDirection) * floor(abs(normalizedDirection) + 0.617316); // Offset by 1-sin(pi/8) to set to 0 if near axis, 1 if away - normalizedDirection = (normalizedDirection + 1.0) * 0.5; // Place -1.0 - 1.0 within 0 - 1.0 - - gl_FragColor = vec4(gradientMagnitude, normalizedDirection.x, normalizedDirection.y, 1.0); - } -); -#endif - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageDirectionalSobelEdgeDetectionFragmentShaderString])) - { - return nil; - } - - return self; -} - - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageDissolveBlendFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageDissolveBlendFilter.h deleted file mode 100755 index b4e5720..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageDissolveBlendFilter.h +++ /dev/null @@ -1,11 +0,0 @@ -#import "GPUImageTwoInputFilter.h" - -@interface GPUImageDissolveBlendFilter : GPUImageTwoInputFilter -{ - GLint mixUniform; -} - -// Mix ranges from 0.0 (only image 1) to 1.0 (only image 2), with 0.5 (half of either) as the normal level -@property(readwrite, nonatomic) CGFloat mix; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageDissolveBlendFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageDissolveBlendFilter.m deleted file mode 100755 index b4a5609..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageDissolveBlendFilter.m +++ /dev/null @@ -1,72 +0,0 @@ -#import "GPUImageDissolveBlendFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageDissolveBlendFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - varying highp vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - uniform lowp float mixturePercent; - - void main() - { - lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - lowp vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate2); - - gl_FragColor = mix(textureColor, textureColor2, mixturePercent); - } -); -#else -NSString *const kGPUImageDissolveBlendFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - uniform float mixturePercent; - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate2); - - gl_FragColor = mix(textureColor, textureColor2, mixturePercent); - } -); -#endif - -@implementation GPUImageDissolveBlendFilter - -@synthesize mix = _mix; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageDissolveBlendFragmentShaderString])) - { - return nil; - } - - mixUniform = [filterProgram uniformIndex:@"mixturePercent"]; - self.mix = 0.5; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setMix:(CGFloat)newValue; -{ - _mix = newValue; - - [self setFloat:_mix forUniform:mixUniform program:filterProgram]; -} - -@end - diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageDivideBlendFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageDivideBlendFilter.h deleted file mode 100644 index ad798e2..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageDivideBlendFilter.h +++ /dev/null @@ -1,5 +0,0 @@ -#import "GPUImageTwoInputFilter.h" - -@interface GPUImageDivideBlendFilter : GPUImageTwoInputFilter - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageDivideBlendFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageDivideBlendFilter.m deleted file mode 100644 index 63ee071..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageDivideBlendFilter.m +++ /dev/null @@ -1,96 +0,0 @@ -#import "GPUImageDivideBlendFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageDivideBlendFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - varying highp vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - mediump vec4 base = texture2D(inputImageTexture, textureCoordinate); - mediump vec4 overlay = texture2D(inputImageTexture2, textureCoordinate2); - - mediump float ra; - if (overlay.a == 0.0 || ((base.r / overlay.r) > (base.a / overlay.a))) - ra = overlay.a * base.a + overlay.r * (1.0 - base.a) + base.r * (1.0 - overlay.a); - else - ra = (base.r * overlay.a * overlay.a) / overlay.r + overlay.r * (1.0 - base.a) + base.r * (1.0 - overlay.a); - - - mediump float ga; - if (overlay.a == 0.0 || ((base.g / overlay.g) > (base.a / overlay.a))) - ga = overlay.a * base.a + overlay.g * (1.0 - base.a) + base.g * (1.0 - overlay.a); - else - ga = (base.g * overlay.a * overlay.a) / overlay.g + overlay.g * (1.0 - base.a) + base.g * (1.0 - overlay.a); - - - mediump float ba; - if (overlay.a == 0.0 || ((base.b / overlay.b) > (base.a / overlay.a))) - ba = overlay.a * base.a + overlay.b * (1.0 - base.a) + base.b * (1.0 - overlay.a); - else - ba = (base.b * overlay.a * overlay.a) / overlay.b + overlay.b * (1.0 - base.a) + base.b * (1.0 - overlay.a); - - mediump float a = overlay.a + base.a - overlay.a * base.a; - - gl_FragColor = vec4(ra, ga, ba, a); - } -); -#else -NSString *const kGPUImageDivideBlendFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - vec4 base = texture2D(inputImageTexture, textureCoordinate); - vec4 overlay = texture2D(inputImageTexture2, textureCoordinate2); - - float ra; - if (overlay.a == 0.0 || ((base.r / overlay.r) > (base.a / overlay.a))) - ra = overlay.a * base.a + overlay.r * (1.0 - base.a) + base.r * (1.0 - overlay.a); - else - ra = (base.r * overlay.a * overlay.a) / overlay.r + overlay.r * (1.0 - base.a) + base.r * (1.0 - overlay.a); - - - float ga; - if (overlay.a == 0.0 || ((base.g / overlay.g) > (base.a / overlay.a))) - ga = overlay.a * base.a + overlay.g * (1.0 - base.a) + base.g * (1.0 - overlay.a); - else - ga = (base.g * overlay.a * overlay.a) / overlay.g + overlay.g * (1.0 - base.a) + base.g * (1.0 - overlay.a); - - - float ba; - if (overlay.a == 0.0 || ((base.b / overlay.b) > (base.a / overlay.a))) - ba = overlay.a * base.a + overlay.b * (1.0 - base.a) + base.b * (1.0 - overlay.a); - else - ba = (base.b * overlay.a * overlay.a) / overlay.b + overlay.b * (1.0 - base.a) + base.b * (1.0 - overlay.a); - - float a = overlay.a + base.a - overlay.a * base.a; - - gl_FragColor = vec4(ra, ga, ba, a); - } - ); -#endif - -@implementation GPUImageDivideBlendFilter - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageDivideBlendFragmentShaderString])) - { - return nil; - } - - return self; -} - -@end - diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageEmbossFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageEmbossFilter.h deleted file mode 100755 index dbd21e8..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageEmbossFilter.h +++ /dev/null @@ -1,8 +0,0 @@ -#import "GPUImage3x3ConvolutionFilter.h" - -@interface GPUImageEmbossFilter : GPUImage3x3ConvolutionFilter - -// The strength of the embossing, from 0.0 to 4.0, with 1.0 as the normal level -@property(readwrite, nonatomic) CGFloat intensity; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageEmbossFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageEmbossFilter.m deleted file mode 100755 index 6ba48cd..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageEmbossFilter.m +++ /dev/null @@ -1,49 +0,0 @@ -#import "GPUImageEmbossFilter.h" - -@implementation GPUImageEmbossFilter - -@synthesize intensity = _intensity; - -- (id)init; -{ - if (!(self = [super init])) - { - return nil; - } - - self.intensity = 1.0; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setIntensity:(CGFloat)newValue; -{ -// [(GPUImage3x3ConvolutionFilter *)filter setConvolutionMatrix:(GPUMatrix3x3){ -// {-2.0f, -1.0f, 0.0f}, -// {-1.0f, 1.0f, 1.0f}, -// { 0.0f, 1.0f, 2.0f} -// }]; - - _intensity = newValue; - - GPUMatrix3x3 newConvolutionMatrix; - newConvolutionMatrix.one.one = _intensity * (-2.0); - newConvolutionMatrix.one.two = -_intensity; - newConvolutionMatrix.one.three = 0.0f; - - newConvolutionMatrix.two.one = -_intensity; - newConvolutionMatrix.two.two = 1.0; - newConvolutionMatrix.two.three = _intensity; - - newConvolutionMatrix.three.one = 0.0f; - newConvolutionMatrix.three.two = _intensity; - newConvolutionMatrix.three.three = _intensity * 2.0; - - self.convolutionKernel = newConvolutionMatrix; -} - - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageErosionFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageErosionFilter.h deleted file mode 100644 index b311a26..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageErosionFilter.h +++ /dev/null @@ -1,11 +0,0 @@ -#import "GPUImageTwoPassTextureSamplingFilter.h" - -// For each pixel, this sets it to the minimum value of the red channel in a rectangular neighborhood extending out dilationRadius pixels from the center. -// This extends out dark features, and is most commonly used with black-and-white thresholded images. - -@interface GPUImageErosionFilter : GPUImageTwoPassTextureSamplingFilter - -// Acceptable values for erosionRadius, which sets the distance in pixels to sample out from the center, are 1, 2, 3, and 4. -- (id)initWithRadius:(NSUInteger)erosionRadius; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageErosionFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageErosionFilter.m deleted file mode 100644 index 05f4f28..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageErosionFilter.m +++ /dev/null @@ -1,312 +0,0 @@ -#import "GPUImageErosionFilter.h" -#import "GPUImageDilationFilter.h" - -@implementation GPUImageErosionFilter - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageErosionRadiusOneFragmentShaderString = SHADER_STRING -( - precision lowp float; - - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - float centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate).r; - float oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate).r; - float oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate).r; - - lowp float minValue = min(centerIntensity, oneStepPositiveIntensity); - minValue = min(minValue, oneStepNegativeIntensity); - - gl_FragColor = vec4(vec3(minValue), 1.0); - } -); - -NSString *const kGPUImageErosionRadiusTwoFragmentShaderString = SHADER_STRING -( - precision lowp float; - - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - varying vec2 twoStepsPositiveTextureCoordinate; - varying vec2 twoStepsNegativeTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - float centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate).r; - float oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate).r; - float oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate).r; - float twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate).r; - float twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate).r; - - lowp float minValue = min(centerIntensity, oneStepPositiveIntensity); - minValue = min(minValue, oneStepNegativeIntensity); - minValue = min(minValue, twoStepsPositiveIntensity); - minValue = min(minValue, twoStepsNegativeIntensity); - - gl_FragColor = vec4(vec3(minValue), 1.0); - } -); - -NSString *const kGPUImageErosionRadiusThreeFragmentShaderString = SHADER_STRING -( - precision lowp float; - - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - varying vec2 twoStepsPositiveTextureCoordinate; - varying vec2 twoStepsNegativeTextureCoordinate; - varying vec2 threeStepsPositiveTextureCoordinate; - varying vec2 threeStepsNegativeTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - float centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate).r; - float oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate).r; - float oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate).r; - float twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate).r; - float twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate).r; - float threeStepsPositiveIntensity = texture2D(inputImageTexture, threeStepsPositiveTextureCoordinate).r; - float threeStepsNegativeIntensity = texture2D(inputImageTexture, threeStepsNegativeTextureCoordinate).r; - - lowp float minValue = min(centerIntensity, oneStepPositiveIntensity); - minValue = min(minValue, oneStepNegativeIntensity); - minValue = min(minValue, twoStepsPositiveIntensity); - minValue = min(minValue, twoStepsNegativeIntensity); - minValue = min(minValue, threeStepsPositiveIntensity); - minValue = min(minValue, threeStepsNegativeIntensity); - - gl_FragColor = vec4(vec3(minValue), 1.0); - } -); - -NSString *const kGPUImageErosionRadiusFourFragmentShaderString = SHADER_STRING -( - precision lowp float; - - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - varying vec2 twoStepsPositiveTextureCoordinate; - varying vec2 twoStepsNegativeTextureCoordinate; - varying vec2 threeStepsPositiveTextureCoordinate; - varying vec2 threeStepsNegativeTextureCoordinate; - varying vec2 fourStepsPositiveTextureCoordinate; - varying vec2 fourStepsNegativeTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - float centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate).r; - float oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate).r; - float oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate).r; - float twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate).r; - float twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate).r; - float threeStepsPositiveIntensity = texture2D(inputImageTexture, threeStepsPositiveTextureCoordinate).r; - float threeStepsNegativeIntensity = texture2D(inputImageTexture, threeStepsNegativeTextureCoordinate).r; - float fourStepsPositiveIntensity = texture2D(inputImageTexture, fourStepsPositiveTextureCoordinate).r; - float fourStepsNegativeIntensity = texture2D(inputImageTexture, fourStepsNegativeTextureCoordinate).r; - - lowp float minValue = min(centerIntensity, oneStepPositiveIntensity); - minValue = min(minValue, oneStepNegativeIntensity); - minValue = min(minValue, twoStepsPositiveIntensity); - minValue = min(minValue, twoStepsNegativeIntensity); - minValue = min(minValue, threeStepsPositiveIntensity); - minValue = min(minValue, threeStepsNegativeIntensity); - minValue = min(minValue, fourStepsPositiveIntensity); - minValue = min(minValue, fourStepsNegativeIntensity); - - gl_FragColor = vec4(vec3(minValue), 1.0); - } -); -#else -NSString *const kGPUImageErosionRadiusOneFragmentShaderString = SHADER_STRING -( - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - float centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate).r; - float oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate).r; - float oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate).r; - - float minValue = min(centerIntensity, oneStepPositiveIntensity); - minValue = min(minValue, oneStepNegativeIntensity); - - gl_FragColor = vec4(vec3(minValue), 1.0); - } -); - -NSString *const kGPUImageErosionRadiusTwoFragmentShaderString = SHADER_STRING -( - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - varying vec2 twoStepsPositiveTextureCoordinate; - varying vec2 twoStepsNegativeTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - float centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate).r; - float oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate).r; - float oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate).r; - float twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate).r; - float twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate).r; - - float minValue = min(centerIntensity, oneStepPositiveIntensity); - minValue = min(minValue, oneStepNegativeIntensity); - minValue = min(minValue, twoStepsPositiveIntensity); - minValue = min(minValue, twoStepsNegativeIntensity); - - gl_FragColor = vec4(vec3(minValue), 1.0); - } -); - -NSString *const kGPUImageErosionRadiusThreeFragmentShaderString = SHADER_STRING -( - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - varying vec2 twoStepsPositiveTextureCoordinate; - varying vec2 twoStepsNegativeTextureCoordinate; - varying vec2 threeStepsPositiveTextureCoordinate; - varying vec2 threeStepsNegativeTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - float centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate).r; - float oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate).r; - float oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate).r; - float twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate).r; - float twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate).r; - float threeStepsPositiveIntensity = texture2D(inputImageTexture, threeStepsPositiveTextureCoordinate).r; - float threeStepsNegativeIntensity = texture2D(inputImageTexture, threeStepsNegativeTextureCoordinate).r; - - float minValue = min(centerIntensity, oneStepPositiveIntensity); - minValue = min(minValue, oneStepNegativeIntensity); - minValue = min(minValue, twoStepsPositiveIntensity); - minValue = min(minValue, twoStepsNegativeIntensity); - minValue = min(minValue, threeStepsPositiveIntensity); - minValue = min(minValue, threeStepsNegativeIntensity); - - gl_FragColor = vec4(vec3(minValue), 1.0); - } -); - -NSString *const kGPUImageErosionRadiusFourFragmentShaderString = SHADER_STRING -( - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - varying vec2 twoStepsPositiveTextureCoordinate; - varying vec2 twoStepsNegativeTextureCoordinate; - varying vec2 threeStepsPositiveTextureCoordinate; - varying vec2 threeStepsNegativeTextureCoordinate; - varying vec2 fourStepsPositiveTextureCoordinate; - varying vec2 fourStepsNegativeTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - float centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate).r; - float oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate).r; - float oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate).r; - float twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate).r; - float twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate).r; - float threeStepsPositiveIntensity = texture2D(inputImageTexture, threeStepsPositiveTextureCoordinate).r; - float threeStepsNegativeIntensity = texture2D(inputImageTexture, threeStepsNegativeTextureCoordinate).r; - float fourStepsPositiveIntensity = texture2D(inputImageTexture, fourStepsPositiveTextureCoordinate).r; - float fourStepsNegativeIntensity = texture2D(inputImageTexture, fourStepsNegativeTextureCoordinate).r; - - float minValue = min(centerIntensity, oneStepPositiveIntensity); - minValue = min(minValue, oneStepNegativeIntensity); - minValue = min(minValue, twoStepsPositiveIntensity); - minValue = min(minValue, twoStepsNegativeIntensity); - minValue = min(minValue, threeStepsPositiveIntensity); - minValue = min(minValue, threeStepsNegativeIntensity); - minValue = min(minValue, fourStepsPositiveIntensity); - minValue = min(minValue, fourStepsNegativeIntensity); - - gl_FragColor = vec4(vec3(minValue), 1.0); - } -); -#endif - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)initWithRadius:(NSUInteger)dilationRadius; -{ - NSString *fragmentShaderForThisRadius = nil; - NSString *vertexShaderForThisRadius = nil; - - switch (dilationRadius) - { - case 0: - case 1: - { - vertexShaderForThisRadius = kGPUImageDilationRadiusOneVertexShaderString; - fragmentShaderForThisRadius = kGPUImageErosionRadiusOneFragmentShaderString; - }; break; - case 2: - { - vertexShaderForThisRadius = kGPUImageDilationRadiusTwoVertexShaderString; - fragmentShaderForThisRadius = kGPUImageErosionRadiusTwoFragmentShaderString; - }; break; - case 3: - { - vertexShaderForThisRadius = kGPUImageDilationRadiusThreeVertexShaderString; - fragmentShaderForThisRadius = kGPUImageErosionRadiusThreeFragmentShaderString; - }; break; - case 4: - { - vertexShaderForThisRadius = kGPUImageDilationRadiusFourVertexShaderString; - fragmentShaderForThisRadius = kGPUImageErosionRadiusFourFragmentShaderString; - }; break; - default: - { - vertexShaderForThisRadius = kGPUImageDilationRadiusFourVertexShaderString; - fragmentShaderForThisRadius = kGPUImageErosionRadiusFourFragmentShaderString; - }; break; - } - - if (!(self = [super initWithFirstStageVertexShaderFromString:vertexShaderForThisRadius firstStageFragmentShaderFromString:fragmentShaderForThisRadius secondStageVertexShaderFromString:vertexShaderForThisRadius secondStageFragmentShaderFromString:fragmentShaderForThisRadius])) - { - return nil; - } - - return self; -} - -- (id)init; -{ - if (!(self = [self initWithRadius:1])) - { - return nil; - } - - return self; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageExclusionBlendFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageExclusionBlendFilter.h deleted file mode 100755 index f7c83f5..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageExclusionBlendFilter.h +++ /dev/null @@ -1,7 +0,0 @@ -#import "GPUImageTwoInputFilter.h" - -@interface GPUImageExclusionBlendFilter : GPUImageTwoInputFilter -{ -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageExclusionBlendFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageExclusionBlendFilter.m deleted file mode 100755 index c364159..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageExclusionBlendFilter.m +++ /dev/null @@ -1,56 +0,0 @@ -#import "GPUImageExclusionBlendFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageExclusionBlendFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - varying highp vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - mediump vec4 base = texture2D(inputImageTexture, textureCoordinate); - mediump vec4 overlay = texture2D(inputImageTexture2, textureCoordinate2); - - // Dca = (Sca.Da + Dca.Sa - 2.Sca.Dca) + Sca.(1 - Da) + Dca.(1 - Sa) - - gl_FragColor = vec4((overlay.rgb * base.a + base.rgb * overlay.a - 2.0 * overlay.rgb * base.rgb) + overlay.rgb * (1.0 - base.a) + base.rgb * (1.0 - overlay.a), base.a); - } -); -#else -NSString *const kGPUImageExclusionBlendFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - vec4 base = texture2D(inputImageTexture, textureCoordinate); - vec4 overlay = texture2D(inputImageTexture2, textureCoordinate2); - - // Dca = (Sca.Da + Dca.Sa - 2.Sca.Dca) + Sca.(1 - Da) + Dca.(1 - Sa) - - gl_FragColor = vec4((overlay.rgb * base.a + base.rgb * overlay.a - 2.0 * overlay.rgb * base.rgb) + overlay.rgb * (1.0 - base.a) + base.rgb * (1.0 - overlay.a), base.a); - } - ); -#endif - -@implementation GPUImageExclusionBlendFilter - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageExclusionBlendFragmentShaderString])) - { - return nil; - } - - return self; -} - -@end - diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageExposureFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageExposureFilter.h deleted file mode 100755 index 886a052..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageExposureFilter.h +++ /dev/null @@ -1,11 +0,0 @@ -#import "GPUImageFilter.h" - -@interface GPUImageExposureFilter : GPUImageFilter -{ - GLint exposureUniform; -} - -// Exposure ranges from -10.0 to 10.0, with 0.0 as the normal level -@property(readwrite, nonatomic) CGFloat exposure; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageExposureFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageExposureFilter.m deleted file mode 100755 index d5ee2c9..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageExposureFilter.m +++ /dev/null @@ -1,66 +0,0 @@ -#import "GPUImageExposureFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageExposureFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform highp float exposure; - - void main() - { - highp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - - gl_FragColor = vec4(textureColor.rgb * pow(2.0, exposure), textureColor.w); - } -); -#else -NSString *const kGPUImageExposureFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform float exposure; - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - - gl_FragColor = vec4(textureColor.rgb * pow(2.0, exposure), textureColor.w); - } -); -#endif - -@implementation GPUImageExposureFilter - -@synthesize exposure = _exposure; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageExposureFragmentShaderString])) - { - return nil; - } - - exposureUniform = [filterProgram uniformIndex:@"exposure"]; - self.exposure = 0.0; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setExposure:(CGFloat)newValue; -{ - _exposure = newValue; - - [self setFloat:_exposure forUniform:exposureUniform program:filterProgram]; -} - -@end - diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageFASTCornerDetectionFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageFASTCornerDetectionFilter.h deleted file mode 100644 index 86e7cf4..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageFASTCornerDetectionFilter.h +++ /dev/null @@ -1,33 +0,0 @@ -#import "GPUImageFilterGroup.h" - -@class GPUImageGrayscaleFilter; -@class GPUImage3x3TextureSamplingFilter; -@class GPUImageNonMaximumSuppressionFilter; - -/* - An implementation of the Features from Accelerated Segment Test (FAST) feature detector as described in the following publications: - - E. Rosten and T. Drummond. Fusing points and lines for high performance tracking. IEEE International Conference on Computer Vision, 2005. - E. Rosten and T. Drummond. Machine learning for high-speed corner detection. European Conference on Computer Vision, 2006. - - For more about the FAST feature detector, see the resources here: - http://www.edwardrosten.com/work/fast.html - */ - -typedef enum { kGPUImageFAST12Contiguous, kGPUImageFAST12ContiguousNonMaximumSuppressed} GPUImageFASTDetectorType; - -@interface GPUImageFASTCornerDetectionFilter : GPUImageFilterGroup -{ - GPUImageGrayscaleFilter *luminanceReductionFilter; - GPUImage3x3TextureSamplingFilter *featureDetectionFilter; - GPUImageNonMaximumSuppressionFilter *nonMaximumSuppressionFilter; -// Generate a lookup texture based on the bit patterns - -// Step 1: convert to monochrome if necessary -// Step 2: do a lookup at each pixel based on the Bresenham circle, encode comparison in two color components -// Step 3: do non-maximum suppression of close corner points -} - -- (id)initWithFASTDetectorVariant:(GPUImageFASTDetectorType)detectorType; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageFASTCornerDetectionFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageFASTCornerDetectionFilter.m deleted file mode 100644 index b04a24a..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageFASTCornerDetectionFilter.m +++ /dev/null @@ -1,89 +0,0 @@ -#import "GPUImageFASTCornerDetectionFilter.h" - -#import "GPUImageGrayscaleFilter.h" -#import "GPUImage3x3TextureSamplingFilter.h" -#import "GPUImageNonMaximumSuppressionFilter.h" - -// 14 total texture coordinates from vertex shader for non-dependent reads -// 3 texture coordinates for dependent reads, then - -NSString *const kGPUImageFASTDetectorFragmentShaderString = SHADER_STRING -( - precision highp float; - - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - uniform sampler2D inputImageTexture; - uniform sampler2D lookupTable; - - void main() - { - lowp float centerIntensity = texture2D(inputImageTexture, textureCoordinate).r; - lowp float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; - lowp float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r; - lowp float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r; - lowp float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; - lowp float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r; - lowp float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r; - lowp float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r; - lowp float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r; - - lowp float byteTally = 1.0 / 255.0 * step(centerIntensity, topRightIntensity); - byteTally += 2.0 / 255.0 * step(centerIntensity, topIntensity); - byteTally += 4.0 / 255.0 * step(centerIntensity, topLeftIntensity); - byteTally += 8.0 / 255.0 * step(centerIntensity, leftIntensity); - byteTally += 16.0 / 255.0 * step(centerIntensity, bottomLeftIntensity); - byteTally += 32.0 / 255.0 * step(centerIntensity, bottomIntensity); - byteTally += 64.0 / 255.0 * step(centerIntensity, bottomRightIntensity); - byteTally += 128.0 / 255.0 * step(centerIntensity, rightIntensity); - - // TODO: Replace the above with a dot product and two vec4s - // TODO: Apply step to a matrix, rather than individually - - gl_FragColor = vec4(byteTally, byteTally, byteTally, 1.0); - } - ); - - -@implementation GPUImageFASTCornerDetectionFilter - -- (id)init; -{ - if (!(self = [self initWithFASTDetectorVariant:kGPUImageFAST12ContiguousNonMaximumSuppressed])) - { - return nil; - } - - return self; -} - -- (id)initWithFASTDetectorVariant:(GPUImageFASTDetectorType)detectorType; -{ - if (!(self = [super init])) - { - return nil; - } - -// [derivativeFilter addTarget:blurFilter]; -// [blurFilter addTarget:harrisCornerDetectionFilter]; -// [harrisCornerDetectionFilter addTarget:nonMaximumSuppressionFilter]; - // [simpleThresholdFilter addTarget:colorPackingFilter]; - -// self.initialFilters = [NSArray arrayWithObjects:derivativeFilter, nil]; - // self.terminalFilter = colorPackingFilter; -// self.terminalFilter = nonMaximumSuppressionFilter; - - return self; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageFalseColorFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageFalseColorFilter.h deleted file mode 100644 index cb0b82f..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageFalseColorFilter.h +++ /dev/null @@ -1,15 +0,0 @@ -#import "GPUImageFilter.h" - -@interface GPUImageFalseColorFilter : GPUImageFilter -{ - GLint firstColorUniform, secondColorUniform; -} - -// The first and second colors specify what colors replace the dark and light areas of the image, respectively. The defaults are (0.0, 0.0, 0.5) amd (1.0, 0.0, 0.0). -@property(readwrite, nonatomic) GPUVector4 firstColor; -@property(readwrite, nonatomic) GPUVector4 secondColor; - -- (void)setFirstColorRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent; -- (void)setSecondColorRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageFalseColorFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageFalseColorFilter.m deleted file mode 100644 index f514dba..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageFalseColorFilter.m +++ /dev/null @@ -1,101 +0,0 @@ -#import "GPUImageFalseColorFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUFalseColorFragmentShaderString = SHADER_STRING -( - precision lowp float; - - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform float intensity; - uniform vec3 firstColor; - uniform vec3 secondColor; - - const mediump vec3 luminanceWeighting = vec3(0.2125, 0.7154, 0.0721); - - void main() - { - lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - float luminance = dot(textureColor.rgb, luminanceWeighting); - - gl_FragColor = vec4( mix(firstColor.rgb, secondColor.rgb, luminance), textureColor.a); - } -); -#else -NSString *const kGPUFalseColorFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform float intensity; - uniform vec3 firstColor; - uniform vec3 secondColor; - - const vec3 luminanceWeighting = vec3(0.2125, 0.7154, 0.0721); - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - float luminance = dot(textureColor.rgb, luminanceWeighting); - - gl_FragColor = vec4( mix(firstColor.rgb, secondColor.rgb, luminance), textureColor.a); - } -); -#endif - - -@implementation GPUImageFalseColorFilter - -@synthesize secondColor = _secondColor; -@synthesize firstColor = _firstColor; - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUFalseColorFragmentShaderString])) - { - return nil; - } - - firstColorUniform = [filterProgram uniformIndex:@"firstColor"]; - secondColorUniform = [filterProgram uniformIndex:@"secondColor"]; - - self.firstColor = (GPUVector4){0.0f, 0.0f, 0.5f, 1.0f}; - self.secondColor = (GPUVector4){1.0f, 0.0f, 0.0f, 1.0f}; - - return self; -} - - -#pragma mark - -#pragma mark Accessors - -- (void)setFirstColor:(GPUVector4)newValue; -{ - _firstColor = newValue; - - [self setFirstColorRed:_firstColor.one green:_firstColor.two blue:_firstColor.three]; -} - -- (void)setSecondColor:(GPUVector4)newValue; -{ - _secondColor = newValue; - - [self setSecondColorRed:_secondColor.one green:_secondColor.two blue:_secondColor.three]; -} - -- (void)setFirstColorRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent; -{ - GPUVector3 firstColor = {redComponent, greenComponent, blueComponent}; - - [self setVec3:firstColor forUniform:firstColorUniform program:filterProgram]; -} - -- (void)setSecondColorRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent; -{ - GPUVector3 secondColor = {redComponent, greenComponent, blueComponent}; - - [self setVec3:secondColor forUniform:secondColorUniform program:filterProgram]; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageFilter.h deleted file mode 100755 index 0171aa8..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageFilter.h +++ /dev/null @@ -1,134 +0,0 @@ -#import "GPUImageOutput.h" - -#define STRINGIZE(x) #x -#define STRINGIZE2(x) STRINGIZE(x) -#define SHADER_STRING(text) @ STRINGIZE2(text) - -#define GPUImageHashIdentifier # -#define GPUImageWrappedLabel(x) x -#define GPUImageEscapedHashIdentifier(a) GPUImageWrappedLabel(GPUImageHashIdentifier)a - -extern NSString *const kGPUImageVertexShaderString; -extern NSString *const kGPUImagePassthroughFragmentShaderString; - -struct GPUVector4 { - GLfloat one; - GLfloat two; - GLfloat three; - GLfloat four; -}; -typedef struct GPUVector4 GPUVector4; - -struct GPUVector3 { - GLfloat one; - GLfloat two; - GLfloat three; -}; -typedef struct GPUVector3 GPUVector3; - -struct GPUMatrix4x4 { - GPUVector4 one; - GPUVector4 two; - GPUVector4 three; - GPUVector4 four; -}; -typedef struct GPUMatrix4x4 GPUMatrix4x4; - -struct GPUMatrix3x3 { - GPUVector3 one; - GPUVector3 two; - GPUVector3 three; -}; -typedef struct GPUMatrix3x3 GPUMatrix3x3; - -/** GPUImage's base filter class - - Filters and other subsequent elements in the chain conform to the GPUImageInput protocol, which lets them take in the supplied or processed texture from the previous link in the chain and do something with it. Objects one step further down the chain are considered targets, and processing can be branched by adding multiple targets to a single output or filter. - */ -@interface GPUImageFilter : GPUImageOutput -{ - GPUImageFramebuffer *firstInputFramebuffer; - - GLProgram *filterProgram; - GLint filterPositionAttribute, filterTextureCoordinateAttribute; - GLint filterInputTextureUniform; - GLfloat backgroundColorRed, backgroundColorGreen, backgroundColorBlue, backgroundColorAlpha; - - BOOL isEndProcessing; - - CGSize currentFilterSize; - GPUImageRotationMode inputRotation; - - BOOL currentlyReceivingMonochromeInput; - - NSMutableDictionary *uniformStateRestorationBlocks; - dispatch_semaphore_t imageCaptureSemaphore; -} - -@property(readonly) CVPixelBufferRef renderTarget; -@property(readwrite, nonatomic) BOOL preventRendering; -@property(readwrite, nonatomic) BOOL currentlyReceivingMonochromeInput; - -/// @name Initialization and teardown - -/** - Initialize with vertex and fragment shaders - - You make take advantage of the SHADER_STRING macro to write your shaders in-line. - @param vertexShaderString Source code of the vertex shader to use - @param fragmentShaderString Source code of the fragment shader to use - */ -- (id)initWithVertexShaderFromString:(NSString *)vertexShaderString fragmentShaderFromString:(NSString *)fragmentShaderString; - -/** - Initialize with a fragment shader - - You may take advantage of the SHADER_STRING macro to write your shader in-line. - @param fragmentShaderString Source code of fragment shader to use - */ -- (id)initWithFragmentShaderFromString:(NSString *)fragmentShaderString; -/** - Initialize with a fragment shader - @param fragmentShaderFilename Filename of fragment shader to load - */ -- (id)initWithFragmentShaderFromFile:(NSString *)fragmentShaderFilename; -- (void)initializeAttributes; -- (void)setupFilterForSize:(CGSize)filterFrameSize; -- (CGSize)rotatedSize:(CGSize)sizeToRotate forIndex:(NSInteger)textureIndex; -- (CGPoint)rotatedPoint:(CGPoint)pointToRotate forRotation:(GPUImageRotationMode)rotation; - -/// @name Managing the display FBOs -/** Size of the frame buffer object - */ -- (CGSize)sizeOfFBO; - -/// @name Rendering -+ (const GLfloat *)textureCoordinatesForRotation:(GPUImageRotationMode)rotationMode; -- (void)renderToTextureWithVertices:(const GLfloat *)vertices textureCoordinates:(const GLfloat *)textureCoordinates; -- (void)informTargetsAboutNewFrameAtTime:(CMTime)frameTime; -- (CGSize)outputFrameSize; - -/// @name Input parameters -- (void)setBackgroundColorRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent alpha:(GLfloat)alphaComponent; -- (void)setInteger:(GLint)newInteger forUniformName:(NSString *)uniformName; -- (void)setFloat:(GLfloat)newFloat forUniformName:(NSString *)uniformName; -- (void)setSize:(CGSize)newSize forUniformName:(NSString *)uniformName; -- (void)setPoint:(CGPoint)newPoint forUniformName:(NSString *)uniformName; -- (void)setFloatVec3:(GPUVector3)newVec3 forUniformName:(NSString *)uniformName; -- (void)setFloatVec4:(GPUVector4)newVec4 forUniform:(NSString *)uniformName; -- (void)setFloatArray:(GLfloat *)array length:(GLsizei)count forUniform:(NSString*)uniformName; - -- (void)setMatrix3f:(GPUMatrix3x3)matrix forUniform:(GLint)uniform program:(GLProgram *)shaderProgram; -- (void)setMatrix4f:(GPUMatrix4x4)matrix forUniform:(GLint)uniform program:(GLProgram *)shaderProgram; -- (void)setFloat:(GLfloat)floatValue forUniform:(GLint)uniform program:(GLProgram *)shaderProgram; -- (void)setPoint:(CGPoint)pointValue forUniform:(GLint)uniform program:(GLProgram *)shaderProgram; -- (void)setSize:(CGSize)sizeValue forUniform:(GLint)uniform program:(GLProgram *)shaderProgram; -- (void)setVec3:(GPUVector3)vectorValue forUniform:(GLint)uniform program:(GLProgram *)shaderProgram; -- (void)setVec4:(GPUVector4)vectorValue forUniform:(GLint)uniform program:(GLProgram *)shaderProgram; -- (void)setFloatArray:(GLfloat *)arrayValue length:(GLsizei)arrayLength forUniform:(GLint)uniform program:(GLProgram *)shaderProgram; -- (void)setInteger:(GLint)intValue forUniform:(GLint)uniform program:(GLProgram *)shaderProgram; - -- (void)setAndExecuteUniformStateCallbackAtIndex:(GLint)uniform forProgram:(GLProgram *)shaderProgram toBlock:(dispatch_block_t)uniformStateBlock; -- (void)setUniformsForProgramAtIndex:(NSUInteger)programIndex; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageFilter.m deleted file mode 100755 index 406d707..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageFilter.m +++ /dev/null @@ -1,753 +0,0 @@ -#import "GPUImageFilter.h" -#import "GPUImagePicture.h" -#import - -// Hardcode the vertex shader for standard filters, but this can be overridden -NSString *const kGPUImageVertexShaderString = SHADER_STRING -( - attribute vec4 position; - attribute vec4 inputTextureCoordinate; - - varying vec2 textureCoordinate; - - void main() - { - gl_Position = position; - textureCoordinate = inputTextureCoordinate.xy; - } - ); - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - -NSString *const kGPUImagePassthroughFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - gl_FragColor = texture2D(inputImageTexture, textureCoordinate); - } -); - -#else - -NSString *const kGPUImagePassthroughFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - gl_FragColor = texture2D(inputImageTexture, textureCoordinate); - } -); -#endif - - -@implementation GPUImageFilter - -@synthesize preventRendering = _preventRendering; -@synthesize currentlyReceivingMonochromeInput; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)initWithVertexShaderFromString:(NSString *)vertexShaderString fragmentShaderFromString:(NSString *)fragmentShaderString; -{ - if (!(self = [super init])) - { - return nil; - } - - uniformStateRestorationBlocks = [NSMutableDictionary dictionaryWithCapacity:10]; - _preventRendering = NO; - currentlyReceivingMonochromeInput = NO; - inputRotation = kGPUImageNoRotation; - backgroundColorRed = 0.0; - backgroundColorGreen = 0.0; - backgroundColorBlue = 0.0; - backgroundColorAlpha = 0.0; - imageCaptureSemaphore = dispatch_semaphore_create(0); - dispatch_semaphore_signal(imageCaptureSemaphore); - - runSynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext useImageProcessingContext]; - - filterProgram = [[GPUImageContext sharedImageProcessingContext] programForVertexShaderString:vertexShaderString fragmentShaderString:fragmentShaderString]; - - if (!filterProgram.initialized) - { - [self initializeAttributes]; - - if (![filterProgram link]) - { - NSString *progLog = [filterProgram programLog]; - NSLog(@"Program link log: %@", progLog); - NSString *fragLog = [filterProgram fragmentShaderLog]; - NSLog(@"Fragment shader compile log: %@", fragLog); - NSString *vertLog = [filterProgram vertexShaderLog]; - NSLog(@"Vertex shader compile log: %@", vertLog); - filterProgram = nil; - NSAssert(NO, @"Filter shader link failed"); - } - } - - filterPositionAttribute = [filterProgram attributeIndex:@"position"]; - filterTextureCoordinateAttribute = [filterProgram attributeIndex:@"inputTextureCoordinate"]; - filterInputTextureUniform = [filterProgram uniformIndex:@"inputImageTexture"]; // This does assume a name of "inputImageTexture" for the fragment shader - - [GPUImageContext setActiveShaderProgram:filterProgram]; - - glEnableVertexAttribArray(filterPositionAttribute); - glEnableVertexAttribArray(filterTextureCoordinateAttribute); - }); - - return self; -} - -- (id)initWithFragmentShaderFromString:(NSString *)fragmentShaderString; -{ - if (!(self = [self initWithVertexShaderFromString:kGPUImageVertexShaderString fragmentShaderFromString:fragmentShaderString])) - { - return nil; - } - - return self; -} - -- (id)initWithFragmentShaderFromFile:(NSString *)fragmentShaderFilename; -{ - NSString *fragmentShaderPathname = [[NSBundle mainBundle] pathForResource:fragmentShaderFilename ofType:@"fsh"]; - NSString *fragmentShaderString = [NSString stringWithContentsOfFile:fragmentShaderPathname encoding:NSUTF8StringEncoding error:nil]; - - if (!(self = [self initWithFragmentShaderFromString:fragmentShaderString])) - { - return nil; - } - - return self; -} - -- (id)init; -{ - if (!(self = [self initWithFragmentShaderFromString:kGPUImagePassthroughFragmentShaderString])) - { - return nil; - } - - return self; -} - -- (void)initializeAttributes; -{ - [filterProgram addAttribute:@"position"]; - [filterProgram addAttribute:@"inputTextureCoordinate"]; - - // Override this, calling back to this super method, in order to add new attributes to your vertex shader -} - -- (void)setupFilterForSize:(CGSize)filterFrameSize; -{ - // This is where you can override to provide some custom setup, if your filter has a size-dependent element -} - -- (void)dealloc -{ -#if !OS_OBJECT_USE_OBJC - if (imageCaptureSemaphore != NULL) - { - dispatch_release(imageCaptureSemaphore); - } -#endif - -} - -#pragma mark - -#pragma mark Still image processing - -- (void)useNextFrameForImageCapture; -{ - usingNextFrameForImageCapture = YES; - - // Set the semaphore high, if it isn't already - if (dispatch_semaphore_wait(imageCaptureSemaphore, DISPATCH_TIME_NOW) != 0) - { - return; - } -} - -- (CGImageRef)newCGImageFromCurrentlyProcessedOutput -{ - // Give it three seconds to process, then abort if they forgot to set up the image capture properly - double timeoutForImageCapture = 3.0; - dispatch_time_t convertedTimeout = dispatch_time(DISPATCH_TIME_NOW, timeoutForImageCapture * NSEC_PER_SEC); - - if (dispatch_semaphore_wait(imageCaptureSemaphore, convertedTimeout) != 0) - { - return NULL; - } - - GPUImageFramebuffer* framebuffer = [self framebufferForOutput]; - - usingNextFrameForImageCapture = NO; - dispatch_semaphore_signal(imageCaptureSemaphore); - - CGImageRef image = [framebuffer newCGImageFromFramebufferContents]; - return image; -} - -#pragma mark - -#pragma mark Managing the display FBOs - -- (CGSize)sizeOfFBO; -{ - CGSize outputSize = [self maximumOutputSize]; - if ( (CGSizeEqualToSize(outputSize, CGSizeZero)) || (inputTextureSize.width < outputSize.width) ) - { - return inputTextureSize; - } - else - { - return outputSize; - } -} - -#pragma mark - -#pragma mark Rendering - -+ (const GLfloat *)textureCoordinatesForRotation:(GPUImageRotationMode)rotationMode; -{ - static const GLfloat noRotationTextureCoordinates[] = { - 0.0f, 0.0f, - 1.0f, 0.0f, - 0.0f, 1.0f, - 1.0f, 1.0f, - }; - - static const GLfloat rotateLeftTextureCoordinates[] = { - 1.0f, 0.0f, - 1.0f, 1.0f, - 0.0f, 0.0f, - 0.0f, 1.0f, - }; - - static const GLfloat rotateRightTextureCoordinates[] = { - 0.0f, 1.0f, - 0.0f, 0.0f, - 1.0f, 1.0f, - 1.0f, 0.0f, - }; - - static const GLfloat verticalFlipTextureCoordinates[] = { - 0.0f, 1.0f, - 1.0f, 1.0f, - 0.0f, 0.0f, - 1.0f, 0.0f, - }; - - static const GLfloat horizontalFlipTextureCoordinates[] = { - 1.0f, 0.0f, - 0.0f, 0.0f, - 1.0f, 1.0f, - 0.0f, 1.0f, - }; - - static const GLfloat rotateRightVerticalFlipTextureCoordinates[] = { - 0.0f, 0.0f, - 0.0f, 1.0f, - 1.0f, 0.0f, - 1.0f, 1.0f, - }; - - static const GLfloat rotateRightHorizontalFlipTextureCoordinates[] = { - 1.0f, 1.0f, - 1.0f, 0.0f, - 0.0f, 1.0f, - 0.0f, 0.0f, - }; - - static const GLfloat rotate180TextureCoordinates[] = { - 1.0f, 1.0f, - 0.0f, 1.0f, - 1.0f, 0.0f, - 0.0f, 0.0f, - }; - - switch(rotationMode) - { - case kGPUImageNoRotation: return noRotationTextureCoordinates; - case kGPUImageRotateLeft: return rotateLeftTextureCoordinates; - case kGPUImageRotateRight: return rotateRightTextureCoordinates; - case kGPUImageFlipVertical: return verticalFlipTextureCoordinates; - case kGPUImageFlipHorizonal: return horizontalFlipTextureCoordinates; - case kGPUImageRotateRightFlipVertical: return rotateRightVerticalFlipTextureCoordinates; - case kGPUImageRotateRightFlipHorizontal: return rotateRightHorizontalFlipTextureCoordinates; - case kGPUImageRotate180: return rotate180TextureCoordinates; - } -} - -- (void)renderToTextureWithVertices:(const GLfloat *)vertices textureCoordinates:(const GLfloat *)textureCoordinates; -{ - if (self.preventRendering) - { - [firstInputFramebuffer unlock]; - return; - } - - [GPUImageContext setActiveShaderProgram:filterProgram]; - - outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:[self sizeOfFBO] textureOptions:self.outputTextureOptions onlyTexture:NO]; - [outputFramebuffer activateFramebuffer]; - if (usingNextFrameForImageCapture) - { - [outputFramebuffer lock]; - } - - [self setUniformsForProgramAtIndex:0]; - - glClearColor(backgroundColorRed, backgroundColorGreen, backgroundColorBlue, backgroundColorAlpha); - glClear(GL_COLOR_BUFFER_BIT); - - glActiveTexture(GL_TEXTURE2); - glBindTexture(GL_TEXTURE_2D, [firstInputFramebuffer texture]); - - glUniform1i(filterInputTextureUniform, 2); - - glVertexAttribPointer(filterPositionAttribute, 2, GL_FLOAT, 0, 0, vertices); - glVertexAttribPointer(filterTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, textureCoordinates); - - glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); - - [firstInputFramebuffer unlock]; - - if (usingNextFrameForImageCapture) - { - dispatch_semaphore_signal(imageCaptureSemaphore); - } -} - -- (void)informTargetsAboutNewFrameAtTime:(CMTime)frameTime; -{ - if (self.frameProcessingCompletionBlock != NULL) - { - self.frameProcessingCompletionBlock(self, frameTime); - } - - // Get all targets the framebuffer so they can grab a lock on it - for (id currentTarget in targets) - { - if (currentTarget != self.targetToIgnoreForUpdates) - { - NSInteger indexOfObject = [targets indexOfObject:currentTarget]; - NSInteger textureIndex = [[targetTextureIndices objectAtIndex:indexOfObject] integerValue]; - - [self setInputFramebufferForTarget:currentTarget atIndex:textureIndex]; - [currentTarget setInputSize:[self outputFrameSize] atIndex:textureIndex]; - } - } - - // Release our hold so it can return to the cache immediately upon processing - [[self framebufferForOutput] unlock]; - - if (usingNextFrameForImageCapture) - { -// usingNextFrameForImageCapture = NO; - } - else - { - [self removeOutputFramebuffer]; - } - - // Trigger processing last, so that our unlock comes first in serial execution, avoiding the need for a callback - for (id currentTarget in targets) - { - if (currentTarget != self.targetToIgnoreForUpdates) - { - NSInteger indexOfObject = [targets indexOfObject:currentTarget]; - NSInteger textureIndex = [[targetTextureIndices objectAtIndex:indexOfObject] integerValue]; - [currentTarget newFrameReadyAtTime:frameTime atIndex:textureIndex]; - } - } -} - -- (CGSize)outputFrameSize; -{ - return inputTextureSize; -} - -#pragma mark - -#pragma mark Input parameters - -- (void)setBackgroundColorRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent alpha:(GLfloat)alphaComponent; -{ - backgroundColorRed = redComponent; - backgroundColorGreen = greenComponent; - backgroundColorBlue = blueComponent; - backgroundColorAlpha = alphaComponent; -} - -- (void)setInteger:(GLint)newInteger forUniformName:(NSString *)uniformName; -{ - GLint uniformIndex = [filterProgram uniformIndex:uniformName]; - [self setInteger:newInteger forUniform:uniformIndex program:filterProgram]; -} - -- (void)setFloat:(GLfloat)newFloat forUniformName:(NSString *)uniformName; -{ - GLint uniformIndex = [filterProgram uniformIndex:uniformName]; - [self setFloat:newFloat forUniform:uniformIndex program:filterProgram]; -} - -- (void)setSize:(CGSize)newSize forUniformName:(NSString *)uniformName; -{ - GLint uniformIndex = [filterProgram uniformIndex:uniformName]; - [self setSize:newSize forUniform:uniformIndex program:filterProgram]; -} - -- (void)setPoint:(CGPoint)newPoint forUniformName:(NSString *)uniformName; -{ - GLint uniformIndex = [filterProgram uniformIndex:uniformName]; - [self setPoint:newPoint forUniform:uniformIndex program:filterProgram]; -} - -- (void)setFloatVec3:(GPUVector3)newVec3 forUniformName:(NSString *)uniformName; -{ - GLint uniformIndex = [filterProgram uniformIndex:uniformName]; - [self setVec3:newVec3 forUniform:uniformIndex program:filterProgram]; -} - -- (void)setFloatVec4:(GPUVector4)newVec4 forUniform:(NSString *)uniformName; -{ - GLint uniformIndex = [filterProgram uniformIndex:uniformName]; - [self setVec4:newVec4 forUniform:uniformIndex program:filterProgram]; -} - -- (void)setFloatArray:(GLfloat *)array length:(GLsizei)count forUniform:(NSString*)uniformName -{ - GLint uniformIndex = [filterProgram uniformIndex:uniformName]; - - [self setFloatArray:array length:count forUniform:uniformIndex program:filterProgram]; -} - -- (void)setMatrix3f:(GPUMatrix3x3)matrix forUniform:(GLint)uniform program:(GLProgram *)shaderProgram; -{ - runAsynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext setActiveShaderProgram:shaderProgram]; - [self setAndExecuteUniformStateCallbackAtIndex:uniform forProgram:shaderProgram toBlock:^{ - glUniformMatrix3fv(uniform, 1, GL_FALSE, (GLfloat *)&matrix); - }]; - }); -} - -- (void)setMatrix4f:(GPUMatrix4x4)matrix forUniform:(GLint)uniform program:(GLProgram *)shaderProgram; -{ - runAsynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext setActiveShaderProgram:shaderProgram]; - [self setAndExecuteUniformStateCallbackAtIndex:uniform forProgram:shaderProgram toBlock:^{ - glUniformMatrix4fv(uniform, 1, GL_FALSE, (GLfloat *)&matrix); - }]; - }); -} - -- (void)setFloat:(GLfloat)floatValue forUniform:(GLint)uniform program:(GLProgram *)shaderProgram; -{ - runAsynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext setActiveShaderProgram:shaderProgram]; - [self setAndExecuteUniformStateCallbackAtIndex:uniform forProgram:shaderProgram toBlock:^{ - glUniform1f(uniform, floatValue); - }]; - }); -} - -- (void)setPoint:(CGPoint)pointValue forUniform:(GLint)uniform program:(GLProgram *)shaderProgram; -{ - runAsynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext setActiveShaderProgram:shaderProgram]; - [self setAndExecuteUniformStateCallbackAtIndex:uniform forProgram:shaderProgram toBlock:^{ - GLfloat positionArray[2]; - positionArray[0] = pointValue.x; - positionArray[1] = pointValue.y; - - glUniform2fv(uniform, 1, positionArray); - }]; - }); -} - -- (void)setSize:(CGSize)sizeValue forUniform:(GLint)uniform program:(GLProgram *)shaderProgram; -{ - runAsynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext setActiveShaderProgram:shaderProgram]; - - [self setAndExecuteUniformStateCallbackAtIndex:uniform forProgram:shaderProgram toBlock:^{ - GLfloat sizeArray[2]; - sizeArray[0] = sizeValue.width; - sizeArray[1] = sizeValue.height; - - glUniform2fv(uniform, 1, sizeArray); - }]; - }); -} - -- (void)setVec3:(GPUVector3)vectorValue forUniform:(GLint)uniform program:(GLProgram *)shaderProgram; -{ - runAsynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext setActiveShaderProgram:shaderProgram]; - - [self setAndExecuteUniformStateCallbackAtIndex:uniform forProgram:shaderProgram toBlock:^{ - glUniform3fv(uniform, 1, (GLfloat *)&vectorValue); - }]; - }); -} - -- (void)setVec4:(GPUVector4)vectorValue forUniform:(GLint)uniform program:(GLProgram *)shaderProgram; -{ - runAsynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext setActiveShaderProgram:shaderProgram]; - - [self setAndExecuteUniformStateCallbackAtIndex:uniform forProgram:shaderProgram toBlock:^{ - glUniform4fv(uniform, 1, (GLfloat *)&vectorValue); - }]; - }); -} - -- (void)setFloatArray:(GLfloat *)arrayValue length:(GLsizei)arrayLength forUniform:(GLint)uniform program:(GLProgram *)shaderProgram; -{ - // Make a copy of the data, so it doesn't get overwritten before async call executes - NSData* arrayData = [NSData dataWithBytes:arrayValue length:arrayLength * sizeof(arrayValue[0])]; - - runAsynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext setActiveShaderProgram:shaderProgram]; - - [self setAndExecuteUniformStateCallbackAtIndex:uniform forProgram:shaderProgram toBlock:^{ - glUniform1fv(uniform, arrayLength, [arrayData bytes]); - }]; - }); -} - -- (void)setInteger:(GLint)intValue forUniform:(GLint)uniform program:(GLProgram *)shaderProgram; -{ - runAsynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext setActiveShaderProgram:shaderProgram]; - - [self setAndExecuteUniformStateCallbackAtIndex:uniform forProgram:shaderProgram toBlock:^{ - glUniform1i(uniform, intValue); - }]; - }); -} - -- (void)setAndExecuteUniformStateCallbackAtIndex:(GLint)uniform forProgram:(GLProgram *)shaderProgram toBlock:(dispatch_block_t)uniformStateBlock; -{ - [uniformStateRestorationBlocks setObject:[uniformStateBlock copy] forKey:[NSNumber numberWithInt:uniform]]; - uniformStateBlock(); -} - -- (void)setUniformsForProgramAtIndex:(NSUInteger)programIndex; -{ - [uniformStateRestorationBlocks enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop){ - dispatch_block_t currentBlock = obj; - currentBlock(); - }]; -} - -#pragma mark - -#pragma mark GPUImageInput - -- (void)newFrameReadyAtTime:(CMTime)frameTime atIndex:(NSInteger)textureIndex; -{ - static const GLfloat imageVertices[] = { - -1.0f, -1.0f, - 1.0f, -1.0f, - -1.0f, 1.0f, - 1.0f, 1.0f, - }; - - [self renderToTextureWithVertices:imageVertices textureCoordinates:[[self class] textureCoordinatesForRotation:inputRotation]]; - - [self informTargetsAboutNewFrameAtTime:frameTime]; -} - -- (NSInteger)nextAvailableTextureIndex; -{ - return 0; -} - -- (void)setInputFramebuffer:(GPUImageFramebuffer *)newInputFramebuffer atIndex:(NSInteger)textureIndex; -{ - firstInputFramebuffer = newInputFramebuffer; - [firstInputFramebuffer lock]; -} - -- (CGSize)rotatedSize:(CGSize)sizeToRotate forIndex:(NSInteger)textureIndex; -{ - CGSize rotatedSize = sizeToRotate; - - if (GPUImageRotationSwapsWidthAndHeight(inputRotation)) - { - rotatedSize.width = sizeToRotate.height; - rotatedSize.height = sizeToRotate.width; - } - - return rotatedSize; -} - -- (CGPoint)rotatedPoint:(CGPoint)pointToRotate forRotation:(GPUImageRotationMode)rotation; -{ - CGPoint rotatedPoint; - switch(rotation) - { - case kGPUImageNoRotation: return pointToRotate; break; - case kGPUImageFlipHorizonal: - { - rotatedPoint.x = 1.0 - pointToRotate.x; - rotatedPoint.y = pointToRotate.y; - }; break; - case kGPUImageFlipVertical: - { - rotatedPoint.x = pointToRotate.x; - rotatedPoint.y = 1.0 - pointToRotate.y; - }; break; - case kGPUImageRotateLeft: - { - rotatedPoint.x = 1.0 - pointToRotate.y; - rotatedPoint.y = pointToRotate.x; - }; break; - case kGPUImageRotateRight: - { - rotatedPoint.x = pointToRotate.y; - rotatedPoint.y = 1.0 - pointToRotate.x; - }; break; - case kGPUImageRotateRightFlipVertical: - { - rotatedPoint.x = pointToRotate.y; - rotatedPoint.y = pointToRotate.x; - }; break; - case kGPUImageRotateRightFlipHorizontal: - { - rotatedPoint.x = 1.0 - pointToRotate.y; - rotatedPoint.y = 1.0 - pointToRotate.x; - }; break; - case kGPUImageRotate180: - { - rotatedPoint.x = 1.0 - pointToRotate.x; - rotatedPoint.y = 1.0 - pointToRotate.y; - }; break; - } - - return rotatedPoint; -} - -- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex; -{ - if (self.preventRendering) - { - return; - } - - if (overrideInputSize) - { - if (CGSizeEqualToSize(forcedMaximumSize, CGSizeZero)) - { - } - else - { - CGRect insetRect = AVMakeRectWithAspectRatioInsideRect(newSize, CGRectMake(0.0, 0.0, forcedMaximumSize.width, forcedMaximumSize.height)); - inputTextureSize = insetRect.size; - } - } - else - { - CGSize rotatedSize = [self rotatedSize:newSize forIndex:textureIndex]; - - if (CGSizeEqualToSize(rotatedSize, CGSizeZero)) - { - inputTextureSize = rotatedSize; - } - else if (!CGSizeEqualToSize(inputTextureSize, rotatedSize)) - { - inputTextureSize = rotatedSize; - } - } - - [self setupFilterForSize:[self sizeOfFBO]]; -} - -- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; -{ - inputRotation = newInputRotation; -} - -- (void)forceProcessingAtSize:(CGSize)frameSize; -{ - if (CGSizeEqualToSize(frameSize, CGSizeZero)) - { - overrideInputSize = NO; - } - else - { - overrideInputSize = YES; - inputTextureSize = frameSize; - forcedMaximumSize = CGSizeZero; - } -} - -- (void)forceProcessingAtSizeRespectingAspectRatio:(CGSize)frameSize; -{ - if (CGSizeEqualToSize(frameSize, CGSizeZero)) - { - overrideInputSize = NO; - inputTextureSize = CGSizeZero; - forcedMaximumSize = CGSizeZero; - } - else - { - overrideInputSize = YES; - forcedMaximumSize = frameSize; - } -} - -- (CGSize)maximumOutputSize; -{ - // I'm temporarily disabling adjustments for smaller output sizes until I figure out how to make this work better - return CGSizeZero; - - /* - if (CGSizeEqualToSize(cachedMaximumOutputSize, CGSizeZero)) - { - for (id currentTarget in targets) - { - if ([currentTarget maximumOutputSize].width > cachedMaximumOutputSize.width) - { - cachedMaximumOutputSize = [currentTarget maximumOutputSize]; - } - } - } - - return cachedMaximumOutputSize; - */ -} - -- (void)endProcessing -{ - if (!isEndProcessing) - { - isEndProcessing = YES; - - for (id currentTarget in targets) - { - [currentTarget endProcessing]; - } - } -} - -- (BOOL)wantsMonochromeInput; -{ - return NO; -} - -#pragma mark - -#pragma mark Accessors - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageFilterGroup.h b/Example/Pods/GPUImage/framework/Source/GPUImageFilterGroup.h deleted file mode 100755 index 6817cdf..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageFilterGroup.h +++ /dev/null @@ -1,19 +0,0 @@ -#import "GPUImageOutput.h" -#import "GPUImageFilter.h" - -@interface GPUImageFilterGroup : GPUImageOutput -{ - NSMutableArray *filters; - BOOL isEndProcessing; -} - -@property(readwrite, nonatomic, strong) GPUImageOutput *terminalFilter; -@property(readwrite, nonatomic, strong) NSArray *initialFilters; -@property(readwrite, nonatomic, strong) GPUImageOutput *inputFilterToIgnoreForUpdates; - -// Filter management -- (void)addFilter:(GPUImageOutput *)newFilter; -- (GPUImageOutput *)filterAtIndex:(NSUInteger)filterIndex; -- (NSUInteger)filterCount; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageFilterGroup.m b/Example/Pods/GPUImage/framework/Source/GPUImageFilterGroup.m deleted file mode 100755 index 72cfe5e..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageFilterGroup.m +++ /dev/null @@ -1,208 +0,0 @@ -#import "GPUImageFilterGroup.h" -#import "GPUImagePicture.h" - -@implementation GPUImageFilterGroup - -@synthesize terminalFilter = _terminalFilter; -@synthesize initialFilters = _initialFilters; -@synthesize inputFilterToIgnoreForUpdates = _inputFilterToIgnoreForUpdates; - -- (id)init; -{ - if (!(self = [super init])) - { - return nil; - } - - filters = [[NSMutableArray alloc] init]; - - return self; -} - -#pragma mark - -#pragma mark Filter management - -- (void)addFilter:(GPUImageOutput *)newFilter; -{ - [filters addObject:newFilter]; -} - -- (GPUImageOutput *)filterAtIndex:(NSUInteger)filterIndex; -{ - return [filters objectAtIndex:filterIndex]; -} - -- (NSUInteger)filterCount; -{ - return [filters count]; -} - -#pragma mark - -#pragma mark Still image processing - -- (void)useNextFrameForImageCapture; -{ - [self.terminalFilter useNextFrameForImageCapture]; -} - -- (CGImageRef)newCGImageFromCurrentlyProcessedOutput; -{ - return [self.terminalFilter newCGImageFromCurrentlyProcessedOutput]; -} - -#pragma mark - -#pragma mark GPUImageOutput overrides - -- (void)setTargetToIgnoreForUpdates:(id)targetToIgnoreForUpdates; -{ - [_terminalFilter setTargetToIgnoreForUpdates:targetToIgnoreForUpdates]; -} - -- (void)addTarget:(id)newTarget atTextureLocation:(NSInteger)textureLocation; -{ - [_terminalFilter addTarget:newTarget atTextureLocation:textureLocation]; -} - -- (void)removeTarget:(id)targetToRemove; -{ - [_terminalFilter removeTarget:targetToRemove]; -} - -- (void)removeAllTargets; -{ - [_terminalFilter removeAllTargets]; -} - -- (NSArray *)targets; -{ - return [_terminalFilter targets]; -} - -- (void)setFrameProcessingCompletionBlock:(void (^)(GPUImageOutput *, CMTime))frameProcessingCompletionBlock; -{ - [_terminalFilter setFrameProcessingCompletionBlock:frameProcessingCompletionBlock]; -} - -- (void (^)(GPUImageOutput *, CMTime))frameProcessingCompletionBlock; -{ - return [_terminalFilter frameProcessingCompletionBlock]; -} - -#pragma mark - -#pragma mark GPUImageInput protocol - -- (void)newFrameReadyAtTime:(CMTime)frameTime atIndex:(NSInteger)textureIndex; -{ - for (GPUImageOutput *currentFilter in _initialFilters) - { - if (currentFilter != self.inputFilterToIgnoreForUpdates) - { - [currentFilter newFrameReadyAtTime:frameTime atIndex:textureIndex]; - } - } -} - -- (void)setInputFramebuffer:(GPUImageFramebuffer *)newInputFramebuffer atIndex:(NSInteger)textureIndex; -{ - for (GPUImageOutput *currentFilter in _initialFilters) - { - [currentFilter setInputFramebuffer:newInputFramebuffer atIndex:textureIndex]; - } -} - -- (NSInteger)nextAvailableTextureIndex; -{ -// if ([_initialFilters count] > 0) -// { -// return [[_initialFilters objectAtIndex:0] nextAvailableTextureIndex]; -// } - - return 0; -} - -- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex; -{ - for (GPUImageOutput *currentFilter in _initialFilters) - { - [currentFilter setInputSize:newSize atIndex:textureIndex]; - } -} - -- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; -{ - for (GPUImageOutput *currentFilter in _initialFilters) - { - [currentFilter setInputRotation:newInputRotation atIndex:(NSInteger)textureIndex]; - } -} - -- (void)forceProcessingAtSize:(CGSize)frameSize; -{ - for (GPUImageOutput *currentFilter in filters) - { - [currentFilter forceProcessingAtSize:frameSize]; - } -} - -- (void)forceProcessingAtSizeRespectingAspectRatio:(CGSize)frameSize; -{ - for (GPUImageOutput *currentFilter in filters) - { - [currentFilter forceProcessingAtSizeRespectingAspectRatio:frameSize]; - } -} - -- (CGSize)maximumOutputSize; -{ - // I'm temporarily disabling adjustments for smaller output sizes until I figure out how to make this work better - return CGSizeZero; - - /* - if (CGSizeEqualToSize(cachedMaximumOutputSize, CGSizeZero)) - { - for (id currentTarget in _initialFilters) - { - if ([currentTarget maximumOutputSize].width > cachedMaximumOutputSize.width) - { - cachedMaximumOutputSize = [currentTarget maximumOutputSize]; - } - } - } - - return cachedMaximumOutputSize; - */ -} - -- (void)endProcessing; -{ - if (!isEndProcessing) - { - isEndProcessing = YES; - - for (id currentTarget in _initialFilters) - { - [currentTarget endProcessing]; - } - } -} - -- (BOOL)wantsMonochromeInput; -{ - BOOL allInputsWantMonochromeInput = YES; - for (GPUImageOutput *currentFilter in _initialFilters) - { - allInputsWantMonochromeInput = allInputsWantMonochromeInput && [currentFilter wantsMonochromeInput]; - } - - return allInputsWantMonochromeInput; -} - -- (void)setCurrentlyReceivingMonochromeInput:(BOOL)newValue; -{ - for (GPUImageOutput *currentFilter in _initialFilters) - { - [currentFilter setCurrentlyReceivingMonochromeInput:newValue]; - } -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageFilterPipeline.h b/Example/Pods/GPUImage/framework/Source/GPUImageFilterPipeline.h deleted file mode 100755 index dc2baea..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageFilterPipeline.h +++ /dev/null @@ -1,30 +0,0 @@ -#import -#import "GPUImageOutput.h" - -@interface GPUImageFilterPipeline : NSObject -{ - NSString *stringValue; -} - -@property (strong) NSMutableArray *filters; - -@property (strong) GPUImageOutput *input; -@property (strong) id output; - -- (id) initWithOrderedFilters:(NSArray*) filters input:(GPUImageOutput*)input output:(id )output; -- (id) initWithConfiguration:(NSDictionary*) configuration input:(GPUImageOutput*)input output:(id )output; -- (id) initWithConfigurationFile:(NSURL*) configuration input:(GPUImageOutput*)input output:(id )output; - -- (void) addFilter:(GPUImageOutput *)filter; -- (void) addFilter:(GPUImageOutput *)filter atIndex:(NSUInteger)insertIndex; -- (void) replaceFilterAtIndex:(NSUInteger)index withFilter:(GPUImageOutput *)filter; -- (void) replaceAllFilters:(NSArray *) newFilters; -- (void) removeFilter:(GPUImageOutput *)filter; -- (void) removeFilterAtIndex:(NSUInteger)index; -- (void) removeAllFilters; - -- (UIImage *) currentFilteredFrame; -- (UIImage *) currentFilteredFrameWithOrientation:(UIImageOrientation)imageOrientation; -- (CGImageRef) newCGImageFromCurrentFilteredFrame; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageFilterPipeline.m b/Example/Pods/GPUImage/framework/Source/GPUImageFilterPipeline.m deleted file mode 100755 index 4fbe5eb..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageFilterPipeline.m +++ /dev/null @@ -1,218 +0,0 @@ -#import "GPUImageFilterPipeline.h" - -@interface GPUImageFilterPipeline () - -- (BOOL)_parseConfiguration:(NSDictionary *)configuration; - -- (void)_refreshFilters; - -@end - -@implementation GPUImageFilterPipeline - -@synthesize filters = _filters, input = _input, output = _output; - -#pragma mark Config file init - -- (id)initWithConfiguration:(NSDictionary *)configuration input:(GPUImageOutput *)input output:(id )output { - self = [super init]; - if (self) { - self.input = input; - self.output = output; - if (![self _parseConfiguration:configuration]) { - NSLog(@"Sorry, a parsing error occurred."); - abort(); - } - [self _refreshFilters]; - } - return self; -} - -- (id)initWithConfigurationFile:(NSURL *)configuration input:(GPUImageOutput *)input output:(id )output { - return [self initWithConfiguration:[NSDictionary dictionaryWithContentsOfURL:configuration] input:input output:output]; -} - -- (BOOL)_parseConfiguration:(NSDictionary *)configuration { - NSArray *filters = [configuration objectForKey:@"Filters"]; - if (!filters) { - return NO; - } - - NSError *regexError = nil; - NSRegularExpression *parsingRegex = [NSRegularExpression regularExpressionWithPattern:@"(float|CGPoint|NSString)\\((.*?)(?:,\\s*(.*?))*\\)" - options:0 - error:®exError]; - - // It's faster to put them into an array and then pass it to the filters property than it is to call [self addFilter:] every time - NSMutableArray *orderedFilters = [NSMutableArray arrayWithCapacity:[filters count]]; - for (NSDictionary *filter in filters) { - NSString *filterName = [filter objectForKey:@"FilterName"]; - Class theClass = NSClassFromString(filterName); - GPUImageOutput *genericFilter = [[theClass alloc] init]; - // Set up the properties - NSDictionary *filterAttributes; - if ((filterAttributes = [filter objectForKey:@"Attributes"])) { - for (NSString *propertyKey in filterAttributes) { - // Set up the selector - SEL theSelector = NSSelectorFromString(propertyKey); - NSInvocation *inv = [NSInvocation invocationWithMethodSignature:[theClass instanceMethodSignatureForSelector:theSelector]]; - [inv setSelector:theSelector]; - [inv setTarget:genericFilter]; - - // check selector given with parameter - if ([propertyKey hasSuffix:@":"]) { - - stringValue = nil; - - // Then parse the arguments - NSMutableArray *parsedArray; - if ([[filterAttributes objectForKey:propertyKey] isKindOfClass:[NSArray class]]) { - NSArray *array = [filterAttributes objectForKey:propertyKey]; - parsedArray = [NSMutableArray arrayWithCapacity:[array count]]; - for (NSString *string in array) { - NSTextCheckingResult *parse = [parsingRegex firstMatchInString:string - options:0 - range:NSMakeRange(0, [string length])]; - - NSString *modifier = [string substringWithRange:[parse rangeAtIndex:1]]; - if ([modifier isEqualToString:@"float"]) { - // Float modifier, one argument - CGFloat value = [[string substringWithRange:[parse rangeAtIndex:2]] floatValue]; - [parsedArray addObject:[NSNumber numberWithFloat:value]]; - [inv setArgument:&value atIndex:2]; - } else if ([modifier isEqualToString:@"CGPoint"]) { - // CGPoint modifier, two float arguments - CGFloat x = [[string substringWithRange:[parse rangeAtIndex:2]] floatValue]; - CGFloat y = [[string substringWithRange:[parse rangeAtIndex:3]] floatValue]; - CGPoint value = CGPointMake(x, y); - [parsedArray addObject:[NSValue valueWithCGPoint:value]]; - } else if ([modifier isEqualToString:@"NSString"]) { - // NSString modifier, one string argument - stringValue = [[string substringWithRange:[parse rangeAtIndex:2]] copy]; - [inv setArgument:&stringValue atIndex:2]; - - } else { - return NO; - } - } - [inv setArgument:&parsedArray atIndex:2]; - } else { - NSString *string = [filterAttributes objectForKey:propertyKey]; - NSTextCheckingResult *parse = [parsingRegex firstMatchInString:string - options:0 - range:NSMakeRange(0, [string length])]; - - NSString *modifier = [string substringWithRange:[parse rangeAtIndex:1]]; - if ([modifier isEqualToString:@"float"]) { - // Float modifier, one argument - CGFloat value = [[string substringWithRange:[parse rangeAtIndex:2]] floatValue]; - [inv setArgument:&value atIndex:2]; - } else if ([modifier isEqualToString:@"CGPoint"]) { - // CGPoint modifier, two float arguments - CGFloat x = [[string substringWithRange:[parse rangeAtIndex:2]] floatValue]; - CGFloat y = [[string substringWithRange:[parse rangeAtIndex:3]] floatValue]; - CGPoint value = CGPointMake(x, y); - [inv setArgument:&value atIndex:2]; - } else if ([modifier isEqualToString:@"NSString"]) { - // NSString modifier, one string argument - stringValue = [[string substringWithRange:[parse rangeAtIndex:2]] copy]; - [inv setArgument:&stringValue atIndex:2]; - - } else { - return NO; - } - } - } - - - [inv invoke]; - } - } - [orderedFilters addObject:genericFilter]; - } - self.filters = orderedFilters; - - return YES; -} - -#pragma mark Regular init - -- (id)initWithOrderedFilters:(NSArray *)filters input:(GPUImageOutput *)input output:(id )output { - self = [super init]; - if (self) { - self.input = input; - self.output = output; - self.filters = [NSMutableArray arrayWithArray:filters]; - [self _refreshFilters]; - } - return self; -} - -- (void)addFilter:(GPUImageOutput *)filter atIndex:(NSUInteger)insertIndex { - [self.filters insertObject:filter atIndex:insertIndex]; - [self _refreshFilters]; -} - -- (void)addFilter:(GPUImageOutput *)filter { - [self.filters addObject:filter]; - [self _refreshFilters]; -} - -- (void)replaceFilterAtIndex:(NSUInteger)index withFilter:(GPUImageOutput *)filter { - [self.filters replaceObjectAtIndex:index withObject:filter]; - [self _refreshFilters]; -} - -- (void) removeFilter:(GPUImageOutput *)filter; -{ - [self.filters removeObject:filter]; - [self _refreshFilters]; -} - -- (void)removeFilterAtIndex:(NSUInteger)index { - [self.filters removeObjectAtIndex:index]; - [self _refreshFilters]; -} - -- (void)removeAllFilters { - [self.filters removeAllObjects]; - [self _refreshFilters]; -} - -- (void)replaceAllFilters:(NSArray *)newFilters { - self.filters = [NSMutableArray arrayWithArray:newFilters]; - [self _refreshFilters]; -} - -- (void)_refreshFilters { - - id prevFilter = self.input; - GPUImageOutput *theFilter = nil; - - for (int i = 0; i < [self.filters count]; i++) { - theFilter = [self.filters objectAtIndex:i]; - [prevFilter removeAllTargets]; - [prevFilter addTarget:theFilter]; - prevFilter = theFilter; - } - - [prevFilter removeAllTargets]; - - if (self.output != nil) { - [prevFilter addTarget:self.output]; - } -} - -- (UIImage *)currentFilteredFrame { - return [(GPUImageOutput *)[_filters lastObject] imageFromCurrentFramebuffer]; -} - -- (UIImage *)currentFilteredFrameWithOrientation:(UIImageOrientation)imageOrientation { - return [(GPUImageOutput *)[_filters lastObject] imageFromCurrentFramebufferWithOrientation:imageOrientation]; -} - -- (CGImageRef)newCGImageFromCurrentFilteredFrame { - return [(GPUImageOutput *)[_filters lastObject] newCGImageFromCurrentlyProcessedOutput]; -} - -@end \ No newline at end of file diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageFramebuffer.h b/Example/Pods/GPUImage/framework/Source/GPUImageFramebuffer.h deleted file mode 100644 index 5cf20dd..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageFramebuffer.h +++ /dev/null @@ -1,58 +0,0 @@ -#import - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -#import -#import -#import -#else -#import -#import -#endif - -#import -#import - - -typedef struct GPUTextureOptions { - GLenum minFilter; - GLenum magFilter; - GLenum wrapS; - GLenum wrapT; - GLenum internalFormat; - GLenum format; - GLenum type; -} GPUTextureOptions; - -@interface GPUImageFramebuffer : NSObject - -@property(readonly) CGSize size; -@property(readonly) GPUTextureOptions textureOptions; -@property(readonly) GLuint texture; -@property(readonly) BOOL missingFramebuffer; - -// Initialization and teardown -- (id)initWithSize:(CGSize)framebufferSize; -- (id)initWithSize:(CGSize)framebufferSize textureOptions:(GPUTextureOptions)fboTextureOptions onlyTexture:(BOOL)onlyGenerateTexture; -- (id)initWithSize:(CGSize)framebufferSize overriddenTexture:(GLuint)inputTexture; - -// Usage -- (void)activateFramebuffer; - -// Reference counting -- (void)lock; -- (void)unlock; -- (void)clearAllLocks; -- (void)disableReferenceCounting; -- (void)enableReferenceCounting; - -// Image capture -- (CGImageRef)newCGImageFromFramebufferContents; -- (void)restoreRenderTarget; - -// Raw data bytes -- (void)lockForReading; -- (void)unlockAfterReading; -- (NSUInteger)bytesPerRow; -- (GLubyte *)byteBuffer; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageFramebuffer.m b/Example/Pods/GPUImage/framework/Source/GPUImageFramebuffer.m deleted file mode 100644 index 1d3d48f..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageFramebuffer.m +++ /dev/null @@ -1,448 +0,0 @@ -#import "GPUImageFramebuffer.h" -#import "GPUImageOutput.h" - -@interface GPUImageFramebuffer() -{ - GLuint framebuffer; -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - CVPixelBufferRef renderTarget; - CVOpenGLESTextureRef renderTexture; - NSUInteger readLockCount; -#else -#endif - NSUInteger framebufferReferenceCount; - BOOL referenceCountingDisabled; -} - -- (void)generateFramebuffer; -- (void)generateTexture; -- (void)destroyFramebuffer; - -@end - -void dataProviderReleaseCallback (void *info, const void *data, size_t size); -void dataProviderUnlockCallback (void *info, const void *data, size_t size); - -@implementation GPUImageFramebuffer - -@synthesize size = _size; -@synthesize textureOptions = _textureOptions; -@synthesize texture = _texture; -@synthesize missingFramebuffer = _missingFramebuffer; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)initWithSize:(CGSize)framebufferSize textureOptions:(GPUTextureOptions)fboTextureOptions onlyTexture:(BOOL)onlyGenerateTexture; -{ - if (!(self = [super init])) - { - return nil; - } - - _textureOptions = fboTextureOptions; - _size = framebufferSize; - framebufferReferenceCount = 0; - referenceCountingDisabled = NO; - _missingFramebuffer = onlyGenerateTexture; - - if (_missingFramebuffer) - { - runSynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext useImageProcessingContext]; - [self generateTexture]; - framebuffer = 0; - }); - } - else - { - [self generateFramebuffer]; - } - return self; -} - -- (id)initWithSize:(CGSize)framebufferSize overriddenTexture:(GLuint)inputTexture; -{ - if (!(self = [super init])) - { - return nil; - } - - GPUTextureOptions defaultTextureOptions; - defaultTextureOptions.minFilter = GL_LINEAR; - defaultTextureOptions.magFilter = GL_LINEAR; - defaultTextureOptions.wrapS = GL_CLAMP_TO_EDGE; - defaultTextureOptions.wrapT = GL_CLAMP_TO_EDGE; - defaultTextureOptions.internalFormat = GL_RGBA; - defaultTextureOptions.format = GL_BGRA; - defaultTextureOptions.type = GL_UNSIGNED_BYTE; - - _textureOptions = defaultTextureOptions; - _size = framebufferSize; - framebufferReferenceCount = 0; - referenceCountingDisabled = YES; - - _texture = inputTexture; - - return self; -} - -- (id)initWithSize:(CGSize)framebufferSize; -{ - GPUTextureOptions defaultTextureOptions; - defaultTextureOptions.minFilter = GL_LINEAR; - defaultTextureOptions.magFilter = GL_LINEAR; - defaultTextureOptions.wrapS = GL_CLAMP_TO_EDGE; - defaultTextureOptions.wrapT = GL_CLAMP_TO_EDGE; - defaultTextureOptions.internalFormat = GL_RGBA; - defaultTextureOptions.format = GL_BGRA; - defaultTextureOptions.type = GL_UNSIGNED_BYTE; - - if (!(self = [self initWithSize:framebufferSize textureOptions:defaultTextureOptions onlyTexture:NO])) - { - return nil; - } - - return self; -} - -- (void)dealloc -{ - [self destroyFramebuffer]; -} - -#pragma mark - -#pragma mark Internal - -- (void)generateTexture; -{ - glActiveTexture(GL_TEXTURE1); - glGenTextures(1, &_texture); - glBindTexture(GL_TEXTURE_2D, _texture); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, _textureOptions.minFilter); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, _textureOptions.magFilter); - // This is necessary for non-power-of-two textures - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, _textureOptions.wrapS); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, _textureOptions.wrapT); - - // TODO: Handle mipmaps -} - -- (void)generateFramebuffer; -{ - runSynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext useImageProcessingContext]; - - glGenFramebuffers(1, &framebuffer); - glBindFramebuffer(GL_FRAMEBUFFER, framebuffer); - - // By default, all framebuffers on iOS 5.0+ devices are backed by texture caches, using one shared cache - if ([GPUImageContext supportsFastTextureUpload]) - { -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - CVOpenGLESTextureCacheRef coreVideoTextureCache = [[GPUImageContext sharedImageProcessingContext] coreVideoTextureCache]; - // Code originally sourced from http://allmybrain.com/2011/12/08/rendering-to-a-texture-with-ios-5-texture-cache-api/ - - CFDictionaryRef empty; // empty value for attr value. - CFMutableDictionaryRef attrs; - empty = CFDictionaryCreate(kCFAllocatorDefault, NULL, NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks); // our empty IOSurface properties dictionary - attrs = CFDictionaryCreateMutable(kCFAllocatorDefault, 1, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks); - CFDictionarySetValue(attrs, kCVPixelBufferIOSurfacePropertiesKey, empty); - - CVReturn err = CVPixelBufferCreate(kCFAllocatorDefault, (int)_size.width, (int)_size.height, kCVPixelFormatType_32BGRA, attrs, &renderTarget); - if (err) - { - NSLog(@"FBO size: %f, %f", _size.width, _size.height); - NSAssert(NO, @"Error at CVPixelBufferCreate %d", err); - } - - err = CVOpenGLESTextureCacheCreateTextureFromImage (kCFAllocatorDefault, coreVideoTextureCache, renderTarget, - NULL, // texture attributes - GL_TEXTURE_2D, - _textureOptions.internalFormat, // opengl format - (int)_size.width, - (int)_size.height, - _textureOptions.format, // native iOS format - _textureOptions.type, - 0, - &renderTexture); - if (err) - { - NSAssert(NO, @"Error at CVOpenGLESTextureCacheCreateTextureFromImage %d", err); - } - - CFRelease(attrs); - CFRelease(empty); - - glBindTexture(CVOpenGLESTextureGetTarget(renderTexture), CVOpenGLESTextureGetName(renderTexture)); - _texture = CVOpenGLESTextureGetName(renderTexture); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, _textureOptions.wrapS); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, _textureOptions.wrapT); - - glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, CVOpenGLESTextureGetName(renderTexture), 0); -#endif - } - else - { - [self generateTexture]; - - glBindTexture(GL_TEXTURE_2D, _texture); - - glTexImage2D(GL_TEXTURE_2D, 0, _textureOptions.internalFormat, (int)_size.width, (int)_size.height, 0, _textureOptions.format, _textureOptions.type, 0); - glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, _texture, 0); - } - - #ifndef NS_BLOCK_ASSERTIONS - GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER); - NSAssert(status == GL_FRAMEBUFFER_COMPLETE, @"Incomplete filter FBO: %d", status); - #endif - - glBindTexture(GL_TEXTURE_2D, 0); - }); -} - -- (void)destroyFramebuffer; -{ - runSynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext useImageProcessingContext]; - - if (framebuffer) - { - glDeleteFramebuffers(1, &framebuffer); - framebuffer = 0; - } - - - if ([GPUImageContext supportsFastTextureUpload] && (!_missingFramebuffer)) - { -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - if (renderTarget) - { - CFRelease(renderTarget); - renderTarget = NULL; - } - - if (renderTexture) - { - CFRelease(renderTexture); - renderTexture = NULL; - } -#endif - } - else - { - glDeleteTextures(1, &_texture); - } - - }); -} - -#pragma mark - -#pragma mark Usage - -- (void)activateFramebuffer; -{ - glBindFramebuffer(GL_FRAMEBUFFER, framebuffer); - glViewport(0, 0, (int)_size.width, (int)_size.height); -} - -#pragma mark - -#pragma mark Reference counting - -- (void)lock; -{ - if (referenceCountingDisabled) - { - return; - } - - framebufferReferenceCount++; -} - -- (void)unlock; -{ - if (referenceCountingDisabled) - { - return; - } - - NSAssert(framebufferReferenceCount > 0, @"Tried to overrelease a framebuffer, did you forget to call -useNextFrameForImageCapture before using -imageFromCurrentFramebuffer?"); - framebufferReferenceCount--; - if (framebufferReferenceCount < 1) - { - [[GPUImageContext sharedFramebufferCache] returnFramebufferToCache:self]; - } -} - -- (void)clearAllLocks; -{ - framebufferReferenceCount = 0; -} - -- (void)disableReferenceCounting; -{ - referenceCountingDisabled = YES; -} - -- (void)enableReferenceCounting; -{ - referenceCountingDisabled = NO; -} - -#pragma mark - -#pragma mark Image capture - -void dataProviderReleaseCallback (void *info, const void *data, size_t size) -{ - free((void *)data); -} - -void dataProviderUnlockCallback (void *info, const void *data, size_t size) -{ - GPUImageFramebuffer *framebuffer = (__bridge_transfer GPUImageFramebuffer*)info; - - [framebuffer restoreRenderTarget]; - [framebuffer unlock]; - [[GPUImageContext sharedFramebufferCache] removeFramebufferFromActiveImageCaptureList:framebuffer]; -} - -- (CGImageRef)newCGImageFromFramebufferContents; -{ - // a CGImage can only be created from a 'normal' color texture - NSAssert(self.textureOptions.internalFormat == GL_RGBA, @"For conversion to a CGImage the output texture format for this filter must be GL_RGBA."); - NSAssert(self.textureOptions.type == GL_UNSIGNED_BYTE, @"For conversion to a CGImage the type of the output texture of this filter must be GL_UNSIGNED_BYTE."); - - __block CGImageRef cgImageFromBytes; - - runSynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext useImageProcessingContext]; - - NSUInteger totalBytesForImage = (int)_size.width * (int)_size.height * 4; - // It appears that the width of a texture must be padded out to be a multiple of 8 (32 bytes) if reading from it using a texture cache - - GLubyte *rawImagePixels; - - CGDataProviderRef dataProvider = NULL; - if ([GPUImageContext supportsFastTextureUpload]) - { -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - NSUInteger paddedWidthOfImage = CVPixelBufferGetBytesPerRow(renderTarget) / 4.0; - NSUInteger paddedBytesForImage = paddedWidthOfImage * (int)_size.height * 4; - - glFinish(); - CFRetain(renderTarget); // I need to retain the pixel buffer here and release in the data source callback to prevent its bytes from being prematurely deallocated during a photo write operation - [self lockForReading]; - rawImagePixels = (GLubyte *)CVPixelBufferGetBaseAddress(renderTarget); - dataProvider = CGDataProviderCreateWithData((__bridge_retained void*)self, rawImagePixels, paddedBytesForImage, dataProviderUnlockCallback); - [[GPUImageContext sharedFramebufferCache] addFramebufferToActiveImageCaptureList:self]; // In case the framebuffer is swapped out on the filter, need to have a strong reference to it somewhere for it to hang on while the image is in existence -#else -#endif - } - else - { - [self activateFramebuffer]; - rawImagePixels = (GLubyte *)malloc(totalBytesForImage); - glReadPixels(0, 0, (int)_size.width, (int)_size.height, GL_RGBA, GL_UNSIGNED_BYTE, rawImagePixels); - dataProvider = CGDataProviderCreateWithData(NULL, rawImagePixels, totalBytesForImage, dataProviderReleaseCallback); - [self unlock]; // Don't need to keep this around anymore - } - - CGColorSpaceRef defaultRGBColorSpace = CGColorSpaceCreateDeviceRGB(); - - if ([GPUImageContext supportsFastTextureUpload]) - { -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - cgImageFromBytes = CGImageCreate((int)_size.width, (int)_size.height, 8, 32, CVPixelBufferGetBytesPerRow(renderTarget), defaultRGBColorSpace, kCGBitmapByteOrder32Little | kCGImageAlphaPremultipliedFirst, dataProvider, NULL, NO, kCGRenderingIntentDefault); -#else -#endif - } - else - { - cgImageFromBytes = CGImageCreate((int)_size.width, (int)_size.height, 8, 32, 4 * (int)_size.width, defaultRGBColorSpace, kCGBitmapByteOrderDefault | kCGImageAlphaLast, dataProvider, NULL, NO, kCGRenderingIntentDefault); - } - - // Capture image with current device orientation - CGDataProviderRelease(dataProvider); - CGColorSpaceRelease(defaultRGBColorSpace); - - }); - - return cgImageFromBytes; -} - -- (void)restoreRenderTarget; -{ -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - [self unlockAfterReading]; - CFRelease(renderTarget); -#else -#endif -} - -#pragma mark - -#pragma mark Raw data bytes - -- (void)lockForReading -{ -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - if ([GPUImageContext supportsFastTextureUpload]) - { - if (readLockCount == 0) - { - CVPixelBufferLockBaseAddress(renderTarget, 0); - } - readLockCount++; - } -#endif -} - -- (void)unlockAfterReading -{ -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - if ([GPUImageContext supportsFastTextureUpload]) - { - NSAssert(readLockCount > 0, @"Unbalanced call to -[GPUImageFramebuffer unlockAfterReading]"); - readLockCount--; - if (readLockCount == 0) - { - CVPixelBufferUnlockBaseAddress(renderTarget, 0); - } - } -#endif -} - -- (NSUInteger)bytesPerRow; -{ - if ([GPUImageContext supportsFastTextureUpload]) - { -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - return CVPixelBufferGetBytesPerRow(renderTarget); -#else - return _size.width * 4; // TODO: do more with this on the non-texture-cache side -#endif - } - else - { - return _size.width * 4; - } -} - -- (GLubyte *)byteBuffer; -{ -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - [self lockForReading]; - GLubyte * bufferBytes = CVPixelBufferGetBaseAddress(renderTarget); - [self unlockAfterReading]; - return bufferBytes; -#else - return NULL; // TODO: do more with this on the non-texture-cache side -#endif -} - -- (GLuint)texture; -{ -// NSLog(@"Accessing texture: %d from FB: %@", _texture, self); - return _texture; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageFramebufferCache.h b/Example/Pods/GPUImage/framework/Source/GPUImageFramebufferCache.h deleted file mode 100644 index e56a345..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageFramebufferCache.h +++ /dev/null @@ -1,15 +0,0 @@ -#import -#import -#import "GPUImageFramebuffer.h" - -@interface GPUImageFramebufferCache : NSObject - -// Framebuffer management -- (GPUImageFramebuffer *)fetchFramebufferForSize:(CGSize)framebufferSize textureOptions:(GPUTextureOptions)textureOptions onlyTexture:(BOOL)onlyTexture; -- (GPUImageFramebuffer *)fetchFramebufferForSize:(CGSize)framebufferSize onlyTexture:(BOOL)onlyTexture; -- (void)returnFramebufferToCache:(GPUImageFramebuffer *)framebuffer; -- (void)purgeAllUnassignedFramebuffers; -- (void)addFramebufferToActiveImageCaptureList:(GPUImageFramebuffer *)framebuffer; -- (void)removeFramebufferFromActiveImageCaptureList:(GPUImageFramebuffer *)framebuffer; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageFramebufferCache.m b/Example/Pods/GPUImage/framework/Source/GPUImageFramebufferCache.m deleted file mode 100644 index 21925ad..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageFramebufferCache.m +++ /dev/null @@ -1,179 +0,0 @@ -#import "GPUImageFramebufferCache.h" -#import "GPUImageContext.h" -#import "GPUImageOutput.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -#import -#else -#endif - -@interface GPUImageFramebufferCache() -{ -// NSCache *framebufferCache; - NSMutableDictionary *framebufferCache; - NSMutableDictionary *framebufferTypeCounts; - NSMutableArray *activeImageCaptureList; // Where framebuffers that may be lost by a filter, but which are still needed for a UIImage, etc., are stored - id memoryWarningObserver; - - dispatch_queue_t framebufferCacheQueue; -} - -- (NSString *)hashForSize:(CGSize)size textureOptions:(GPUTextureOptions)textureOptions onlyTexture:(BOOL)onlyTexture; - -@end - - -@implementation GPUImageFramebufferCache - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super init])) - { - return nil; - } - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - memoryWarningObserver = [[NSNotificationCenter defaultCenter] addObserverForName:UIApplicationDidReceiveMemoryWarningNotification object:nil queue:nil usingBlock:^(NSNotification *note) { - - [self purgeAllUnassignedFramebuffers]; - }]; -#else -#endif - -// framebufferCache = [[NSCache alloc] init]; - framebufferCache = [[NSMutableDictionary alloc] init]; - framebufferTypeCounts = [[NSMutableDictionary alloc] init]; - activeImageCaptureList = [[NSMutableArray alloc] init]; - framebufferCacheQueue = dispatch_queue_create("com.sunsetlakesoftware.GPUImage.framebufferCacheQueue", NULL); - - return self; -} - -#pragma mark - -#pragma mark Framebuffer management - -- (NSString *)hashForSize:(CGSize)size textureOptions:(GPUTextureOptions)textureOptions onlyTexture:(BOOL)onlyTexture; -{ - if (onlyTexture) - { - return [NSString stringWithFormat:@"%.1fx%.1f-%d:%d:%d:%d:%d:%d:%d-NOFB", size.width, size.height, textureOptions.minFilter, textureOptions.magFilter, textureOptions.wrapS, textureOptions.wrapT, textureOptions.internalFormat, textureOptions.format, textureOptions.type]; - } - else - { - return [NSString stringWithFormat:@"%.1fx%.1f-%d:%d:%d:%d:%d:%d:%d", size.width, size.height, textureOptions.minFilter, textureOptions.magFilter, textureOptions.wrapS, textureOptions.wrapT, textureOptions.internalFormat, textureOptions.format, textureOptions.type]; - } -} - -- (GPUImageFramebuffer *)fetchFramebufferForSize:(CGSize)framebufferSize textureOptions:(GPUTextureOptions)textureOptions onlyTexture:(BOOL)onlyTexture; -{ - __block GPUImageFramebuffer *framebufferFromCache = nil; -// dispatch_sync(framebufferCacheQueue, ^{ - runSynchronouslyOnVideoProcessingQueue(^{ - NSString *lookupHash = [self hashForSize:framebufferSize textureOptions:textureOptions onlyTexture:onlyTexture]; - NSNumber *numberOfMatchingTexturesInCache = [framebufferTypeCounts objectForKey:lookupHash]; - NSInteger numberOfMatchingTextures = [numberOfMatchingTexturesInCache integerValue]; - - if ([numberOfMatchingTexturesInCache integerValue] < 1) - { - // Nothing in the cache, create a new framebuffer to use - framebufferFromCache = [[GPUImageFramebuffer alloc] initWithSize:framebufferSize textureOptions:textureOptions onlyTexture:onlyTexture]; - } - else - { - // Something found, pull the old framebuffer and decrement the count - NSInteger currentTextureID = (numberOfMatchingTextures - 1); - while ((framebufferFromCache == nil) && (currentTextureID >= 0)) - { - NSString *textureHash = [NSString stringWithFormat:@"%@-%ld", lookupHash, (long)currentTextureID]; - framebufferFromCache = [framebufferCache objectForKey:textureHash]; - // Test the values in the cache first, to see if they got invalidated behind our back - if (framebufferFromCache != nil) - { - // Withdraw this from the cache while it's in use - [framebufferCache removeObjectForKey:textureHash]; - } - currentTextureID--; - } - - currentTextureID++; - - [framebufferTypeCounts setObject:[NSNumber numberWithInteger:currentTextureID] forKey:lookupHash]; - - if (framebufferFromCache == nil) - { - framebufferFromCache = [[GPUImageFramebuffer alloc] initWithSize:framebufferSize textureOptions:textureOptions onlyTexture:onlyTexture]; - } - } - }); - - [framebufferFromCache lock]; - return framebufferFromCache; -} - -- (GPUImageFramebuffer *)fetchFramebufferForSize:(CGSize)framebufferSize onlyTexture:(BOOL)onlyTexture; -{ - GPUTextureOptions defaultTextureOptions; - defaultTextureOptions.minFilter = GL_LINEAR; - defaultTextureOptions.magFilter = GL_LINEAR; - defaultTextureOptions.wrapS = GL_CLAMP_TO_EDGE; - defaultTextureOptions.wrapT = GL_CLAMP_TO_EDGE; - defaultTextureOptions.internalFormat = GL_RGBA; - defaultTextureOptions.format = GL_BGRA; - defaultTextureOptions.type = GL_UNSIGNED_BYTE; - - return [self fetchFramebufferForSize:framebufferSize textureOptions:defaultTextureOptions onlyTexture:onlyTexture]; -} - -- (void)returnFramebufferToCache:(GPUImageFramebuffer *)framebuffer; -{ - [framebuffer clearAllLocks]; - -// dispatch_async(framebufferCacheQueue, ^{ - runAsynchronouslyOnVideoProcessingQueue(^{ - CGSize framebufferSize = framebuffer.size; - GPUTextureOptions framebufferTextureOptions = framebuffer.textureOptions; - NSString *lookupHash = [self hashForSize:framebufferSize textureOptions:framebufferTextureOptions onlyTexture:framebuffer.missingFramebuffer]; - NSNumber *numberOfMatchingTexturesInCache = [framebufferTypeCounts objectForKey:lookupHash]; - NSInteger numberOfMatchingTextures = [numberOfMatchingTexturesInCache integerValue]; - - NSString *textureHash = [NSString stringWithFormat:@"%@-%ld", lookupHash, (long)numberOfMatchingTextures]; - -// [framebufferCache setObject:framebuffer forKey:textureHash cost:round(framebufferSize.width * framebufferSize.height * 4.0)]; - [framebufferCache setObject:framebuffer forKey:textureHash]; - [framebufferTypeCounts setObject:[NSNumber numberWithInteger:(numberOfMatchingTextures + 1)] forKey:lookupHash]; - }); -} - -- (void)purgeAllUnassignedFramebuffers; -{ - runAsynchronouslyOnVideoProcessingQueue(^{ -// dispatch_async(framebufferCacheQueue, ^{ - [framebufferCache removeAllObjects]; - [framebufferTypeCounts removeAllObjects]; -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - CVOpenGLESTextureCacheFlush([[GPUImageContext sharedImageProcessingContext] coreVideoTextureCache], 0); -#else -#endif - }); -} - -- (void)addFramebufferToActiveImageCaptureList:(GPUImageFramebuffer *)framebuffer; -{ - runAsynchronouslyOnVideoProcessingQueue(^{ -// dispatch_async(framebufferCacheQueue, ^{ - [activeImageCaptureList addObject:framebuffer]; - }); -} - -- (void)removeFramebufferFromActiveImageCaptureList:(GPUImageFramebuffer *)framebuffer; -{ - runAsynchronouslyOnVideoProcessingQueue(^{ -// dispatch_async(framebufferCacheQueue, ^{ - [activeImageCaptureList removeObject:framebuffer]; - }); -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageGammaFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageGammaFilter.h deleted file mode 100755 index 0521d08..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageGammaFilter.h +++ /dev/null @@ -1,11 +0,0 @@ -#import "GPUImageFilter.h" - -@interface GPUImageGammaFilter : GPUImageFilter -{ - GLint gammaUniform; -} - -// Gamma ranges from 0.0 to 3.0, with 1.0 as the normal level -@property(readwrite, nonatomic) CGFloat gamma; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageGammaFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageGammaFilter.m deleted file mode 100755 index 35adaba..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageGammaFilter.m +++ /dev/null @@ -1,66 +0,0 @@ -#import "GPUImageGammaFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageGammaFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform lowp float gamma; - - void main() - { - lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - - gl_FragColor = vec4(pow(textureColor.rgb, vec3(gamma)), textureColor.w); - } -); -#else -NSString *const kGPUImageGammaFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform float gamma; - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - - gl_FragColor = vec4(pow(textureColor.rgb, vec3(gamma)), textureColor.w); - } -); -#endif - -@implementation GPUImageGammaFilter - -@synthesize gamma = _gamma; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageGammaFragmentShaderString])) - { - return nil; - } - - gammaUniform = [filterProgram uniformIndex:@"gamma"]; - self.gamma = 1.0; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setGamma:(CGFloat)newValue; -{ - _gamma = newValue; - - [self setFloat:_gamma forUniform:gammaUniform program:filterProgram]; -} - -@end - diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageGaussianBlurFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageGaussianBlurFilter.h deleted file mode 100755 index 1fb7a13..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageGaussianBlurFilter.h +++ /dev/null @@ -1,36 +0,0 @@ -#import "GPUImageTwoPassTextureSamplingFilter.h" - -/** A Gaussian blur filter - Interpolated optimization based on Daniel Rákos' work at http://rastergrid.com/blog/2010/09/efficient-gaussian-blur-with-linear-sampling/ - */ - -@interface GPUImageGaussianBlurFilter : GPUImageTwoPassTextureSamplingFilter -{ - BOOL shouldResizeBlurRadiusWithImageSize; - CGFloat _blurRadiusInPixels; -} - -/** A multiplier for the spacing between texels, ranging from 0.0 on up, with a default of 1.0. Adjusting this may slightly increase the blur strength, but will introduce artifacts in the result. - */ -@property (readwrite, nonatomic) CGFloat texelSpacingMultiplier; - -/** A radius in pixels to use for the blur, with a default of 2.0. This adjusts the sigma variable in the Gaussian distribution function. - */ -@property (readwrite, nonatomic) CGFloat blurRadiusInPixels; - -/** Setting these properties will allow the blur radius to scale with the size of the image. These properties are mutually exclusive; setting either will set the other to 0. - */ -@property (readwrite, nonatomic) CGFloat blurRadiusAsFractionOfImageWidth; -@property (readwrite, nonatomic) CGFloat blurRadiusAsFractionOfImageHeight; - -/// The number of times to sequentially blur the incoming image. The more passes, the slower the filter. -@property(readwrite, nonatomic) NSUInteger blurPasses; - -+ (NSString *)vertexShaderForStandardBlurOfRadius:(NSUInteger)blurRadius sigma:(CGFloat)sigma; -+ (NSString *)fragmentShaderForStandardBlurOfRadius:(NSUInteger)blurRadius sigma:(CGFloat)sigma; -+ (NSString *)vertexShaderForOptimizedBlurOfRadius:(NSUInteger)blurRadius sigma:(CGFloat)sigma; -+ (NSString *)fragmentShaderForOptimizedBlurOfRadius:(NSUInteger)blurRadius sigma:(CGFloat)sigma; - -- (void)switchToVertexShader:(NSString *)newVertexShader fragmentShader:(NSString *)newFragmentShader; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageGaussianBlurFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageGaussianBlurFilter.m deleted file mode 100755 index ec99352..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageGaussianBlurFilter.m +++ /dev/null @@ -1,513 +0,0 @@ -#import "GPUImageGaussianBlurFilter.h" - -@implementation GPUImageGaussianBlurFilter - -@synthesize texelSpacingMultiplier = _texelSpacingMultiplier; -@synthesize blurRadiusInPixels = _blurRadiusInPixels; -@synthesize blurRadiusAsFractionOfImageWidth = _blurRadiusAsFractionOfImageWidth; -@synthesize blurRadiusAsFractionOfImageHeight = _blurRadiusAsFractionOfImageHeight; -@synthesize blurPasses = _blurPasses; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)initWithFirstStageVertexShaderFromString:(NSString *)firstStageVertexShaderString firstStageFragmentShaderFromString:(NSString *)firstStageFragmentShaderString secondStageVertexShaderFromString:(NSString *)secondStageVertexShaderString secondStageFragmentShaderFromString:(NSString *)secondStageFragmentShaderString -{ - if (!(self = [super initWithFirstStageVertexShaderFromString:firstStageVertexShaderString firstStageFragmentShaderFromString:firstStageFragmentShaderString secondStageVertexShaderFromString:secondStageVertexShaderString secondStageFragmentShaderFromString:secondStageFragmentShaderString])) - { - return nil; - } - - self.texelSpacingMultiplier = 1.0; - _blurRadiusInPixels = 2.0; - shouldResizeBlurRadiusWithImageSize = NO; - - return self; -} - -- (id)init; -{ - NSString *currentGaussianBlurVertexShader = [[self class] vertexShaderForOptimizedBlurOfRadius:4 sigma:2.0]; - NSString *currentGaussianBlurFragmentShader = [[self class] fragmentShaderForOptimizedBlurOfRadius:4 sigma:2.0]; - - return [self initWithFirstStageVertexShaderFromString:currentGaussianBlurVertexShader firstStageFragmentShaderFromString:currentGaussianBlurFragmentShader secondStageVertexShaderFromString:currentGaussianBlurVertexShader secondStageFragmentShaderFromString:currentGaussianBlurFragmentShader]; -} - -#pragma mark - -#pragma mark Auto-generation of optimized Gaussian shaders - -// "Implementation limit of 32 varying components exceeded" - Max number of varyings for these GPUs - -+ (NSString *)vertexShaderForStandardBlurOfRadius:(NSUInteger)blurRadius sigma:(CGFloat)sigma; -{ - if (blurRadius < 1) - { - return kGPUImageVertexShaderString; - } - -// NSLog(@"Max varyings: %d", [GPUImageContext maximumVaryingVectorsForThisDevice]); - NSMutableString *shaderString = [[NSMutableString alloc] init]; - - // Header - [shaderString appendFormat:@"\ - attribute vec4 position;\n\ - attribute vec4 inputTextureCoordinate;\n\ - \n\ - uniform float texelWidthOffset;\n\ - uniform float texelHeightOffset;\n\ - \n\ - varying vec2 blurCoordinates[%lu];\n\ - \n\ - void main()\n\ - {\n\ - gl_Position = position;\n\ - \n\ - vec2 singleStepOffset = vec2(texelWidthOffset, texelHeightOffset);\n", (unsigned long)(blurRadius * 2 + 1) ]; - - // Inner offset loop - for (NSUInteger currentBlurCoordinateIndex = 0; currentBlurCoordinateIndex < (blurRadius * 2 + 1); currentBlurCoordinateIndex++) - { - NSInteger offsetFromCenter = currentBlurCoordinateIndex - blurRadius; - if (offsetFromCenter < 0) - { - [shaderString appendFormat:@"blurCoordinates[%ld] = inputTextureCoordinate.xy - singleStepOffset * %f;\n", (unsigned long)currentBlurCoordinateIndex, (GLfloat)(-offsetFromCenter)]; - } - else if (offsetFromCenter > 0) - { - [shaderString appendFormat:@"blurCoordinates[%ld] = inputTextureCoordinate.xy + singleStepOffset * %f;\n", (unsigned long)currentBlurCoordinateIndex, (GLfloat)(offsetFromCenter)]; - } - else - { - [shaderString appendFormat:@"blurCoordinates[%ld] = inputTextureCoordinate.xy;\n", (unsigned long)currentBlurCoordinateIndex]; - } - } - - // Footer - [shaderString appendString:@"}\n"]; - - return shaderString; -} - -+ (NSString *)fragmentShaderForStandardBlurOfRadius:(NSUInteger)blurRadius sigma:(CGFloat)sigma; -{ - if (blurRadius < 1) - { - return kGPUImagePassthroughFragmentShaderString; - } - - // First, generate the normal Gaussian weights for a given sigma - GLfloat *standardGaussianWeights = calloc(blurRadius + 1, sizeof(GLfloat)); - GLfloat sumOfWeights = 0.0; - for (NSUInteger currentGaussianWeightIndex = 0; currentGaussianWeightIndex < blurRadius + 1; currentGaussianWeightIndex++) - { - standardGaussianWeights[currentGaussianWeightIndex] = (1.0 / sqrt(2.0 * M_PI * pow(sigma, 2.0))) * exp(-pow(currentGaussianWeightIndex, 2.0) / (2.0 * pow(sigma, 2.0))); - - if (currentGaussianWeightIndex == 0) - { - sumOfWeights += standardGaussianWeights[currentGaussianWeightIndex]; - } - else - { - sumOfWeights += 2.0 * standardGaussianWeights[currentGaussianWeightIndex]; - } - } - - // Next, normalize these weights to prevent the clipping of the Gaussian curve at the end of the discrete samples from reducing luminance - for (NSUInteger currentGaussianWeightIndex = 0; currentGaussianWeightIndex < blurRadius + 1; currentGaussianWeightIndex++) - { - standardGaussianWeights[currentGaussianWeightIndex] = standardGaussianWeights[currentGaussianWeightIndex] / sumOfWeights; - } - - // Finally, generate the shader from these weights - NSMutableString *shaderString = [[NSMutableString alloc] init]; - - // Header -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - [shaderString appendFormat:@"\ - uniform sampler2D inputImageTexture;\n\ - \n\ - varying highp vec2 blurCoordinates[%lu];\n\ - \n\ - void main()\n\ - {\n\ - lowp vec4 sum = vec4(0.0);\n", (unsigned long)(blurRadius * 2 + 1) ]; -#else - [shaderString appendFormat:@"\ - uniform sampler2D inputImageTexture;\n\ - \n\ - varying vec2 blurCoordinates[%lu];\n\ - \n\ - void main()\n\ - {\n\ - vec4 sum = vec4(0.0);\n", (blurRadius * 2 + 1) ]; -#endif - - // Inner texture loop - for (NSUInteger currentBlurCoordinateIndex = 0; currentBlurCoordinateIndex < (blurRadius * 2 + 1); currentBlurCoordinateIndex++) - { - NSInteger offsetFromCenter = currentBlurCoordinateIndex - blurRadius; - if (offsetFromCenter < 0) - { - [shaderString appendFormat:@"sum += texture2D(inputImageTexture, blurCoordinates[%lu]) * %f;\n", (unsigned long)currentBlurCoordinateIndex, standardGaussianWeights[-offsetFromCenter]]; - } - else - { - [shaderString appendFormat:@"sum += texture2D(inputImageTexture, blurCoordinates[%lu]) * %f;\n", (unsigned long)currentBlurCoordinateIndex, standardGaussianWeights[offsetFromCenter]]; - } - } - - // Footer - [shaderString appendString:@"\ - gl_FragColor = sum;\n\ - }\n"]; - - free(standardGaussianWeights); - return shaderString; -} - -+ (NSString *)vertexShaderForOptimizedBlurOfRadius:(NSUInteger)blurRadius sigma:(CGFloat)sigma; -{ - if (blurRadius < 1) - { - return kGPUImageVertexShaderString; - } - - // First, generate the normal Gaussian weights for a given sigma - GLfloat *standardGaussianWeights = calloc(blurRadius + 1, sizeof(GLfloat)); - GLfloat sumOfWeights = 0.0; - for (NSUInteger currentGaussianWeightIndex = 0; currentGaussianWeightIndex < blurRadius + 1; currentGaussianWeightIndex++) - { - standardGaussianWeights[currentGaussianWeightIndex] = (1.0 / sqrt(2.0 * M_PI * pow(sigma, 2.0))) * exp(-pow(currentGaussianWeightIndex, 2.0) / (2.0 * pow(sigma, 2.0))); - - if (currentGaussianWeightIndex == 0) - { - sumOfWeights += standardGaussianWeights[currentGaussianWeightIndex]; - } - else - { - sumOfWeights += 2.0 * standardGaussianWeights[currentGaussianWeightIndex]; - } - } - - // Next, normalize these weights to prevent the clipping of the Gaussian curve at the end of the discrete samples from reducing luminance - for (NSUInteger currentGaussianWeightIndex = 0; currentGaussianWeightIndex < blurRadius + 1; currentGaussianWeightIndex++) - { - standardGaussianWeights[currentGaussianWeightIndex] = standardGaussianWeights[currentGaussianWeightIndex] / sumOfWeights; - } - - // From these weights we calculate the offsets to read interpolated values from - NSUInteger numberOfOptimizedOffsets = MIN(blurRadius / 2 + (blurRadius % 2), 7); - GLfloat *optimizedGaussianOffsets = calloc(numberOfOptimizedOffsets, sizeof(GLfloat)); - - for (NSUInteger currentOptimizedOffset = 0; currentOptimizedOffset < numberOfOptimizedOffsets; currentOptimizedOffset++) - { - GLfloat firstWeight = standardGaussianWeights[currentOptimizedOffset*2 + 1]; - GLfloat secondWeight = standardGaussianWeights[currentOptimizedOffset*2 + 2]; - - GLfloat optimizedWeight = firstWeight + secondWeight; - - optimizedGaussianOffsets[currentOptimizedOffset] = (firstWeight * (currentOptimizedOffset*2 + 1) + secondWeight * (currentOptimizedOffset*2 + 2)) / optimizedWeight; - } - - NSMutableString *shaderString = [[NSMutableString alloc] init]; - // Header - [shaderString appendFormat:@"\ - attribute vec4 position;\n\ - attribute vec4 inputTextureCoordinate;\n\ - \n\ - uniform float texelWidthOffset;\n\ - uniform float texelHeightOffset;\n\ - \n\ - varying vec2 blurCoordinates[%lu];\n\ - \n\ - void main()\n\ - {\n\ - gl_Position = position;\n\ - \n\ - vec2 singleStepOffset = vec2(texelWidthOffset, texelHeightOffset);\n", (unsigned long)(1 + (numberOfOptimizedOffsets * 2))]; - - // Inner offset loop - [shaderString appendString:@"blurCoordinates[0] = inputTextureCoordinate.xy;\n"]; - for (NSUInteger currentOptimizedOffset = 0; currentOptimizedOffset < numberOfOptimizedOffsets; currentOptimizedOffset++) - { - [shaderString appendFormat:@"\ - blurCoordinates[%lu] = inputTextureCoordinate.xy + singleStepOffset * %f;\n\ - blurCoordinates[%lu] = inputTextureCoordinate.xy - singleStepOffset * %f;\n", (unsigned long)((currentOptimizedOffset * 2) + 1), optimizedGaussianOffsets[currentOptimizedOffset], (unsigned long)((currentOptimizedOffset * 2) + 2), optimizedGaussianOffsets[currentOptimizedOffset]]; - } - - // Footer - [shaderString appendString:@"}\n"]; - - free(optimizedGaussianOffsets); - free(standardGaussianWeights); - return shaderString; -} - -+ (NSString *)fragmentShaderForOptimizedBlurOfRadius:(NSUInteger)blurRadius sigma:(CGFloat)sigma; -{ - if (blurRadius < 1) - { - return kGPUImagePassthroughFragmentShaderString; - } - - // First, generate the normal Gaussian weights for a given sigma - GLfloat *standardGaussianWeights = calloc(blurRadius + 1, sizeof(GLfloat)); - GLfloat sumOfWeights = 0.0; - for (NSUInteger currentGaussianWeightIndex = 0; currentGaussianWeightIndex < blurRadius + 1; currentGaussianWeightIndex++) - { - standardGaussianWeights[currentGaussianWeightIndex] = (1.0 / sqrt(2.0 * M_PI * pow(sigma, 2.0))) * exp(-pow(currentGaussianWeightIndex, 2.0) / (2.0 * pow(sigma, 2.0))); - - if (currentGaussianWeightIndex == 0) - { - sumOfWeights += standardGaussianWeights[currentGaussianWeightIndex]; - } - else - { - sumOfWeights += 2.0 * standardGaussianWeights[currentGaussianWeightIndex]; - } - } - - // Next, normalize these weights to prevent the clipping of the Gaussian curve at the end of the discrete samples from reducing luminance - for (NSUInteger currentGaussianWeightIndex = 0; currentGaussianWeightIndex < blurRadius + 1; currentGaussianWeightIndex++) - { - standardGaussianWeights[currentGaussianWeightIndex] = standardGaussianWeights[currentGaussianWeightIndex] / sumOfWeights; - } - - // From these weights we calculate the offsets to read interpolated values from - NSUInteger numberOfOptimizedOffsets = MIN(blurRadius / 2 + (blurRadius % 2), 7); - NSUInteger trueNumberOfOptimizedOffsets = blurRadius / 2 + (blurRadius % 2); - - NSMutableString *shaderString = [[NSMutableString alloc] init]; - - // Header -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - [shaderString appendFormat:@"\ - uniform sampler2D inputImageTexture;\n\ - uniform highp float texelWidthOffset;\n\ - uniform highp float texelHeightOffset;\n\ - \n\ - varying highp vec2 blurCoordinates[%lu];\n\ - \n\ - void main()\n\ - {\n\ - lowp vec4 sum = vec4(0.0);\n", (unsigned long)(1 + (numberOfOptimizedOffsets * 2)) ]; -#else - [shaderString appendFormat:@"\ - uniform sampler2D inputImageTexture;\n\ - uniform float texelWidthOffset;\n\ - uniform float texelHeightOffset;\n\ - \n\ - varying vec2 blurCoordinates[%lu];\n\ - \n\ - void main()\n\ - {\n\ - vec4 sum = vec4(0.0);\n", 1 + (numberOfOptimizedOffsets * 2) ]; -#endif - - // Inner texture loop - [shaderString appendFormat:@"sum += texture2D(inputImageTexture, blurCoordinates[0]) * %f;\n", standardGaussianWeights[0]]; - - for (NSUInteger currentBlurCoordinateIndex = 0; currentBlurCoordinateIndex < numberOfOptimizedOffsets; currentBlurCoordinateIndex++) - { - GLfloat firstWeight = standardGaussianWeights[currentBlurCoordinateIndex * 2 + 1]; - GLfloat secondWeight = standardGaussianWeights[currentBlurCoordinateIndex * 2 + 2]; - GLfloat optimizedWeight = firstWeight + secondWeight; - - [shaderString appendFormat:@"sum += texture2D(inputImageTexture, blurCoordinates[%lu]) * %f;\n", (unsigned long)((currentBlurCoordinateIndex * 2) + 1), optimizedWeight]; - [shaderString appendFormat:@"sum += texture2D(inputImageTexture, blurCoordinates[%lu]) * %f;\n", (unsigned long)((currentBlurCoordinateIndex * 2) + 2), optimizedWeight]; - } - - // If the number of required samples exceeds the amount we can pass in via varyings, we have to do dependent texture reads in the fragment shader - if (trueNumberOfOptimizedOffsets > numberOfOptimizedOffsets) - { -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - [shaderString appendString:@"highp vec2 singleStepOffset = vec2(texelWidthOffset, texelHeightOffset);\n"]; -#else - [shaderString appendString:@"vec2 singleStepOffset = vec2(texelWidthOffset, texelHeightOffset);\n"]; -#endif - - for (NSUInteger currentOverlowTextureRead = numberOfOptimizedOffsets; currentOverlowTextureRead < trueNumberOfOptimizedOffsets; currentOverlowTextureRead++) - { - GLfloat firstWeight = standardGaussianWeights[currentOverlowTextureRead * 2 + 1]; - GLfloat secondWeight = standardGaussianWeights[currentOverlowTextureRead * 2 + 2]; - - GLfloat optimizedWeight = firstWeight + secondWeight; - GLfloat optimizedOffset = (firstWeight * (currentOverlowTextureRead * 2 + 1) + secondWeight * (currentOverlowTextureRead * 2 + 2)) / optimizedWeight; - - [shaderString appendFormat:@"sum += texture2D(inputImageTexture, blurCoordinates[0] + singleStepOffset * %f) * %f;\n", optimizedOffset, optimizedWeight]; - [shaderString appendFormat:@"sum += texture2D(inputImageTexture, blurCoordinates[0] - singleStepOffset * %f) * %f;\n", optimizedOffset, optimizedWeight]; - } - } - - // Footer - [shaderString appendString:@"\ - gl_FragColor = sum;\n\ - }\n"]; - - free(standardGaussianWeights); - return shaderString; -} - -- (void)setupFilterForSize:(CGSize)filterFrameSize; -{ - [super setupFilterForSize:filterFrameSize]; - - if (shouldResizeBlurRadiusWithImageSize) - { - if (self.blurRadiusAsFractionOfImageWidth > 0) - { - self.blurRadiusInPixels = filterFrameSize.width * self.blurRadiusAsFractionOfImageWidth; - } - else - { - self.blurRadiusInPixels = filterFrameSize.height * self.blurRadiusAsFractionOfImageHeight; - } - } -} - -#pragma mark - -#pragma mark Rendering - -- (void)renderToTextureWithVertices:(const GLfloat *)vertices textureCoordinates:(const GLfloat *)textureCoordinates; -{ - [super renderToTextureWithVertices:vertices textureCoordinates:textureCoordinates]; - - for (NSUInteger currentAdditionalBlurPass = 1; currentAdditionalBlurPass < _blurPasses; currentAdditionalBlurPass++) - { - [super renderToTextureWithVertices:vertices textureCoordinates:[[self class] textureCoordinatesForRotation:kGPUImageNoRotation]]; - } -} - -- (void)switchToVertexShader:(NSString *)newVertexShader fragmentShader:(NSString *)newFragmentShader; -{ - runSynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext useImageProcessingContext]; - - filterProgram = [[GPUImageContext sharedImageProcessingContext] programForVertexShaderString:newVertexShader fragmentShaderString:newFragmentShader]; - - if (!filterProgram.initialized) - { - [self initializeAttributes]; - - if (![filterProgram link]) - { - NSString *progLog = [filterProgram programLog]; - NSLog(@"Program link log: %@", progLog); - NSString *fragLog = [filterProgram fragmentShaderLog]; - NSLog(@"Fragment shader compile log: %@", fragLog); - NSString *vertLog = [filterProgram vertexShaderLog]; - NSLog(@"Vertex shader compile log: %@", vertLog); - filterProgram = nil; - NSAssert(NO, @"Filter shader link failed"); - } - } - - filterPositionAttribute = [filterProgram attributeIndex:@"position"]; - filterTextureCoordinateAttribute = [filterProgram attributeIndex:@"inputTextureCoordinate"]; - filterInputTextureUniform = [filterProgram uniformIndex:@"inputImageTexture"]; // This does assume a name of "inputImageTexture" for the fragment shader - verticalPassTexelWidthOffsetUniform = [filterProgram uniformIndex:@"texelWidthOffset"]; - verticalPassTexelHeightOffsetUniform = [filterProgram uniformIndex:@"texelHeightOffset"]; - [GPUImageContext setActiveShaderProgram:filterProgram]; - - glEnableVertexAttribArray(filterPositionAttribute); - glEnableVertexAttribArray(filterTextureCoordinateAttribute); - - secondFilterProgram = [[GPUImageContext sharedImageProcessingContext] programForVertexShaderString:newVertexShader fragmentShaderString:newFragmentShader]; - - if (!secondFilterProgram.initialized) - { - [self initializeSecondaryAttributes]; - - if (![secondFilterProgram link]) - { - NSString *progLog = [secondFilterProgram programLog]; - NSLog(@"Program link log: %@", progLog); - NSString *fragLog = [secondFilterProgram fragmentShaderLog]; - NSLog(@"Fragment shader compile log: %@", fragLog); - NSString *vertLog = [secondFilterProgram vertexShaderLog]; - NSLog(@"Vertex shader compile log: %@", vertLog); - secondFilterProgram = nil; - NSAssert(NO, @"Filter shader link failed"); - } - } - - secondFilterPositionAttribute = [secondFilterProgram attributeIndex:@"position"]; - secondFilterTextureCoordinateAttribute = [secondFilterProgram attributeIndex:@"inputTextureCoordinate"]; - secondFilterInputTextureUniform = [secondFilterProgram uniformIndex:@"inputImageTexture"]; // This does assume a name of "inputImageTexture" for the fragment shader - secondFilterInputTextureUniform2 = [secondFilterProgram uniformIndex:@"inputImageTexture2"]; // This does assume a name of "inputImageTexture2" for second input texture in the fragment shader - horizontalPassTexelWidthOffsetUniform = [secondFilterProgram uniformIndex:@"texelWidthOffset"]; - horizontalPassTexelHeightOffsetUniform = [secondFilterProgram uniformIndex:@"texelHeightOffset"]; - [GPUImageContext setActiveShaderProgram:secondFilterProgram]; - - glEnableVertexAttribArray(secondFilterPositionAttribute); - glEnableVertexAttribArray(secondFilterTextureCoordinateAttribute); - - [self setupFilterForSize:[self sizeOfFBO]]; - glFinish(); - }); - -} - -#pragma mark - -#pragma mark Accessors - -- (void)setTexelSpacingMultiplier:(CGFloat)newValue; -{ - _texelSpacingMultiplier = newValue; - - _verticalTexelSpacing = _texelSpacingMultiplier; - _horizontalTexelSpacing = _texelSpacingMultiplier; - - [self setupFilterForSize:[self sizeOfFBO]]; -} - -// inputRadius for Core Image's CIGaussianBlur is really sigma in the Gaussian equation, so I'm using that for my blur radius, to be consistent -- (void)setBlurRadiusInPixels:(CGFloat)newValue; -{ - // 7.0 is the limit for blur size for hardcoded varying offsets - - if (round(newValue) != _blurRadiusInPixels) - { - _blurRadiusInPixels = round(newValue); // For now, only do integral sigmas - - NSUInteger calculatedSampleRadius = 0; - if (_blurRadiusInPixels >= 1) // Avoid a divide-by-zero error here - { - // Calculate the number of pixels to sample from by setting a bottom limit for the contribution of the outermost pixel - CGFloat minimumWeightToFindEdgeOfSamplingArea = 1.0/256.0; - calculatedSampleRadius = floor(sqrt(-2.0 * pow(_blurRadiusInPixels, 2.0) * log(minimumWeightToFindEdgeOfSamplingArea * sqrt(2.0 * M_PI * pow(_blurRadiusInPixels, 2.0))) )); - calculatedSampleRadius += calculatedSampleRadius % 2; // There's nothing to gain from handling odd radius sizes, due to the optimizations I use - } - -// NSLog(@"Blur radius: %f, calculated sample radius: %d", _blurRadiusInPixels, calculatedSampleRadius); -// - NSString *newGaussianBlurVertexShader = [[self class] vertexShaderForOptimizedBlurOfRadius:calculatedSampleRadius sigma:_blurRadiusInPixels]; - NSString *newGaussianBlurFragmentShader = [[self class] fragmentShaderForOptimizedBlurOfRadius:calculatedSampleRadius sigma:_blurRadiusInPixels]; - -// NSLog(@"Optimized vertex shader: \n%@", newGaussianBlurVertexShader); -// NSLog(@"Optimized fragment shader: \n%@", newGaussianBlurFragmentShader); -// - [self switchToVertexShader:newGaussianBlurVertexShader fragmentShader:newGaussianBlurFragmentShader]; - } - shouldResizeBlurRadiusWithImageSize = NO; -} - -- (void)setBlurRadiusAsFractionOfImageWidth:(CGFloat)blurRadiusAsFractionOfImageWidth -{ - if (blurRadiusAsFractionOfImageWidth < 0) return; - - shouldResizeBlurRadiusWithImageSize = _blurRadiusAsFractionOfImageWidth != blurRadiusAsFractionOfImageWidth && blurRadiusAsFractionOfImageWidth > 0; - _blurRadiusAsFractionOfImageWidth = blurRadiusAsFractionOfImageWidth; - _blurRadiusAsFractionOfImageHeight = 0; -} - -- (void)setBlurRadiusAsFractionOfImageHeight:(CGFloat)blurRadiusAsFractionOfImageHeight -{ - if (blurRadiusAsFractionOfImageHeight < 0) return; - - shouldResizeBlurRadiusWithImageSize = _blurRadiusAsFractionOfImageHeight != blurRadiusAsFractionOfImageHeight && blurRadiusAsFractionOfImageHeight > 0; - _blurRadiusAsFractionOfImageHeight = blurRadiusAsFractionOfImageHeight; - _blurRadiusAsFractionOfImageWidth = 0; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageGaussianBlurPositionFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageGaussianBlurPositionFilter.h deleted file mode 100755 index dc88a56..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageGaussianBlurPositionFilter.h +++ /dev/null @@ -1,22 +0,0 @@ -#import "GPUImageTwoPassTextureSamplingFilter.h" - -/** A more generalized 9x9 Gaussian blur filter - */ -@interface GPUImageGaussianBlurPositionFilter : GPUImageTwoPassTextureSamplingFilter -{ - GLint blurCenterUniform, blurRadiusUniform, aspectRatioUniform; -} - -/** A multiplier for the blur size, ranging from 0.0 on up, with a default of 1.0 - */ -@property (readwrite, nonatomic) CGFloat blurSize; - -/** Center for the blur, defaults to 0.5, 0.5 - */ -@property (readwrite, nonatomic) CGPoint blurCenter; - -/** Radius for the blur, defaults to 1.0 - */ -@property (readwrite, nonatomic) CGFloat blurRadius; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageGaussianBlurPositionFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageGaussianBlurPositionFilter.m deleted file mode 100755 index 8ecd924..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageGaussianBlurPositionFilter.m +++ /dev/null @@ -1,232 +0,0 @@ -#import "GPUImageGaussianBlurPositionFilter.h" - -NSString *const kGPUImageGaussianBlurPositionVertexShaderString = SHADER_STRING -( - attribute vec4 position; - attribute vec4 inputTextureCoordinate; - - const int GAUSSIAN_SAMPLES = 9; - - uniform float texelWidthOffset; - uniform float texelHeightOffset; - varying vec2 textureCoordinate; - varying vec2 blurCoordinates[GAUSSIAN_SAMPLES]; - - void main() - { - gl_Position = position; - textureCoordinate = inputTextureCoordinate.xy; - - // Calculate the positions for the blur - int multiplier = 0; - vec2 blurStep; - vec2 singleStepOffset = vec2(texelWidthOffset, texelHeightOffset); - - for (int i = 0; i < GAUSSIAN_SAMPLES; i++) { - multiplier = (i - ((GAUSSIAN_SAMPLES - 1) / 2)); - // Blur in x (horizontal) - blurStep = float(multiplier) * singleStepOffset; - blurCoordinates[i] = inputTextureCoordinate.xy + blurStep; - } - } -); - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageGaussianBlurPositionFragmentShaderString = SHADER_STRING -( - uniform sampler2D inputImageTexture; - - const lowp int GAUSSIAN_SAMPLES = 9; - - varying highp vec2 textureCoordinate; - varying highp vec2 blurCoordinates[GAUSSIAN_SAMPLES]; - - uniform highp float aspectRatio; - uniform lowp vec2 blurCenter; - uniform highp float blurRadius; - - void main() { - highp vec2 textureCoordinateToUse = vec2(textureCoordinate.x, (textureCoordinate.y * aspectRatio + 0.5 - 0.5 * aspectRatio)); - highp float dist = distance(blurCenter, textureCoordinateToUse); - - if (dist < blurRadius) - { - lowp vec4 sum = vec4(0.0); - - sum += texture2D(inputImageTexture, blurCoordinates[0]) * 0.05; - sum += texture2D(inputImageTexture, blurCoordinates[1]) * 0.09; - sum += texture2D(inputImageTexture, blurCoordinates[2]) * 0.12; - sum += texture2D(inputImageTexture, blurCoordinates[3]) * 0.15; - sum += texture2D(inputImageTexture, blurCoordinates[4]) * 0.18; - sum += texture2D(inputImageTexture, blurCoordinates[5]) * 0.15; - sum += texture2D(inputImageTexture, blurCoordinates[6]) * 0.12; - sum += texture2D(inputImageTexture, blurCoordinates[7]) * 0.09; - sum += texture2D(inputImageTexture, blurCoordinates[8]) * 0.05; - - gl_FragColor = sum; - } - else - { - gl_FragColor = texture2D(inputImageTexture, textureCoordinate); - } - } -); -#else -NSString *const kGPUImageGaussianBlurPositionFragmentShaderString = SHADER_STRING -( - uniform sampler2D inputImageTexture; - - const int GAUSSIAN_SAMPLES = 9; - - varying vec2 textureCoordinate; - varying vec2 blurCoordinates[GAUSSIAN_SAMPLES]; - - uniform float aspectRatio; - uniform vec2 blurCenter; - uniform float blurRadius; - - void main() - { - vec2 textureCoordinateToUse = vec2(textureCoordinate.x, (textureCoordinate.y * aspectRatio + 0.5 - 0.5 * aspectRatio)); - float dist = distance(blurCenter, textureCoordinateToUse); - - if (dist < blurRadius) - { - vec4 sum = vec4(0.0); - - sum += texture2D(inputImageTexture, blurCoordinates[0]) * 0.05; - sum += texture2D(inputImageTexture, blurCoordinates[1]) * 0.09; - sum += texture2D(inputImageTexture, blurCoordinates[2]) * 0.12; - sum += texture2D(inputImageTexture, blurCoordinates[3]) * 0.15; - sum += texture2D(inputImageTexture, blurCoordinates[4]) * 0.18; - sum += texture2D(inputImageTexture, blurCoordinates[5]) * 0.15; - sum += texture2D(inputImageTexture, blurCoordinates[6]) * 0.12; - sum += texture2D(inputImageTexture, blurCoordinates[7]) * 0.09; - sum += texture2D(inputImageTexture, blurCoordinates[8]) * 0.05; - - gl_FragColor = sum; - } - else - { - gl_FragColor = texture2D(inputImageTexture, textureCoordinate); - } - } -); -#endif - -@interface GPUImageGaussianBlurPositionFilter () - -- (void)adjustAspectRatio; - -@property (readwrite, nonatomic) CGFloat aspectRatio; - -@end - -@implementation GPUImageGaussianBlurPositionFilter - -@synthesize blurSize = _blurSize; -@synthesize blurCenter = _blurCenter; -@synthesize aspectRatio = _aspectRatio; - -- (id) initWithFirstStageVertexShaderFromString:(NSString *)firstStageVertexShaderString - firstStageFragmentShaderFromString:(NSString *)firstStageFragmentShaderString - secondStageVertexShaderFromString:(NSString *)secondStageVertexShaderString - secondStageFragmentShaderFromString:(NSString *)secondStageFragmentShaderString { - - if (!(self = [super initWithFirstStageVertexShaderFromString:firstStageVertexShaderString ? firstStageVertexShaderString : kGPUImageGaussianBlurPositionVertexShaderString - firstStageFragmentShaderFromString:firstStageFragmentShaderString ? firstStageFragmentShaderString : kGPUImageGaussianBlurPositionFragmentShaderString - secondStageVertexShaderFromString:secondStageVertexShaderString ? secondStageVertexShaderString : kGPUImageGaussianBlurPositionVertexShaderString - secondStageFragmentShaderFromString:secondStageFragmentShaderString ? secondStageFragmentShaderString : kGPUImageGaussianBlurPositionFragmentShaderString])) { - return nil; - } - - aspectRatioUniform = [secondFilterProgram uniformIndex:@"aspectRatio"]; - blurCenterUniform = [secondFilterProgram uniformIndex:@"blurCenter"]; - blurRadiusUniform = [secondFilterProgram uniformIndex:@"blurRadius"]; - - self.blurSize = 1.0; - self.blurRadius = 1.0; - self.blurCenter = CGPointMake(0.5, 0.5); - - return self; -} - -- (id)init; -{ - return [self initWithFirstStageVertexShaderFromString:nil - firstStageFragmentShaderFromString:nil - secondStageVertexShaderFromString:nil - secondStageFragmentShaderFromString:nil]; -} - -- (void)adjustAspectRatio; -{ - if (GPUImageRotationSwapsWidthAndHeight(inputRotation)) - { - [self setAspectRatio:(inputTextureSize.width / inputTextureSize.height)]; - } - else - { - [self setAspectRatio:(inputTextureSize.height / inputTextureSize.width)]; - } -} - -- (void)forceProcessingAtSize:(CGSize)frameSize; -{ - [super forceProcessingAtSize:frameSize]; - [self adjustAspectRatio]; -} - -- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex; -{ - CGSize oldInputSize = inputTextureSize; - [super setInputSize:newSize atIndex:textureIndex]; - - if ( (!CGSizeEqualToSize(oldInputSize, inputTextureSize)) && (!CGSizeEqualToSize(newSize, CGSizeZero)) ) - { - [self adjustAspectRatio]; - } -} - -- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; -{ - [super setInputRotation:newInputRotation atIndex:textureIndex]; - [self setBlurCenter:self.blurCenter]; - [self adjustAspectRatio]; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setBlurSize:(CGFloat)newValue; -{ - _blurSize = newValue; - - _verticalTexelSpacing = _blurSize; - _horizontalTexelSpacing = _blurSize; - - [self setupFilterForSize:[self sizeOfFBO]]; -} - -- (void) setBlurCenter:(CGPoint)blurCenter; -{ - _blurCenter = blurCenter; - CGPoint rotatedPoint = [self rotatedPoint:blurCenter forRotation:inputRotation]; - [self setPoint:rotatedPoint forUniform:blurCenterUniform program:secondFilterProgram]; -} - -- (void) setBlurRadius:(CGFloat)blurRadius; -{ - _blurRadius = blurRadius; - - [self setFloat:_blurRadius forUniform:blurRadiusUniform program:secondFilterProgram]; -} - -- (void) setAspectRatio:(CGFloat)newValue; -{ - _aspectRatio = newValue; - - [self setFloat:_aspectRatio forUniform:aspectRatioUniform program:secondFilterProgram]; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageGaussianSelectiveBlurFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageGaussianSelectiveBlurFilter.h deleted file mode 100755 index 0232456..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageGaussianSelectiveBlurFilter.h +++ /dev/null @@ -1,30 +0,0 @@ -#import "GPUImageFilterGroup.h" - -@class GPUImageGaussianBlurFilter; - -/** A Gaussian blur that preserves focus within a circular region - */ -@interface GPUImageGaussianSelectiveBlurFilter : GPUImageFilterGroup -{ - GPUImageGaussianBlurFilter *blurFilter; - GPUImageFilter *selectiveFocusFilter; - BOOL hasOverriddenAspectRatio; -} - -/** The radius of the circular area being excluded from the blur - */ -@property (readwrite, nonatomic) CGFloat excludeCircleRadius; -/** The center of the circular area being excluded from the blur - */ -@property (readwrite, nonatomic) CGPoint excludeCirclePoint; -/** The size of the area between the blurred portion and the clear circle - */ -@property (readwrite, nonatomic) CGFloat excludeBlurSize; -/** A radius in pixels to use for the blur, with a default of 5.0. This adjusts the sigma variable in the Gaussian distribution function. - */ -@property (readwrite, nonatomic) CGFloat blurRadiusInPixels; -/** The aspect ratio of the image, used to adjust the circularity of the in-focus region. By default, this matches the image aspect ratio, but you can override this value. - */ -@property (readwrite, nonatomic) CGFloat aspectRatio; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageGaussianSelectiveBlurFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageGaussianSelectiveBlurFilter.m deleted file mode 100755 index 7ebc9e1..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageGaussianSelectiveBlurFilter.m +++ /dev/null @@ -1,147 +0,0 @@ -#import "GPUImageGaussianSelectiveBlurFilter.h" -#import "GPUImageGaussianBlurFilter.h" -#import "GPUImageTwoInputFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageGaussianSelectiveBlurFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - varying highp vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - uniform lowp float excludeCircleRadius; - uniform lowp vec2 excludeCirclePoint; - uniform lowp float excludeBlurSize; - uniform highp float aspectRatio; - - void main() - { - lowp vec4 sharpImageColor = texture2D(inputImageTexture, textureCoordinate); - lowp vec4 blurredImageColor = texture2D(inputImageTexture2, textureCoordinate2); - - highp vec2 textureCoordinateToUse = vec2(textureCoordinate2.x, (textureCoordinate2.y * aspectRatio + 0.5 - 0.5 * aspectRatio)); - highp float distanceFromCenter = distance(excludeCirclePoint, textureCoordinateToUse); - - gl_FragColor = mix(sharpImageColor, blurredImageColor, smoothstep(excludeCircleRadius - excludeBlurSize, excludeCircleRadius, distanceFromCenter)); - } -); -#else -NSString *const kGPUImageGaussianSelectiveBlurFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - uniform float excludeCircleRadius; - uniform vec2 excludeCirclePoint; - uniform float excludeBlurSize; - uniform float aspectRatio; - - void main() - { - vec4 sharpImageColor = texture2D(inputImageTexture, textureCoordinate); - vec4 blurredImageColor = texture2D(inputImageTexture2, textureCoordinate2); - - vec2 textureCoordinateToUse = vec2(textureCoordinate2.x, (textureCoordinate2.y * aspectRatio + 0.5 - 0.5 * aspectRatio)); - float distanceFromCenter = distance(excludeCirclePoint, textureCoordinateToUse); - - gl_FragColor = mix(sharpImageColor, blurredImageColor, smoothstep(excludeCircleRadius - excludeBlurSize, excludeCircleRadius, distanceFromCenter)); - } -); -#endif - -@implementation GPUImageGaussianSelectiveBlurFilter - -@synthesize excludeCirclePoint = _excludeCirclePoint, excludeCircleRadius = _excludeCircleRadius, excludeBlurSize = _excludeBlurSize; -@synthesize blurRadiusInPixels = _blurRadiusInPixels; -@synthesize aspectRatio = _aspectRatio; - -- (id)init; -{ - if (!(self = [super init])) - { - return nil; - } - - hasOverriddenAspectRatio = NO; - - // First pass: apply a variable Gaussian blur - blurFilter = [[GPUImageGaussianBlurFilter alloc] init]; - [self addFilter:blurFilter]; - - // Second pass: combine the blurred image with the original sharp one - selectiveFocusFilter = [[GPUImageTwoInputFilter alloc] initWithFragmentShaderFromString:kGPUImageGaussianSelectiveBlurFragmentShaderString]; - [self addFilter:selectiveFocusFilter]; - - // Texture location 0 needs to be the sharp image for both the blur and the second stage processing - [blurFilter addTarget:selectiveFocusFilter atTextureLocation:1]; - - // To prevent double updating of this filter, disable updates from the sharp image side - self.initialFilters = [NSArray arrayWithObjects:blurFilter, selectiveFocusFilter, nil]; - self.terminalFilter = selectiveFocusFilter; - - self.blurRadiusInPixels = 5.0; - - self.excludeCircleRadius = 60.0/320.0; - self.excludeCirclePoint = CGPointMake(0.5f, 0.5f); - self.excludeBlurSize = 30.0/320.0; - - return self; -} - -- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex; -{ - CGSize oldInputSize = inputTextureSize; - [super setInputSize:newSize atIndex:textureIndex]; - inputTextureSize = newSize; - - if ( (!CGSizeEqualToSize(oldInputSize, inputTextureSize)) && (!hasOverriddenAspectRatio) && (!CGSizeEqualToSize(newSize, CGSizeZero)) ) - { - _aspectRatio = (inputTextureSize.width / inputTextureSize.height); - [selectiveFocusFilter setFloat:_aspectRatio forUniformName:@"aspectRatio"]; - } -} - -#pragma mark - -#pragma mark Accessors - -- (void)setBlurRadiusInPixels:(CGFloat)newValue; -{ - blurFilter.blurRadiusInPixels = newValue; -} - -- (CGFloat)blurRadiusInPixels; -{ - return blurFilter.blurRadiusInPixels; -} - -- (void)setExcludeCirclePoint:(CGPoint)newValue; -{ - _excludeCirclePoint = newValue; - [selectiveFocusFilter setPoint:newValue forUniformName:@"excludeCirclePoint"]; -} - -- (void)setExcludeCircleRadius:(CGFloat)newValue; -{ - _excludeCircleRadius = newValue; - [selectiveFocusFilter setFloat:newValue forUniformName:@"excludeCircleRadius"]; -} - -- (void)setExcludeBlurSize:(CGFloat)newValue; -{ - _excludeBlurSize = newValue; - [selectiveFocusFilter setFloat:newValue forUniformName:@"excludeBlurSize"]; -} - -- (void)setAspectRatio:(CGFloat)newValue; -{ - hasOverriddenAspectRatio = YES; - _aspectRatio = newValue; - [selectiveFocusFilter setFloat:_aspectRatio forUniformName:@"aspectRatio"]; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageGlassSphereFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageGlassSphereFilter.h deleted file mode 100644 index 809a4ee..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageGlassSphereFilter.h +++ /dev/null @@ -1,5 +0,0 @@ -#import "GPUImageSphereRefractionFilter.h" - -@interface GPUImageGlassSphereFilter : GPUImageSphereRefractionFilter - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageGlassSphereFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageGlassSphereFilter.m deleted file mode 100644 index 1866291..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageGlassSphereFilter.m +++ /dev/null @@ -1,106 +0,0 @@ -#import "GPUImageGlassSphereFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageGlassSphereFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform highp vec2 center; - uniform highp float radius; - uniform highp float aspectRatio; - uniform highp float refractiveIndex; -// uniform vec3 lightPosition; - const highp vec3 lightPosition = vec3(-0.5, 0.5, 1.0); - const highp vec3 ambientLightPosition = vec3(0.0, 0.0, 1.0); - - void main() - { - highp vec2 textureCoordinateToUse = vec2(textureCoordinate.x, (textureCoordinate.y * aspectRatio + 0.5 - 0.5 * aspectRatio)); - highp float distanceFromCenter = distance(center, textureCoordinateToUse); - lowp float checkForPresenceWithinSphere = step(distanceFromCenter, radius); - - distanceFromCenter = distanceFromCenter / radius; - - highp float normalizedDepth = radius * sqrt(1.0 - distanceFromCenter * distanceFromCenter); - highp vec3 sphereNormal = normalize(vec3(textureCoordinateToUse - center, normalizedDepth)); - - highp vec3 refractedVector = 2.0 * refract(vec3(0.0, 0.0, -1.0), sphereNormal, refractiveIndex); - refractedVector.xy = -refractedVector.xy; - - highp vec3 finalSphereColor = texture2D(inputImageTexture, (refractedVector.xy + 1.0) * 0.5).rgb; - - // Grazing angle lighting - highp float lightingIntensity = 2.5 * (1.0 - pow(clamp(dot(ambientLightPosition, sphereNormal), 0.0, 1.0), 0.25)); - finalSphereColor += lightingIntensity; - - // Specular lighting - lightingIntensity = clamp(dot(normalize(lightPosition), sphereNormal), 0.0, 1.0); - lightingIntensity = pow(lightingIntensity, 15.0); - finalSphereColor += vec3(0.8, 0.8, 0.8) * lightingIntensity; - - gl_FragColor = vec4(finalSphereColor, 1.0) * checkForPresenceWithinSphere; - } -); -#else -NSString *const kGPUImageGlassSphereFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform vec2 center; - uniform float radius; - uniform float aspectRatio; - uniform float refractiveIndex; - // uniform vec3 lightPosition; - const vec3 lightPosition = vec3(-0.5, 0.5, 1.0); - const vec3 ambientLightPosition = vec3(0.0, 0.0, 1.0); - - void main() - { - vec2 textureCoordinateToUse = vec2(textureCoordinate.x, (textureCoordinate.y * aspectRatio + 0.5 - 0.5 * aspectRatio)); - float distanceFromCenter = distance(center, textureCoordinateToUse); - float checkForPresenceWithinSphere = step(distanceFromCenter, radius); - - distanceFromCenter = distanceFromCenter / radius; - - float normalizedDepth = radius * sqrt(1.0 - distanceFromCenter * distanceFromCenter); - vec3 sphereNormal = normalize(vec3(textureCoordinateToUse - center, normalizedDepth)); - - vec3 refractedVector = 2.0 * refract(vec3(0.0, 0.0, -1.0), sphereNormal, refractiveIndex); - refractedVector.xy = -refractedVector.xy; - - vec3 finalSphereColor = texture2D(inputImageTexture, (refractedVector.xy + 1.0) * 0.5).rgb; - - // Grazing angle lighting - float lightingIntensity = 2.5 * (1.0 - pow(clamp(dot(ambientLightPosition, sphereNormal), 0.0, 1.0), 0.25)); - finalSphereColor += lightingIntensity; - - // Specular lighting - lightingIntensity = clamp(dot(normalize(lightPosition), sphereNormal), 0.0, 1.0); - lightingIntensity = pow(lightingIntensity, 15.0); - finalSphereColor += vec3(0.8, 0.8, 0.8) * lightingIntensity; - - gl_FragColor = vec4(finalSphereColor, 1.0) * checkForPresenceWithinSphere; - } -); -#endif - -@implementation GPUImageGlassSphereFilter - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageGlassSphereFragmentShaderString])) - { - return nil; - } - - return self; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageGrayscaleFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageGrayscaleFilter.h deleted file mode 100755 index 2d97f8c..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageGrayscaleFilter.h +++ /dev/null @@ -1,9 +0,0 @@ -#import "GPUImageFilter.h" - -extern NSString *const kGPUImageLuminanceFragmentShaderString; - -/** Converts an image to grayscale (a slightly faster implementation of the saturation filter, without the ability to vary the color contribution) - */ -@interface GPUImageGrayscaleFilter : GPUImageFilter - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageGrayscaleFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageGrayscaleFilter.m deleted file mode 100755 index 0066ca8..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageGrayscaleFilter.m +++ /dev/null @@ -1,141 +0,0 @@ -#import "GPUImageGrayscaleFilter.h" - -@implementation GPUImageGrayscaleFilter - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageLuminanceFragmentShaderString = SHADER_STRING -( - precision highp float; - - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - const highp vec3 W = vec3(0.2125, 0.7154, 0.0721); - - void main() - { - lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - float luminance = dot(textureColor.rgb, W); - - gl_FragColor = vec4(vec3(luminance), textureColor.a); - } -); -#else -NSString *const kGPUImageLuminanceFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - const vec3 W = vec3(0.2125, 0.7154, 0.0721); - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - float luminance = dot(textureColor.rgb, W); - - gl_FragColor = vec4(vec3(luminance), textureColor.a); - } -); -#endif - - -- (void)renderToTextureWithVertices:(const GLfloat *)vertices textureCoordinates:(const GLfloat *)textureCoordinates; -{ - if (!currentlyReceivingMonochromeInput) - { - [super renderToTextureWithVertices:vertices textureCoordinates:textureCoordinates]; - } -} - -//- (void)setInputTexture:(GLuint)newInputTexture atIndex:(NSInteger)textureIndex; -//{ -// [super setInputTexture:newInputTexture atIndex:textureIndex]; -// if (currentlyReceivingMonochromeInput) -// { -// [self notifyTargetsAboutNewOutputTexture]; -// } -//} - -//- (GLuint)textureForOutput; -//{ -// if (currentlyReceivingMonochromeInput) -// { -// return filterSourceTexture; -// } -// else -// { -// return outputTexture; -// } -//} - -- (BOOL)wantsMonochromeInput; -{ -// return YES; - return NO; -} - -- (BOOL)providesMonochromeOutput; -{ -// return YES; - return NO; -} - -// TODO: Rewrite this based on the new GPUImageFilter implementation -//- (void)informTargetsAboutNewFrameAtTime:(CMTime)frameTime; -//{ -// if (self.frameProcessingCompletionBlock != NULL) -// { -// self.frameProcessingCompletionBlock(self, frameTime); -// } -// -// for (id currentTarget in targets) -// { -// if (currentTarget != self.targetToIgnoreForUpdates) -// { -// NSInteger indexOfObject = [targets indexOfObject:currentTarget]; -// NSInteger textureIndex = [[targetTextureIndices objectAtIndex:indexOfObject] integerValue]; -// -// if ([GPUImageContext supportsFastTextureUpload] && preparedToCaptureImage) -// { -// [self setInputTextureForTarget:currentTarget atIndex:textureIndex]; -// } -// -// if (currentlyReceivingMonochromeInput) -// { -// [currentTarget setInputRotation:inputRotation atIndex:textureIndex]; -// -// CGSize sizeToRotate = [self outputFrameSize]; -// CGSize rotatedSize = sizeToRotate; -// if (GPUImageRotationSwapsWidthAndHeight(inputRotation)) -// { -// rotatedSize.width = sizeToRotate.height; -// rotatedSize.height = sizeToRotate.width; -// } -// [currentTarget setInputSize:rotatedSize atIndex:textureIndex]; -// } -// else -// { -// [currentTarget setInputSize:[self outputFrameSize] atIndex:textureIndex]; -// } -// [currentTarget newFrameReadyAtTime:frameTime atIndex:textureIndex]; -// } -// } -//} - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageLuminanceFragmentShaderString])) - { - return nil; - } - - return self; -} - - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageHSBFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageHSBFilter.h deleted file mode 100644 index 65a9e1d..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageHSBFilter.h +++ /dev/null @@ -1,27 +0,0 @@ -#import "GPUImageColorMatrixFilter.h" - -@interface GPUImageHSBFilter : GPUImageColorMatrixFilter - -/** Reset the filter to have no transformations. - */ -- (void)reset; - -/** Add a hue rotation to the filter. - The hue rotation is in the range [-360, 360] with 0 being no-change. - Note that this adjustment is additive, so use the reset method if you need to. - */ -- (void)rotateHue:(float)h; - -/** Add a saturation adjustment to the filter. - The saturation adjustment is in the range [0.0, 2.0] with 1.0 being no-change. - Note that this adjustment is additive, so use the reset method if you need to. - */ -- (void)adjustSaturation:(float)s; - -/** Add a brightness adjustment to the filter. - The brightness adjustment is in the range [0.0, 2.0] with 1.0 being no-change. - Note that this adjustment is additive, so use the reset method if you need to. - */ -- (void)adjustBrightness:(float)b; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageHSBFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageHSBFilter.m deleted file mode 100644 index eb668f7..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageHSBFilter.m +++ /dev/null @@ -1,414 +0,0 @@ -#import "GPUImageHSBFilter.h" - -@implementation GPUImageHSBFilter { - float matrix[4][4]; -} - -- (id)init -{ - self = [super init]; - if (self) { - [self reset]; - } - return self; -} - -- (void)reset { - identmat(matrix); - [self _updateColorMatrix]; -} - -- (void)rotateHue:(float)h { - huerotatemat(matrix, h); - [self _updateColorMatrix]; -} - -- (void)adjustSaturation:(float)s { - saturatemat(matrix, s); - [self _updateColorMatrix]; -} - -- (void)adjustBrightness:(float)b { - cscalemat(matrix, b, b, b); - [self _updateColorMatrix]; -} - -- (void)_updateColorMatrix { - GPUMatrix4x4 gpuMatrix; - gpuMatrix.one.one = matrix[0][0]; - gpuMatrix.one.two = matrix[1][0]; - gpuMatrix.one.three = matrix[2][0]; - gpuMatrix.one.four = matrix[3][0]; - gpuMatrix.two.one = matrix[0][1]; - gpuMatrix.two.two = matrix[1][1]; - gpuMatrix.two.three = matrix[2][1]; - gpuMatrix.two.four = matrix[3][1]; - gpuMatrix.three.one = matrix[0][2]; - gpuMatrix.three.two = matrix[1][2]; - gpuMatrix.three.three = matrix[2][2]; - gpuMatrix.three.four = matrix[3][2]; - gpuMatrix.four.one = matrix[0][3]; - gpuMatrix.four.two = matrix[1][3]; - gpuMatrix.four.three = matrix[2][3]; - gpuMatrix.four.four = matrix[3][3]; - self.colorMatrix = gpuMatrix; -} - -#pragma mark - Matrix algorithms - -/* Matrix algorithms adapted from http://www.graficaobscura.com/matrix/index.html - - Note about luminance vector values below from that page: - Where rwgt is 0.3086, gwgt is 0.6094, and bwgt is 0.0820. This is the luminance vector. Notice here that we do not use the standard NTSC weights of 0.299, 0.587, and 0.114. The NTSC weights are only applicable to RGB colors in a gamma 2.2 color space. For linear RGB colors the values above are better. - */ -//#define RLUM (0.3086f) -//#define GLUM (0.6094f) -//#define BLUM (0.0820f) - -/* This is the vector value from the PDF specification, and may be closer to what Photoshop uses */ -#define RLUM (0.3f) -#define GLUM (0.59f) -#define BLUM (0.11f) - -/* - * matrixmult - - * multiply two matricies - */ -static void matrixmult(a,b,c) -float a[4][4], b[4][4], c[4][4]; -{ - int x, y; - float temp[4][4]; - - for(y=0; y<4 ; y++) - for(x=0 ; x<4 ; x++) { - temp[y][x] = b[y][0] * a[0][x] - + b[y][1] * a[1][x] - + b[y][2] * a[2][x] - + b[y][3] * a[3][x]; - } - for(y=0; y<4; y++) - for(x=0; x<4; x++) - c[y][x] = temp[y][x]; -} - -/* - * identmat - - * make an identity matrix - */ -static void identmat(matrix) -float matrix[4][4]; -{ - memset(matrix, 0, sizeof(float[4][4])); - matrix[0][0] = 1.0f; - matrix[1][1] = 1.0f; - matrix[2][2] = 1.0f; - matrix[3][3] = 1.0f; -} - -/* - * xformpnt - - * transform a 3D point using a matrix - */ -static void xformpnt(matrix,x,y,z,tx,ty,tz) -float matrix[4][4]; -float x,y,z; -float *tx,*ty,*tz; -{ - *tx = x*matrix[0][0] + y*matrix[1][0] + z*matrix[2][0] + matrix[3][0]; - *ty = x*matrix[0][1] + y*matrix[1][1] + z*matrix[2][1] + matrix[3][1]; - *tz = x*matrix[0][2] + y*matrix[1][2] + z*matrix[2][2] + matrix[3][2]; -} - -/* - * cscalemat - - * make a color scale marix - */ -static void cscalemat(mat,rscale,gscale,bscale) -float mat[4][4]; -float rscale, gscale, bscale; -{ - float mmat[4][4]; - - mmat[0][0] = rscale; - mmat[0][1] = 0.0; - mmat[0][2] = 0.0; - mmat[0][3] = 0.0; - - mmat[1][0] = 0.0; - mmat[1][1] = gscale; - mmat[1][2] = 0.0; - mmat[1][3] = 0.0; - - - mmat[2][0] = 0.0; - mmat[2][1] = 0.0; - mmat[2][2] = bscale; - mmat[2][3] = 0.0; - - mmat[3][0] = 0.0; - mmat[3][1] = 0.0; - mmat[3][2] = 0.0; - mmat[3][3] = 1.0; - matrixmult(mmat,mat,mat); -} - -/* - * saturatemat - - * make a saturation marix - */ -static void saturatemat(mat,sat) -float mat[4][4]; -float sat; -{ - float mmat[4][4]; - float a, b, c, d, e, f, g, h, i; - float rwgt, gwgt, bwgt; - - rwgt = RLUM; - gwgt = GLUM; - bwgt = BLUM; - - a = (1.0-sat)*rwgt + sat; - b = (1.0-sat)*rwgt; - c = (1.0-sat)*rwgt; - d = (1.0-sat)*gwgt; - e = (1.0-sat)*gwgt + sat; - f = (1.0-sat)*gwgt; - g = (1.0-sat)*bwgt; - h = (1.0-sat)*bwgt; - i = (1.0-sat)*bwgt + sat; - mmat[0][0] = a; - mmat[0][1] = b; - mmat[0][2] = c; - mmat[0][3] = 0.0; - - mmat[1][0] = d; - mmat[1][1] = e; - mmat[1][2] = f; - mmat[1][3] = 0.0; - - mmat[2][0] = g; - mmat[2][1] = h; - mmat[2][2] = i; - mmat[2][3] = 0.0; - - mmat[3][0] = 0.0; - mmat[3][1] = 0.0; - mmat[3][2] = 0.0; - mmat[3][3] = 1.0; - matrixmult(mmat,mat,mat); -} - -/* - * xrotate - - * rotate about the x (red) axis - */ -static void xrotatemat(mat,rs,rc) -float mat[4][4]; -float rs, rc; -{ - float mmat[4][4]; - - mmat[0][0] = 1.0; - mmat[0][1] = 0.0; - mmat[0][2] = 0.0; - mmat[0][3] = 0.0; - - mmat[1][0] = 0.0; - mmat[1][1] = rc; - mmat[1][2] = rs; - mmat[1][3] = 0.0; - - mmat[2][0] = 0.0; - mmat[2][1] = -rs; - mmat[2][2] = rc; - mmat[2][3] = 0.0; - - mmat[3][0] = 0.0; - mmat[3][1] = 0.0; - mmat[3][2] = 0.0; - mmat[3][3] = 1.0; - matrixmult(mmat,mat,mat); -} - -/* - * yrotate - - * rotate about the y (green) axis - */ -static void yrotatemat(mat,rs,rc) -float mat[4][4]; -float rs, rc; -{ - float mmat[4][4]; - - mmat[0][0] = rc; - mmat[0][1] = 0.0; - mmat[0][2] = -rs; - mmat[0][3] = 0.0; - - mmat[1][0] = 0.0; - mmat[1][1] = 1.0; - mmat[1][2] = 0.0; - mmat[1][3] = 0.0; - - mmat[2][0] = rs; - mmat[2][1] = 0.0; - mmat[2][2] = rc; - mmat[2][3] = 0.0; - - mmat[3][0] = 0.0; - mmat[3][1] = 0.0; - mmat[3][2] = 0.0; - mmat[3][3] = 1.0; - matrixmult(mmat,mat,mat); -} - -/* - * zrotate - - * rotate about the z (blue) axis - */ -static void zrotatemat(mat,rs,rc) -float mat[4][4]; -float rs, rc; -{ - float mmat[4][4]; - - mmat[0][0] = rc; - mmat[0][1] = rs; - mmat[0][2] = 0.0; - mmat[0][3] = 0.0; - - mmat[1][0] = -rs; - mmat[1][1] = rc; - mmat[1][2] = 0.0; - mmat[1][3] = 0.0; - - mmat[2][0] = 0.0; - mmat[2][1] = 0.0; - mmat[2][2] = 1.0; - mmat[2][3] = 0.0; - - mmat[3][0] = 0.0; - mmat[3][1] = 0.0; - mmat[3][2] = 0.0; - mmat[3][3] = 1.0; - matrixmult(mmat,mat,mat); -} - -/* - * zshear - - * shear z using x and y. - */ -static void zshearmat(mat,dx,dy) -float mat[4][4]; -float dx, dy; -{ - float mmat[4][4]; - - mmat[0][0] = 1.0; - mmat[0][1] = 0.0; - mmat[0][2] = dx; - mmat[0][3] = 0.0; - - mmat[1][0] = 0.0; - mmat[1][1] = 1.0; - mmat[1][2] = dy; - mmat[1][3] = 0.0; - - mmat[2][0] = 0.0; - mmat[2][1] = 0.0; - mmat[2][2] = 1.0; - mmat[2][3] = 0.0; - - mmat[3][0] = 0.0; - mmat[3][1] = 0.0; - mmat[3][2] = 0.0; - mmat[3][3] = 1.0; - matrixmult(mmat,mat,mat); -} - -/* - * simplehuerotatemat - - * simple hue rotation. This changes luminance - */ -//static void simplehuerotatemat(mat,rot) -//float mat[4][4]; -//float rot; -//{ -// float mag; -// float xrs, xrc; -// float yrs, yrc; -// float zrs, zrc; -// -// /* rotate the grey vector into positive Z */ -// mag = sqrt(2.0); -// xrs = 1.0/mag; -// xrc = 1.0/mag; -// xrotatemat(mat,xrs,xrc); -// -// mag = sqrt(3.0); -// yrs = -1.0/mag; -// yrc = sqrt(2.0)/mag; -// yrotatemat(mat,yrs,yrc); -// -// /* rotate the hue */ -// zrs = sin(rot*M_PI/180.0); -// zrc = cos(rot*M_PI/180.0); -// zrotatemat(mat,zrs,zrc); -// -// /* rotate the grey vector back into place */ -// yrotatemat(mat,-yrs,yrc); -// xrotatemat(mat,-xrs,xrc); -//} - -/* - * huerotatemat - - * rotate the hue, while maintaining luminance. - */ -static void huerotatemat(mat,rot) -float mat[4][4]; -float rot; -{ - float mmat[4][4]; - float mag; - float lx, ly, lz; - float xrs, xrc; - float yrs, yrc; - float zrs, zrc; - float zsx, zsy; - - identmat(mmat); - - /* rotate the grey vector into positive Z */ - mag = sqrt(2.0); - xrs = 1.0/mag; - xrc = 1.0/mag; - xrotatemat(mmat,xrs,xrc); - mag = sqrt(3.0); - yrs = -1.0/mag; - yrc = sqrt(2.0)/mag; - yrotatemat(mmat,yrs,yrc); - - /* shear the space to make the luminance plane horizontal */ - xformpnt(mmat,RLUM,GLUM,BLUM,&lx,&ly,&lz); - zsx = lx/lz; - zsy = ly/lz; - zshearmat(mmat,zsx,zsy); - - /* rotate the hue */ - zrs = sin(rot*M_PI/180.0); - zrc = cos(rot*M_PI/180.0); - zrotatemat(mmat,zrs,zrc); - - /* unshear the space to put the luminance plane back */ - zshearmat(mmat,-zsx,-zsy); - - /* rotate the grey vector back into place */ - yrotatemat(mmat,-yrs,yrc); - xrotatemat(mmat,-xrs,xrc); - - matrixmult(mmat,mat,mat); -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageHalftoneFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageHalftoneFilter.h deleted file mode 100644 index 1860bc9..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageHalftoneFilter.h +++ /dev/null @@ -1,5 +0,0 @@ -#import "GPUImagePixellateFilter.h" - -@interface GPUImageHalftoneFilter : GPUImagePixellateFilter - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageHalftoneFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageHalftoneFilter.m deleted file mode 100644 index 1b621c6..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageHalftoneFilter.m +++ /dev/null @@ -1,79 +0,0 @@ -#import "GPUImageHalftoneFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageHalftoneFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform highp float fractionalWidthOfPixel; - uniform highp float aspectRatio; - uniform highp float dotScaling; - - const highp vec3 W = vec3(0.2125, 0.7154, 0.0721); - - void main() - { - highp vec2 sampleDivisor = vec2(fractionalWidthOfPixel, fractionalWidthOfPixel / aspectRatio); - - highp vec2 samplePos = textureCoordinate - mod(textureCoordinate, sampleDivisor) + 0.5 * sampleDivisor; - highp vec2 textureCoordinateToUse = vec2(textureCoordinate.x, (textureCoordinate.y * aspectRatio + 0.5 - 0.5 * aspectRatio)); - highp vec2 adjustedSamplePos = vec2(samplePos.x, (samplePos.y * aspectRatio + 0.5 - 0.5 * aspectRatio)); - highp float distanceFromSamplePoint = distance(adjustedSamplePos, textureCoordinateToUse); - - lowp vec3 sampledColor = texture2D(inputImageTexture, samplePos ).rgb; - highp float dotScaling = 1.0 - dot(sampledColor, W); - - lowp float checkForPresenceWithinDot = 1.0 - step(distanceFromSamplePoint, (fractionalWidthOfPixel * 0.5) * dotScaling); - - gl_FragColor = vec4(vec3(checkForPresenceWithinDot), 1.0); - } -); -#else -NSString *const kGPUImageHalftoneFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform float fractionalWidthOfPixel; - uniform float aspectRatio; - uniform float dotScaling; - - const vec3 W = vec3(0.2125, 0.7154, 0.0721); - - void main() - { - vec2 sampleDivisor = vec2(fractionalWidthOfPixel, fractionalWidthOfPixel / aspectRatio); - - vec2 samplePos = textureCoordinate - mod(textureCoordinate, sampleDivisor) + 0.5 * sampleDivisor; - vec2 textureCoordinateToUse = vec2(textureCoordinate.x, (textureCoordinate.y * aspectRatio + 0.5 - 0.5 * aspectRatio)); - vec2 adjustedSamplePos = vec2(samplePos.x, (samplePos.y * aspectRatio + 0.5 - 0.5 * aspectRatio)); - float distanceFromSamplePoint = distance(adjustedSamplePos, textureCoordinateToUse); - - vec3 sampledColor = texture2D(inputImageTexture, samplePos ).rgb; - float dotScaling = 1.0 - dot(sampledColor, W); - - float checkForPresenceWithinDot = 1.0 - step(distanceFromSamplePoint, (fractionalWidthOfPixel * 0.5) * dotScaling); - - gl_FragColor = vec4(vec3(checkForPresenceWithinDot), 1.0); - } -); -#endif - -@implementation GPUImageHalftoneFilter - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageHalftoneFragmentShaderString])) - { - return nil; - } - - self.fractionalWidthOfAPixel = 0.01; - - return self; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageHardLightBlendFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageHardLightBlendFilter.h deleted file mode 100755 index 47d6260..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageHardLightBlendFilter.h +++ /dev/null @@ -1,7 +0,0 @@ -#import "GPUImageTwoInputFilter.h" - -@interface GPUImageHardLightBlendFilter : GPUImageTwoInputFilter -{ -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageHardLightBlendFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageHardLightBlendFilter.m deleted file mode 100755 index 2896ce8..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageHardLightBlendFilter.m +++ /dev/null @@ -1,99 +0,0 @@ -#import "GPUImageHardLightBlendFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageHardLightBlendFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - varying highp vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - const highp vec3 W = vec3(0.2125, 0.7154, 0.0721); - - void main() - { - mediump vec4 base = texture2D(inputImageTexture, textureCoordinate); - mediump vec4 overlay = texture2D(inputImageTexture2, textureCoordinate2); - - highp float ra; - if (2.0 * overlay.r < overlay.a) { - ra = 2.0 * overlay.r * base.r + overlay.r * (1.0 - base.a) + base.r * (1.0 - overlay.a); - } else { - ra = overlay.a * base.a - 2.0 * (base.a - base.r) * (overlay.a - overlay.r) + overlay.r * (1.0 - base.a) + base.r * (1.0 - overlay.a); - } - - highp float ga; - if (2.0 * overlay.g < overlay.a) { - ga = 2.0 * overlay.g * base.g + overlay.g * (1.0 - base.a) + base.g * (1.0 - overlay.a); - } else { - ga = overlay.a * base.a - 2.0 * (base.a - base.g) * (overlay.a - overlay.g) + overlay.g * (1.0 - base.a) + base.g * (1.0 - overlay.a); - } - - highp float ba; - if (2.0 * overlay.b < overlay.a) { - ba = 2.0 * overlay.b * base.b + overlay.b * (1.0 - base.a) + base.b * (1.0 - overlay.a); - } else { - ba = overlay.a * base.a - 2.0 * (base.a - base.b) * (overlay.a - overlay.b) + overlay.b * (1.0 - base.a) + base.b * (1.0 - overlay.a); - } - - gl_FragColor = vec4(ra, ga, ba, 1.0); - } -); -#else -NSString *const kGPUImageHardLightBlendFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - const vec3 W = vec3(0.2125, 0.7154, 0.0721); - - void main() - { - vec4 base = texture2D(inputImageTexture, textureCoordinate); - vec4 overlay = texture2D(inputImageTexture2, textureCoordinate2); - - float ra; - if (2.0 * overlay.r < overlay.a) { - ra = 2.0 * overlay.r * base.r + overlay.r * (1.0 - base.a) + base.r * (1.0 - overlay.a); - } else { - ra = overlay.a * base.a - 2.0 * (base.a - base.r) * (overlay.a - overlay.r) + overlay.r * (1.0 - base.a) + base.r * (1.0 - overlay.a); - } - - float ga; - if (2.0 * overlay.g < overlay.a) { - ga = 2.0 * overlay.g * base.g + overlay.g * (1.0 - base.a) + base.g * (1.0 - overlay.a); - } else { - ga = overlay.a * base.a - 2.0 * (base.a - base.g) * (overlay.a - overlay.g) + overlay.g * (1.0 - base.a) + base.g * (1.0 - overlay.a); - } - - float ba; - if (2.0 * overlay.b < overlay.a) { - ba = 2.0 * overlay.b * base.b + overlay.b * (1.0 - base.a) + base.b * (1.0 - overlay.a); - } else { - ba = overlay.a * base.a - 2.0 * (base.a - base.b) * (overlay.a - overlay.b) + overlay.b * (1.0 - base.a) + base.b * (1.0 - overlay.a); - } - - gl_FragColor = vec4(ra, ga, ba, 1.0); - } -); -#endif - - -@implementation GPUImageHardLightBlendFilter - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageHardLightBlendFragmentShaderString])) - { - return nil; - } - - return self; -} - -@end - diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageHarrisCornerDetectionFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageHarrisCornerDetectionFilter.h deleted file mode 100755 index 1492b8b..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageHarrisCornerDetectionFilter.h +++ /dev/null @@ -1,53 +0,0 @@ -#import "GPUImageFilterGroup.h" - -@class GPUImageGaussianBlurFilter; -@class GPUImageXYDerivativeFilter; -@class GPUImageGrayscaleFilter; -@class GPUImageGaussianBlurFilter; -@class GPUImageThresholdedNonMaximumSuppressionFilter; -@class GPUImageColorPackingFilter; - -//#define DEBUGFEATUREDETECTION - -/** Harris corner detector - - First pass: reduce to luminance and take the derivative of the luminance texture (GPUImageXYDerivativeFilter) - - Second pass: blur the derivative (GPUImageGaussianBlurFilter) - - Third pass: apply the Harris corner detection calculation - - This is the Harris corner detector, as described in - C. Harris and M. Stephens. A Combined Corner and Edge Detector. Proc. Alvey Vision Conf., Univ. Manchester, pp. 147-151, 1988. - */ -@interface GPUImageHarrisCornerDetectionFilter : GPUImageFilterGroup -{ - GPUImageXYDerivativeFilter *derivativeFilter; - GPUImageGaussianBlurFilter *blurFilter; - GPUImageFilter *harrisCornerDetectionFilter; - GPUImageThresholdedNonMaximumSuppressionFilter *nonMaximumSuppressionFilter; - GPUImageColorPackingFilter *colorPackingFilter; - GLfloat *cornersArray; - GLubyte *rawImagePixels; -} - -/** The radius of the underlying Gaussian blur. The default is 2.0. - */ -@property(readwrite, nonatomic) CGFloat blurRadiusInPixels; - -// This changes the dynamic range of the Harris corner detector by amplifying small cornerness values. Default is 5.0. -@property(readwrite, nonatomic) CGFloat sensitivity; - -// A threshold value at which a point is recognized as being a corner after the non-maximum suppression. Default is 0.20. -@property(readwrite, nonatomic) CGFloat threshold; - -// This block is called on the detection of new corner points, usually on every processed frame. A C array containing normalized coordinates in X, Y pairs is passed in, along with a count of the number of corners detected and the current timestamp of the video frame -@property(nonatomic, copy) void(^cornersDetectedBlock)(GLfloat* cornerArray, NSUInteger cornersDetected, CMTime frameTime); - -// These images are only enabled when built with DEBUGFEATUREDETECTION defined, and are used to examine the intermediate states of the feature detector -@property(nonatomic, readonly, strong) NSMutableArray *intermediateImages; - -// Initialization and teardown -- (id)initWithCornerDetectionFragmentShader:(NSString *)cornerDetectionFragmentShader; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageHarrisCornerDetectionFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageHarrisCornerDetectionFilter.m deleted file mode 100755 index 999748d..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageHarrisCornerDetectionFilter.m +++ /dev/null @@ -1,292 +0,0 @@ -#import "GPUImageHarrisCornerDetectionFilter.h" -#import "GPUImageGaussianBlurFilter.h" -#import "GPUImageXYDerivativeFilter.h" -#import "GPUImageGrayscaleFilter.h" -#import "GPUImageThresholdedNonMaximumSuppressionFilter.h" -#import "GPUImageColorPackingFilter.h" -#import "GPUImageGaussianBlurFilter.h" - -@interface GPUImageHarrisCornerDetectionFilter() - -- (void)extractCornerLocationsFromImageAtFrameTime:(CMTime)frameTime; - -@end - -// This is the Harris corner detector, as described in -// C. Harris and M. Stephens. A Combined Corner and Edge Detector. Proc. Alvey Vision Conf., Univ. Manchester, pp. 147-151, 1988. - -@implementation GPUImageHarrisCornerDetectionFilter - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageHarrisCornerDetectionFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform lowp float sensitivity; - - const mediump float harrisConstant = 0.04; - - void main() - { - mediump vec3 derivativeElements = texture2D(inputImageTexture, textureCoordinate).rgb; - - mediump float derivativeSum = derivativeElements.x + derivativeElements.y; - - mediump float zElement = (derivativeElements.z * 2.0) - 1.0; - - // R = Ix^2 * Iy^2 - Ixy * Ixy - k * (Ix^2 + Iy^2)^2 - mediump float cornerness = derivativeElements.x * derivativeElements.y - (zElement * zElement) - harrisConstant * derivativeSum * derivativeSum; - - gl_FragColor = vec4(vec3(cornerness * sensitivity), 1.0); - } -); -#else -NSString *const kGPUImageHarrisCornerDetectionFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform float sensitivity; - - const float harrisConstant = 0.04; - - void main() - { - vec3 derivativeElements = texture2D(inputImageTexture, textureCoordinate).rgb; - - float derivativeSum = derivativeElements.x + derivativeElements.y; - - float zElement = (derivativeElements.z * 2.0) - 1.0; - - // R = Ix^2 * Iy^2 - Ixy * Ixy - k * (Ix^2 + Iy^2)^2 - float cornerness = derivativeElements.x * derivativeElements.y - (zElement * zElement) - harrisConstant * derivativeSum * derivativeSum; - - gl_FragColor = vec4(vec3(cornerness * sensitivity), 1.0); - } -); -#endif - -@synthesize blurRadiusInPixels; -@synthesize cornersDetectedBlock; -@synthesize sensitivity = _sensitivity; -@synthesize threshold = _threshold; -@synthesize intermediateImages = _intermediateImages; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [self initWithCornerDetectionFragmentShader:kGPUImageHarrisCornerDetectionFragmentShaderString])) - { - return nil; - } - - return self; -} - -- (id)initWithCornerDetectionFragmentShader:(NSString *)cornerDetectionFragmentShader; -{ - if (!(self = [super init])) - { - return nil; - } - -#ifdef DEBUGFEATUREDETECTION - _intermediateImages = [[NSMutableArray alloc] init]; -#endif - - // First pass: reduce to luminance and take the derivative of the luminance texture - derivativeFilter = [[GPUImageXYDerivativeFilter alloc] init]; - [self addFilter:derivativeFilter]; - -#ifdef DEBUGFEATUREDETECTION - __unsafe_unretained NSMutableArray *weakIntermediateImages = _intermediateImages; - __unsafe_unretained GPUImageFilter *weakFilter = derivativeFilter; - [derivativeFilter setFrameProcessingCompletionBlock:^(GPUImageOutput *filter, CMTime frameTime){ - UIImage *intermediateImage = [weakFilter imageFromCurrentlyProcessedOutput]; - [weakIntermediateImages addObject:intermediateImage]; - }]; -#endif - - // Second pass: blur the derivative - blurFilter = [[GPUImageGaussianBlurFilter alloc] init]; - [self addFilter:blurFilter]; - -#ifdef DEBUGFEATUREDETECTION - weakFilter = blurFilter; - [blurFilter setFrameProcessingCompletionBlock:^(GPUImageOutput *filter, CMTime frameTime){ - UIImage *intermediateImage = [weakFilter imageFromCurrentlyProcessedOutput]; - [weakIntermediateImages addObject:intermediateImage]; - }]; -#endif - - // Third pass: apply the Harris corner detection calculation - harrisCornerDetectionFilter = [[GPUImageFilter alloc] initWithFragmentShaderFromString:cornerDetectionFragmentShader]; - [self addFilter:harrisCornerDetectionFilter]; - -#ifdef DEBUGFEATUREDETECTION - weakFilter = harrisCornerDetectionFilter; - [harrisCornerDetectionFilter setFrameProcessingCompletionBlock:^(GPUImageOutput *filter, CMTime frameTime){ - UIImage *intermediateImage = [weakFilter imageFromCurrentlyProcessedOutput]; - [weakIntermediateImages addObject:intermediateImage]; - }]; -#endif - - // Fourth pass: apply non-maximum suppression and thresholding to find the local maxima - nonMaximumSuppressionFilter = [[GPUImageThresholdedNonMaximumSuppressionFilter alloc] init]; - [self addFilter:nonMaximumSuppressionFilter]; - - __unsafe_unretained GPUImageHarrisCornerDetectionFilter *weakSelf = self; -#ifdef DEBUGFEATUREDETECTION - weakFilter = nonMaximumSuppressionFilter; - [nonMaximumSuppressionFilter setFrameProcessingCompletionBlock:^(GPUImageOutput *filter, CMTime frameTime){ - UIImage *intermediateImage = [weakFilter imageFromCurrentlyProcessedOutput]; - [weakIntermediateImages addObject:intermediateImage]; - - [weakSelf extractCornerLocationsFromImageAtFrameTime:frameTime]; - }]; -#else - [nonMaximumSuppressionFilter setFrameProcessingCompletionBlock:^(GPUImageOutput *filter, CMTime frameTime) { - [weakSelf extractCornerLocationsFromImageAtFrameTime:frameTime]; - }]; -#endif - -// Sixth pass: compress the thresholded points into the RGBA channels -// colorPackingFilter = [[GPUImageColorPackingFilter alloc] init]; -// [self addFilter:colorPackingFilter]; -// -// -//#ifdef DEBUGFEATUREDETECTION -// __unsafe_unretained GPUImageHarrisCornerDetectionFilter *weakSelf = self; -// weakFilter = colorPackingFilter; -// [colorPackingFilter setFrameProcessingCompletionBlock:^(GPUImageOutput *filter, CMTime frameTime){ -// NSLog(@"Triggered response from compaction filter"); -// -// UIImage *intermediateImage = [weakFilter imageFromCurrentlyProcessedOutput]; -// [weakIntermediateImages addObject:intermediateImage]; -// -// [weakSelf extractCornerLocationsFromImageAtFrameTime:frameTime]; -// }]; -//#else -// __unsafe_unretained GPUImageHarrisCornerDetectionFilter *weakSelf = self; -// [colorPackingFilter setFrameProcessingCompletionBlock:^(GPUImageOutput *filter, CMTime frameTime) { -// [weakSelf extractCornerLocationsFromImageAtFrameTime:frameTime]; -// }]; -//#endif - - [derivativeFilter addTarget:blurFilter]; - [blurFilter addTarget:harrisCornerDetectionFilter]; - [harrisCornerDetectionFilter addTarget:nonMaximumSuppressionFilter]; -// [simpleThresholdFilter addTarget:colorPackingFilter]; - - self.initialFilters = [NSArray arrayWithObjects:derivativeFilter, nil]; -// self.terminalFilter = colorPackingFilter; - self.terminalFilter = nonMaximumSuppressionFilter; - - self.blurRadiusInPixels = 2.0; - self.sensitivity = 5.0; - self.threshold = 0.20; - - return self; -} - -- (void)dealloc; -{ - free(rawImagePixels); - free(cornersArray); -} - -#pragma mark - -#pragma mark Corner extraction - -- (void)extractCornerLocationsFromImageAtFrameTime:(CMTime)frameTime; -{ - // we need a normal color texture for this filter - NSAssert(self.outputTextureOptions.internalFormat == GL_RGBA, @"The output texture format for this filter must be GL_RGBA."); - NSAssert(self.outputTextureOptions.type == GL_UNSIGNED_BYTE, @"The type of the output texture of this filter must be GL_UNSIGNED_BYTE."); - - NSUInteger numberOfCorners = 0; - CGSize imageSize = nonMaximumSuppressionFilter.outputFrameSize; - - unsigned int imageByteSize = imageSize.width * imageSize.height * 4; - - if (rawImagePixels == NULL) - { - rawImagePixels = (GLubyte *)malloc(imageByteSize); - cornersArray = calloc(512 * 2, sizeof(GLfloat)); - } - - glReadPixels(0, 0, (int)imageSize.width, (int)imageSize.height, GL_RGBA, GL_UNSIGNED_BYTE, rawImagePixels); - - CFAbsoluteTime startTime = CFAbsoluteTimeGetCurrent(); - - unsigned int imageWidth = imageSize.width * 4; - - unsigned int currentByte = 0; - unsigned int cornerStorageIndex = 0; - while (currentByte < imageByteSize) - { - GLubyte colorByte = rawImagePixels[currentByte]; - - if (colorByte > 0) - { - unsigned int xCoordinate = currentByte % imageWidth; - unsigned int yCoordinate = currentByte / imageWidth; - - cornersArray[cornerStorageIndex++] = (CGFloat)(xCoordinate / 4) / imageSize.width; - cornersArray[cornerStorageIndex++] = (CGFloat)(yCoordinate) / imageSize.height; - numberOfCorners++; - - numberOfCorners = MIN(numberOfCorners, 511); - cornerStorageIndex = MIN(cornerStorageIndex, 1021); - } - currentByte +=4; - } - - CFAbsoluteTime currentFrameTime = (CFAbsoluteTimeGetCurrent() - startTime); - NSLog(@"Processing time : %f ms", 1000.0 * currentFrameTime); - - if (cornersDetectedBlock != NULL) - { - cornersDetectedBlock(cornersArray, numberOfCorners, frameTime); - } -} - -- (BOOL)wantsMonochromeInput; -{ -// return YES; - return NO; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setBlurRadiusInPixels:(CGFloat)newValue; -{ - blurFilter.blurRadiusInPixels = newValue; -} - -- (CGFloat)blurRadiusInPixels; -{ - return blurFilter.blurRadiusInPixels; -} - -- (void)setSensitivity:(CGFloat)newValue; -{ - _sensitivity = newValue; - [harrisCornerDetectionFilter setFloat:newValue forUniformName:@"sensitivity"]; -} - -- (void)setThreshold:(CGFloat)newValue; -{ - nonMaximumSuppressionFilter.threshold = newValue; -} - -- (CGFloat)threshold; -{ - return nonMaximumSuppressionFilter.threshold; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageHazeFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageHazeFilter.h deleted file mode 100755 index eb3fbca..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageHazeFilter.h +++ /dev/null @@ -1,29 +0,0 @@ -#import "GPUImageFilter.h" - -/* - * The haze filter can be used to add or remove haze (similar to a UV filter) - * - * @author Alaric Cole - * @creationDate 03/10/12 - * - */ - -/** The haze filter can be used to add or remove haze - - This is similar to a UV filter - */ -@interface GPUImageHazeFilter : GPUImageFilter -{ - GLint distanceUniform; - GLint slopeUniform; -} - -/** Strength of the color applied. Default 0. Values between -.3 and .3 are best - */ -@property(readwrite, nonatomic) CGFloat distance; - -/** Amount of color change. Default 0. Values between -.3 and .3 are best - */ -@property(readwrite, nonatomic) CGFloat slope; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageHazeFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageHazeFilter.m deleted file mode 100755 index f90fc22..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageHazeFilter.m +++ /dev/null @@ -1,96 +0,0 @@ -#import "GPUImageHazeFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageHazeFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform lowp float hazeDistance; - uniform highp float slope; - - void main() - { - //todo reconsider precision modifiers - highp vec4 color = vec4(1.0);//todo reimplement as a parameter - - highp float d = textureCoordinate.y * slope + hazeDistance; - - highp vec4 c = texture2D(inputImageTexture, textureCoordinate) ; // consider using unpremultiply - - c = (c - d * color) / (1.0 -d); - - gl_FragColor = c; //consider using premultiply(c); - } -); -#else -NSString *const kGPUImageHazeFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform float hazeDistance; - uniform float slope; - - void main() - { - //todo reconsider precision modifiers - vec4 color = vec4(1.0);//todo reimplement as a parameter - - float d = textureCoordinate.y * slope + hazeDistance; - - vec4 c = texture2D(inputImageTexture, textureCoordinate) ; // consider using unpremultiply - - c = (c - d * color) / (1.0 -d); - - gl_FragColor = c; //consider using premultiply(c); - } -); -#endif - - - - -@implementation GPUImageHazeFilter - -@synthesize distance = _distance; -@synthesize slope = _slope; -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageHazeFragmentShaderString])) - { - return nil; - } - - distanceUniform = [filterProgram uniformIndex:@"hazeDistance"]; - slopeUniform = [filterProgram uniformIndex:@"slope"]; - - self.distance = 0.2; - self.slope = 0.0; - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setDistance:(CGFloat)newValue; -{ - _distance = newValue; - - [self setFloat:_distance forUniform:distanceUniform program:filterProgram]; -} - -- (void)setSlope:(CGFloat)newValue; -{ - _slope = newValue; - - [self setFloat:_slope forUniform:slopeUniform program:filterProgram]; -} - -@end - diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageHighPassFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageHighPassFilter.h deleted file mode 100644 index 263d8df..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageHighPassFilter.h +++ /dev/null @@ -1,14 +0,0 @@ -#import "GPUImageFilterGroup.h" -#import "GPUImageLowPassFilter.h" -#import "GPUImageDifferenceBlendFilter.h" - -@interface GPUImageHighPassFilter : GPUImageFilterGroup -{ - GPUImageLowPassFilter *lowPassFilter; - GPUImageDifferenceBlendFilter *differenceBlendFilter; -} - -// This controls the degree by which the previous accumulated frames are blended and then subtracted from the current one. This ranges from 0.0 to 1.0, with a default of 0.5. -@property(readwrite, nonatomic) CGFloat filterStrength; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageHighPassFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageHighPassFilter.m deleted file mode 100644 index 511240d..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageHighPassFilter.m +++ /dev/null @@ -1,46 +0,0 @@ -#import "GPUImageHighPassFilter.h" - -@implementation GPUImageHighPassFilter - -@synthesize filterStrength; - -- (id)init; -{ - if (!(self = [super init])) - { - return nil; - } - - // Start with a low pass filter to define the component to be removed - lowPassFilter = [[GPUImageLowPassFilter alloc] init]; - [self addFilter:lowPassFilter]; - - // Take the difference of the current frame from the low pass filtered result to get the high pass - differenceBlendFilter = [[GPUImageDifferenceBlendFilter alloc] init]; - [self addFilter:differenceBlendFilter]; - - // Texture location 0 needs to be the original image for the difference blend - [lowPassFilter addTarget:differenceBlendFilter atTextureLocation:1]; - - self.initialFilters = [NSArray arrayWithObjects:lowPassFilter, differenceBlendFilter, nil]; - self.terminalFilter = differenceBlendFilter; - - self.filterStrength = 0.5; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setFilterStrength:(CGFloat)newValue; -{ - lowPassFilter.filterStrength = newValue; -} - -- (CGFloat)filterStrength; -{ - return lowPassFilter.filterStrength; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageHighlightShadowFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageHighlightShadowFilter.h deleted file mode 100644 index 3579129..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageHighlightShadowFilter.h +++ /dev/null @@ -1,20 +0,0 @@ -#import "GPUImageFilter.h" - -@interface GPUImageHighlightShadowFilter : GPUImageFilter -{ - GLint shadowsUniform, highlightsUniform; -} - -/** - * 0 - 1, increase to lighten shadows. - * @default 0 - */ -@property(readwrite, nonatomic) CGFloat shadows; - -/** - * 0 - 1, decrease to darken highlights. - * @default 1 - */ -@property(readwrite, nonatomic) CGFloat highlights; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageHighlightShadowFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageHighlightShadowFilter.m deleted file mode 100644 index aa92b74..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageHighlightShadowFilter.m +++ /dev/null @@ -1,93 +0,0 @@ -#import "GPUImageHighlightShadowFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageHighlightShadowFragmentShaderString = SHADER_STRING -( -uniform sampler2D inputImageTexture; -varying highp vec2 textureCoordinate; - -uniform lowp float shadows; -uniform lowp float highlights; - -const mediump vec3 luminanceWeighting = vec3(0.3, 0.3, 0.3); - -void main() -{ - lowp vec4 source = texture2D(inputImageTexture, textureCoordinate); - mediump float luminance = dot(source.rgb, luminanceWeighting); - - mediump float shadow = clamp((pow(luminance, 1.0/(shadows+1.0)) + (-0.76)*pow(luminance, 2.0/(shadows+1.0))) - luminance, 0.0, 1.0); - mediump float highlight = clamp((1.0 - (pow(1.0-luminance, 1.0/(2.0-highlights)) + (-0.8)*pow(1.0-luminance, 2.0/(2.0-highlights)))) - luminance, -1.0, 0.0); - lowp vec3 result = vec3(0.0, 0.0, 0.0) + ((luminance + shadow + highlight) - 0.0) * ((source.rgb - vec3(0.0, 0.0, 0.0))/(luminance - 0.0)); - - gl_FragColor = vec4(result.rgb, source.a); -} -); -#else -NSString *const kGPUImageHighlightShadowFragmentShaderString = SHADER_STRING -( - uniform sampler2D inputImageTexture; - varying vec2 textureCoordinate; - - uniform float shadows; - uniform float highlights; - - const vec3 luminanceWeighting = vec3(0.3, 0.3, 0.3); - - void main() - { - vec4 source = texture2D(inputImageTexture, textureCoordinate); - float luminance = dot(source.rgb, luminanceWeighting); - - float shadow = clamp((pow(luminance, 1.0/(shadows+1.0)) + (-0.76)*pow(luminance, 2.0/(shadows+1.0))) - luminance, 0.0, 1.0); - float highlight = clamp((1.0 - (pow(1.0-luminance, 1.0/(2.0-highlights)) + (-0.8)*pow(1.0-luminance, 2.0/(2.0-highlights)))) - luminance, -1.0, 0.0); - vec3 result = vec3(0.0, 0.0, 0.0) + ((luminance + shadow + highlight) - 0.0) * ((source.rgb - vec3(0.0, 0.0, 0.0))/(luminance - 0.0)); - - gl_FragColor = vec4(result.rgb, source.a); - } -); -#endif - -@implementation GPUImageHighlightShadowFilter - -@synthesize shadows = _shadows; -@synthesize highlights = _highlights; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageHighlightShadowFragmentShaderString])) - { - return nil; - } - - shadowsUniform = [filterProgram uniformIndex:@"shadows"]; - highlightsUniform = [filterProgram uniformIndex:@"highlights"]; - - self.shadows = 0.0; - self.highlights = 1.0; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setShadows:(CGFloat)newValue; -{ - _shadows = newValue; - - [self setFloat:_shadows forUniform:shadowsUniform program:filterProgram]; -} - -- (void)setHighlights:(CGFloat)newValue; -{ - _highlights = newValue; - - [self setFloat:_highlights forUniform:highlightsUniform program:filterProgram]; -} - -@end - diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageHistogramEqualizationFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageHistogramEqualizationFilter.h deleted file mode 100644 index 2b71cda..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageHistogramEqualizationFilter.h +++ /dev/null @@ -1,26 +0,0 @@ -// -// GPUImageHistogramEqualizationFilter.h -// FilterShowcase -// -// Created by Adam Marcus on 19/08/2014. -// Copyright (c) 2014 Sunset Lake Software LLC. All rights reserved. -// - -#import "GPUImageFilterGroup.h" -#import "GPUImageHistogramFilter.h" -#import "GPUImageRawDataOutput.h" -#import "GPUImageRawDataInput.h" -#import "GPUImageTwoInputFilter.h" - -@interface GPUImageHistogramEqualizationFilter : GPUImageFilterGroup -{ - GPUImageHistogramFilter *histogramFilter; - GPUImageRawDataOutput *rawDataOutputFilter; - GPUImageRawDataInput *rawDataInputFilter; -} - -@property(readwrite, nonatomic) NSUInteger downsamplingFactor; - -- (id)initWithHistogramType:(GPUImageHistogramType)newHistogramType; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageHistogramEqualizationFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageHistogramEqualizationFilter.m deleted file mode 100644 index 7d6b9a2..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageHistogramEqualizationFilter.m +++ /dev/null @@ -1,307 +0,0 @@ -// -// GPUImageHistogramEqualizationFilter.m -// FilterShowcase -// -// Created by Adam Marcus on 19/08/2014. -// Copyright (c) 2014 Sunset Lake Software LLC. All rights reserved. -// - -#import "GPUImageHistogramEqualizationFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageRedHistogramEqualizationFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - lowp float redCurveValue = texture2D(inputImageTexture2, vec2(textureColor.r, 0.0)).r; - - gl_FragColor = vec4(redCurveValue, textureColor.g, textureColor.b, textureColor.a); - } - ); -#else -NSString *const kGPUImageRedHistogramEqualizationFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - float redCurveValue = texture2D(inputImageTexture2, vec2(textureColor.r, 0.0)).r; - - gl_FragColor = vec4(redCurveValue, textureColor.g, textureColor.b, textureColor.a); - } - ); -#endif - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageGreenHistogramEqualizationFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - lowp float greenCurveValue = texture2D(inputImageTexture2, vec2(textureColor.g, 0.0)).g; - - gl_FragColor = vec4(textureColor.r, greenCurveValue, textureColor.b, textureColor.a); - } - ); -#else -NSString *const kGPUImageGreenHistogramEqualizationFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - float greenCurveValue = texture2D(inputImageTexture2, vec2(textureColor.g, 0.0)).g; - - gl_FragColor = vec4(textureColor.r, greenCurveValue, textureColor.b, textureColor.a); - } - ); -#endif - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageBlueHistogramEqualizationFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - lowp float blueCurveValue = texture2D(inputImageTexture2, vec2(textureColor.b, 0.0)).b; - - gl_FragColor = vec4(textureColor.r, textureColor.g, blueCurveValue, textureColor.a); - } - ); -#else -NSString *const kGPUImageBlueHistogramEqualizationFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - float blueCurveValue = texture2D(inputImageTexture2, vec2(textureColor.b, 0.0)).b; - - gl_FragColor = vec4(textureColor.r, textureColor.g, blueCurveValue, textureColor.a); - } - ); -#endif - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageRGBHistogramEqualizationFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - lowp float redCurveValue = texture2D(inputImageTexture2, vec2(textureColor.r, 0.0)).r; - lowp float greenCurveValue = texture2D(inputImageTexture2, vec2(textureColor.g, 0.0)).g; - lowp float blueCurveValue = texture2D(inputImageTexture2, vec2(textureColor.b, 0.0)).b; - - gl_FragColor = vec4(redCurveValue, greenCurveValue, blueCurveValue, textureColor.a); - } - ); -#else -NSString *const kGPUImageRGBHistogramEqualizationFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - float redCurveValue = texture2D(inputImageTexture2, vec2(textureColor.r, 0.0)).r; - float greenCurveValue = texture2D(inputImageTexture2, vec2(textureColor.g, 0.0)).g; - float blueCurveValue = texture2D(inputImageTexture2, vec2(textureColor.b, 0.0)).b; - - gl_FragColor = vec4(redCurveValue, greenCurveValue, blueCurveValue, textureColor.a); - } - ); -#endif - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageLuminanceHistogramEqualizationFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - const lowp vec3 W = vec3(0.2125, 0.7154, 0.0721); - - void main() - { - lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - lowp float luminance = dot(textureColor.rgb, W); - lowp float newLuminance = texture2D(inputImageTexture2, vec2(luminance, 0.0)).r; - lowp float deltaLuminance = newLuminance - luminance; - - lowp float red = clamp(textureColor.r + deltaLuminance, 0.0, 1.0); - lowp float green = clamp(textureColor.g + deltaLuminance, 0.0, 1.0); - lowp float blue = clamp(textureColor.b + deltaLuminance, 0.0, 1.0); - - gl_FragColor = vec4(red, green, blue, textureColor.a); - } - ); -#else -NSString *const kGPUImageLuminanceHistogramEqualizationFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - const vec3 W = vec3(0.2125, 0.7154, 0.0721); - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - float luminance = dot(textureColor.rgb, W); - float newLuminance = texture2D(inputImageTexture2, vec2(luminance, 0.0)).r; - float deltaLuminance = newLuminance - luminance; - - float red = clamp(textureColor.r + deltaLuminance, 0.0, 1.0); - float green = clamp(textureColor.g + deltaLuminance, 0.0, 1.0); - float blue = clamp(textureColor.b + deltaLuminance, 0.0, 1.0); - - gl_FragColor = vec4(red, green, blue, textureColor.a); - } - ); -#endif - -@implementation GPUImageHistogramEqualizationFilter - -@synthesize downsamplingFactor = _downsamplingFactor; - -#pragma mark - -#pragma mark Initialization - -- (id)init; -{ - if (!(self = [self initWithHistogramType:kGPUImageHistogramRGB])) - { - return nil; - } - - return self; -} - -- (id)initWithHistogramType:(GPUImageHistogramType)newHistogramType -{ - if (!(self = [super init])) - { - return nil; - } - - histogramFilter = [[GPUImageHistogramFilter alloc] initWithHistogramType:newHistogramType]; - [self addFilter:histogramFilter]; - - GLubyte dummyInput[4 * 256]; // NB: No way to initialise GPUImageRawDataInput without providing bytes - rawDataInputFilter = [[GPUImageRawDataInput alloc] initWithBytes:dummyInput size:CGSizeMake(256.0, 1.0) pixelFormat:GPUPixelFormatBGRA type:GPUPixelTypeUByte]; - rawDataOutputFilter = [[GPUImageRawDataOutput alloc] initWithImageSize:CGSizeMake(256.0, 3.0) resultsInBGRAFormat:YES]; - - __unsafe_unretained GPUImageRawDataOutput *_rawDataOutputFilter = rawDataOutputFilter; - __unsafe_unretained GPUImageRawDataInput *_rawDataInputFilter = rawDataInputFilter; - [rawDataOutputFilter setNewFrameAvailableBlock:^{ - - unsigned int histogramBins[3][256]; - - [_rawDataOutputFilter lockFramebufferForReading]; - - GLubyte *data = [_rawDataOutputFilter rawBytesForImage]; - data += [_rawDataOutputFilter bytesPerRowInOutput]; - - histogramBins[0][0] = *data++; - histogramBins[1][0] = *data++; - histogramBins[2][0] = *data++; - data++; - - for (unsigned int x = 1; x < 256; x++) { - histogramBins[0][x] = histogramBins[0][x-1] + *data++; - histogramBins[1][x] = histogramBins[1][x-1] + *data++; - histogramBins[2][x] = histogramBins[2][x-1] + *data++; - data++; - } - - [_rawDataOutputFilter unlockFramebufferAfterReading]; - - GLubyte colorMapping[4 * 256]; - GLubyte *_colorMapping = colorMapping; - - for (unsigned int x = 0; x < 256; x++) { - *_colorMapping++ = (GLubyte) (((histogramBins[0][x] - histogramBins[0][0]) * 255) / histogramBins[0][255]); - *_colorMapping++ = (GLubyte) (((histogramBins[1][x] - histogramBins[1][0]) * 255) / histogramBins[1][255]); - *_colorMapping++ = (GLubyte) (((histogramBins[2][x] - histogramBins[2][0]) * 255) / histogramBins[2][255]); - *_colorMapping++ = 255; - } - - _colorMapping = colorMapping; - [_rawDataInputFilter updateDataFromBytes:_colorMapping size:CGSizeMake(256.0, 1.0)]; - [_rawDataInputFilter processData]; - }]; - [histogramFilter addTarget:rawDataOutputFilter]; - - NSString *fragmentShader = nil; - switch (newHistogramType) { - case kGPUImageHistogramRed: - fragmentShader = kGPUImageRedHistogramEqualizationFragmentShaderString; - break; - case kGPUImageHistogramGreen: - fragmentShader = kGPUImageGreenHistogramEqualizationFragmentShaderString; - break; - case kGPUImageHistogramBlue: - fragmentShader = kGPUImageBlueHistogramEqualizationFragmentShaderString; - break; - default: - case kGPUImageHistogramRGB: - fragmentShader = kGPUImageRGBHistogramEqualizationFragmentShaderString; - break; - case kGPUImageHistogramLuminance: - fragmentShader = kGPUImageLuminanceHistogramEqualizationFragmentShaderString; - break; - } - GPUImageFilter *equalizationFilter = [[GPUImageTwoInputFilter alloc] initWithFragmentShaderFromString:fragmentShader]; - [rawDataInputFilter addTarget:equalizationFilter atTextureLocation:1]; - - [self addFilter:equalizationFilter]; - - self.initialFilters = [NSArray arrayWithObjects:histogramFilter, equalizationFilter, nil]; - self.terminalFilter = equalizationFilter; - - self.downsamplingFactor = 16; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setDownsamplingFactor:(NSUInteger)newValue; -{ - if (_downsamplingFactor != newValue) - { - _downsamplingFactor = newValue; - histogramFilter.downsamplingFactor = newValue; - } -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageHistogramFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageHistogramFilter.h deleted file mode 100755 index 32004bf..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageHistogramFilter.h +++ /dev/null @@ -1,22 +0,0 @@ -#import "GPUImageFilter.h" - -typedef enum { kGPUImageHistogramRed, kGPUImageHistogramGreen, kGPUImageHistogramBlue, kGPUImageHistogramRGB, kGPUImageHistogramLuminance} GPUImageHistogramType; - -@interface GPUImageHistogramFilter : GPUImageFilter -{ - GPUImageHistogramType histogramType; - - GLubyte *vertexSamplingCoordinates; - - GLProgram *secondFilterProgram, *thirdFilterProgram; - GLint secondFilterPositionAttribute, thirdFilterPositionAttribute; -} - -// Rather than sampling every pixel, this dictates what fraction of the image is sampled. By default, this is 16 with a minimum of 1. -@property(readwrite, nonatomic) NSUInteger downsamplingFactor; - -// Initialization and teardown -- (id)initWithHistogramType:(GPUImageHistogramType)newHistogramType; -- (void)initializeSecondaryAttributes; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageHistogramFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageHistogramFilter.m deleted file mode 100755 index bb7acce..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageHistogramFilter.m +++ /dev/null @@ -1,341 +0,0 @@ -#import "GPUImageHistogramFilter.h" - -// Unlike other filters, this one uses a grid of GL_POINTs to sample the incoming image in a grid. A custom vertex shader reads the color in the texture at its position -// and outputs a bin position in the final histogram as the vertex position. That point is then written into the image of the histogram using translucent pixels. -// The degree of translucency is controlled by the scalingFactor, which lets you adjust the dynamic range of the histogram. The histogram can only be generated for one -// color channel or luminance value at a time. -// -// This is based on this implementation: http://www.shaderwrangler.com/publications/histogram/histogram_cameraready.pdf -// -// Or at least that's how it would work if iOS could read from textures in a vertex shader, which it can't. Therefore, I read the texture data down from the -// incoming frame and process the texture colors as vertices. - -NSString *const kGPUImageRedHistogramSamplingVertexShaderString = SHADER_STRING -( - attribute vec4 position; - - varying vec3 colorFactor; - - void main() - { - colorFactor = vec3(1.0, 0.0, 0.0); - gl_Position = vec4(-1.0 + (position.x * 0.0078125), 0.0, 0.0, 1.0); - gl_PointSize = 1.0; - } -); - -NSString *const kGPUImageGreenHistogramSamplingVertexShaderString = SHADER_STRING -( - attribute vec4 position; - - varying vec3 colorFactor; - - void main() - { - colorFactor = vec3(0.0, 1.0, 0.0); - gl_Position = vec4(-1.0 + (position.y * 0.0078125), 0.0, 0.0, 1.0); - gl_PointSize = 1.0; - } -); - -NSString *const kGPUImageBlueHistogramSamplingVertexShaderString = SHADER_STRING -( - attribute vec4 position; - - varying vec3 colorFactor; - - void main() - { - colorFactor = vec3(0.0, 0.0, 1.0); - gl_Position = vec4(-1.0 + (position.z * 0.0078125), 0.0, 0.0, 1.0); - gl_PointSize = 1.0; - } -); - -NSString *const kGPUImageLuminanceHistogramSamplingVertexShaderString = SHADER_STRING -( - attribute vec4 position; - - varying vec3 colorFactor; - - const vec3 W = vec3(0.2125, 0.7154, 0.0721); - - void main() - { - float luminance = dot(position.xyz, W); - - colorFactor = vec3(1.0, 1.0, 1.0); - gl_Position = vec4(-1.0 + (luminance * 0.0078125), 0.0, 0.0, 1.0); - gl_PointSize = 1.0; - } -); - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageHistogramAccumulationFragmentShaderString = SHADER_STRING -( - const lowp float scalingFactor = 1.0 / 256.0; - - varying lowp vec3 colorFactor; - - void main() - { - gl_FragColor = vec4(colorFactor * scalingFactor , 1.0); - } -); -#else -NSString *const kGPUImageHistogramAccumulationFragmentShaderString = SHADER_STRING -( - const float scalingFactor = 1.0 / 256.0; - - varying vec3 colorFactor; - - void main() - { - gl_FragColor = vec4(colorFactor * scalingFactor , 1.0); - } -); -#endif - -@implementation GPUImageHistogramFilter - -@synthesize downsamplingFactor = _downsamplingFactor; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)initWithHistogramType:(GPUImageHistogramType)newHistogramType; -{ - switch (newHistogramType) - { - case kGPUImageHistogramRed: - { - if (!(self = [super initWithVertexShaderFromString:kGPUImageRedHistogramSamplingVertexShaderString fragmentShaderFromString:kGPUImageHistogramAccumulationFragmentShaderString])) - { - return nil; - } - }; break; - case kGPUImageHistogramGreen: - { - if (!(self = [super initWithVertexShaderFromString:kGPUImageGreenHistogramSamplingVertexShaderString fragmentShaderFromString:kGPUImageHistogramAccumulationFragmentShaderString])) - { - return nil; - } - }; break; - case kGPUImageHistogramBlue: - { - if (!(self = [super initWithVertexShaderFromString:kGPUImageBlueHistogramSamplingVertexShaderString fragmentShaderFromString:kGPUImageHistogramAccumulationFragmentShaderString])) - { - return nil; - } - }; break; - case kGPUImageHistogramLuminance: - { - if (!(self = [super initWithVertexShaderFromString:kGPUImageLuminanceHistogramSamplingVertexShaderString fragmentShaderFromString:kGPUImageHistogramAccumulationFragmentShaderString])) - { - return nil; - } - }; break; - case kGPUImageHistogramRGB: - { - if (!(self = [super initWithVertexShaderFromString:kGPUImageRedHistogramSamplingVertexShaderString fragmentShaderFromString:kGPUImageHistogramAccumulationFragmentShaderString])) - { - return nil; - } - - runSynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext useImageProcessingContext]; - - secondFilterProgram = [[GPUImageContext sharedImageProcessingContext] programForVertexShaderString:kGPUImageGreenHistogramSamplingVertexShaderString fragmentShaderString:kGPUImageHistogramAccumulationFragmentShaderString]; - thirdFilterProgram = [[GPUImageContext sharedImageProcessingContext] programForVertexShaderString:kGPUImageBlueHistogramSamplingVertexShaderString fragmentShaderString:kGPUImageHistogramAccumulationFragmentShaderString]; - - if (!secondFilterProgram.initialized) - { - [self initializeSecondaryAttributes]; - - if (![secondFilterProgram link]) - { - NSString *progLog = [secondFilterProgram programLog]; - NSLog(@"Program link log: %@", progLog); - NSString *fragLog = [secondFilterProgram fragmentShaderLog]; - NSLog(@"Fragment shader compile log: %@", fragLog); - NSString *vertLog = [secondFilterProgram vertexShaderLog]; - NSLog(@"Vertex shader compile log: %@", vertLog); - filterProgram = nil; - NSAssert(NO, @"Filter shader link failed"); - - } - - [GPUImageContext setActiveShaderProgram:secondFilterProgram]; - - glEnableVertexAttribArray(secondFilterPositionAttribute); - - if (![thirdFilterProgram link]) - { - NSString *progLog = [secondFilterProgram programLog]; - NSLog(@"Program link log: %@", progLog); - NSString *fragLog = [secondFilterProgram fragmentShaderLog]; - NSLog(@"Fragment shader compile log: %@", fragLog); - NSString *vertLog = [secondFilterProgram vertexShaderLog]; - NSLog(@"Vertex shader compile log: %@", vertLog); - filterProgram = nil; - NSAssert(NO, @"Filter shader link failed"); - } - } - - secondFilterPositionAttribute = [secondFilterProgram attributeIndex:@"position"]; - - - thirdFilterPositionAttribute = [thirdFilterProgram attributeIndex:@"position"]; - [GPUImageContext setActiveShaderProgram:thirdFilterProgram]; - - glEnableVertexAttribArray(thirdFilterPositionAttribute); - }); - }; break; - } - - histogramType = newHistogramType; - - self.downsamplingFactor = 16; - - return self; -} - -- (id)init; -{ - if (!(self = [self initWithHistogramType:kGPUImageHistogramRGB])) - { - return nil; - } - - return self; -} - -- (void)initializeSecondaryAttributes; -{ - [secondFilterProgram addAttribute:@"position"]; - [thirdFilterProgram addAttribute:@"position"]; -} - -- (void)dealloc; -{ - if (vertexSamplingCoordinates != NULL && ![GPUImageContext supportsFastTextureUpload]) - { - free(vertexSamplingCoordinates); - } -} - -#pragma mark - -#pragma mark Rendering - -- (CGSize)sizeOfFBO; -{ - return CGSizeMake(256.0, 3.0); -} - -- (void)newFrameReadyAtTime:(CMTime)frameTime atIndex:(NSInteger)textureIndex; -{ - [self renderToTextureWithVertices:NULL textureCoordinates:NULL]; - - [self informTargetsAboutNewFrameAtTime:frameTime]; -} - -- (CGSize)outputFrameSize; -{ - return [self sizeOfFBO]; -} - -- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex; -{ - if (self.preventRendering) - { - return; - } - - inputTextureSize = newSize; -} - -- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; -{ - inputRotation = kGPUImageNoRotation; -} - -- (void)renderToTextureWithVertices:(const GLfloat *)vertices textureCoordinates:(const GLfloat *)textureCoordinates; -{ - // we need a normal color texture for this filter - NSAssert(self.outputTextureOptions.internalFormat == GL_RGBA, @"The output texture format for this filter must be GL_RGBA."); - NSAssert(self.outputTextureOptions.type == GL_UNSIGNED_BYTE, @"The type of the output texture of this filter must be GL_UNSIGNED_BYTE."); - - if (self.preventRendering) - { - [firstInputFramebuffer unlock]; - return; - } - - [GPUImageContext useImageProcessingContext]; - - if ([GPUImageContext supportsFastTextureUpload]) - { - glFinish(); - vertexSamplingCoordinates = [firstInputFramebuffer byteBuffer]; - } else { - if (vertexSamplingCoordinates == NULL) - { - vertexSamplingCoordinates = calloc(inputTextureSize.width * inputTextureSize.height * 4, sizeof(GLubyte)); - } - glReadPixels(0, 0, inputTextureSize.width, inputTextureSize.height, GL_RGBA, GL_UNSIGNED_BYTE, vertexSamplingCoordinates); - } - - outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:[self sizeOfFBO] textureOptions:self.outputTextureOptions onlyTexture:NO]; - [outputFramebuffer activateFramebuffer]; - if (usingNextFrameForImageCapture) - { - [outputFramebuffer lock]; - } - - [GPUImageContext setActiveShaderProgram:filterProgram]; - - glClearColor(0.0, 0.0, 0.0, 1.0); - glClear(GL_COLOR_BUFFER_BIT); - - glBlendEquation(GL_FUNC_ADD); - glBlendFunc(GL_ONE, GL_ONE); - glEnable(GL_BLEND); - - glVertexAttribPointer(filterPositionAttribute, 4, GL_UNSIGNED_BYTE, 0, ((unsigned int)_downsamplingFactor - 1) * 4, vertexSamplingCoordinates); - glDrawArrays(GL_POINTS, 0, inputTextureSize.width * inputTextureSize.height / (CGFloat)_downsamplingFactor); - - if (histogramType == kGPUImageHistogramRGB) - { - [GPUImageContext setActiveShaderProgram:secondFilterProgram]; - - glVertexAttribPointer(secondFilterPositionAttribute, 4, GL_UNSIGNED_BYTE, 0, ((unsigned int)_downsamplingFactor - 1) * 4, vertexSamplingCoordinates); - glDrawArrays(GL_POINTS, 0, inputTextureSize.width * inputTextureSize.height / (CGFloat)_downsamplingFactor); - - [GPUImageContext setActiveShaderProgram:thirdFilterProgram]; - - glVertexAttribPointer(thirdFilterPositionAttribute, 4, GL_UNSIGNED_BYTE, 0, ((unsigned int)_downsamplingFactor - 1) * 4, vertexSamplingCoordinates); - glDrawArrays(GL_POINTS, 0, inputTextureSize.width * inputTextureSize.height / (CGFloat)_downsamplingFactor); - } - - glDisable(GL_BLEND); - [firstInputFramebuffer unlock]; - - if (usingNextFrameForImageCapture) - { - dispatch_semaphore_signal(imageCaptureSemaphore); - } -} - -#pragma mark - -#pragma mark Accessors - -//- (void)setScalingFactor:(CGFloat)newValue; -//{ -// _scalingFactor = newValue; -// -// [GPUImageContext useImageProcessingContext]; -// [filterProgram use]; -// glUniform1f(scalingFactorUniform, _scalingFactor); -//} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageHistogramGenerator.h b/Example/Pods/GPUImage/framework/Source/GPUImageHistogramGenerator.h deleted file mode 100755 index f80c50f..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageHistogramGenerator.h +++ /dev/null @@ -1,8 +0,0 @@ -#import "GPUImageFilter.h" - -@interface GPUImageHistogramGenerator : GPUImageFilter -{ - GLint backgroundColorUniform; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageHistogramGenerator.m b/Example/Pods/GPUImage/framework/Source/GPUImageHistogramGenerator.m deleted file mode 100755 index 703795d..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageHistogramGenerator.m +++ /dev/null @@ -1,87 +0,0 @@ -#import "GPUImageHistogramGenerator.h" - -NSString *const kGPUImageHistogramGeneratorVertexShaderString = SHADER_STRING -( - attribute vec4 position; - attribute vec4 inputTextureCoordinate; - - varying vec2 textureCoordinate; - varying float height; - - void main() - { - gl_Position = position; - textureCoordinate = vec2(inputTextureCoordinate.x, 0.5); - height = 1.0 - inputTextureCoordinate.y; - } -); - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageHistogramGeneratorFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - varying highp float height; - - uniform sampler2D inputImageTexture; - uniform lowp vec4 backgroundColor; - - void main() - { - lowp vec3 colorChannels = texture2D(inputImageTexture, textureCoordinate).rgb; - lowp vec4 heightTest = vec4(step(height, colorChannels), 1.0); - gl_FragColor = mix(backgroundColor, heightTest, heightTest.r + heightTest.g + heightTest.b); - } -); -#else -NSString *const kGPUImageHistogramGeneratorFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying float height; - - uniform sampler2D inputImageTexture; - uniform vec4 backgroundColor; - - void main() - { - vec3 colorChannels = texture2D(inputImageTexture, textureCoordinate).rgb; - vec4 heightTest = vec4(step(height, colorChannels), 1.0); - gl_FragColor = mix(backgroundColor, heightTest, heightTest.r + heightTest.g + heightTest.b); - } -); -#endif - -@implementation GPUImageHistogramGenerator - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithVertexShaderFromString:kGPUImageHistogramGeneratorVertexShaderString fragmentShaderFromString:kGPUImageHistogramGeneratorFragmentShaderString])) - { - return nil; - } - - backgroundColorUniform = [filterProgram uniformIndex:@"backgroundColor"]; - - [self setBackgroundColorRed:0.0 green:0.0 blue:0.0 alpha:0.0]; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setBackgroundColorRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent alpha:(GLfloat)alphaComponent; -{ -// GLfloat backgroundColor[4]; -// backgroundColor[0] = redComponent; -// backgroundColor[1] = greenComponent; -// backgroundColor[2] = blueComponent; -// backgroundColor[3] = alphaComponent; - GPUVector4 backgroundColor = {redComponent, greenComponent, blueComponent, alphaComponent}; - - [self setVec4:backgroundColor forUniform:backgroundColorUniform program:filterProgram]; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageHoughTransformLineDetector.h b/Example/Pods/GPUImage/framework/Source/GPUImageHoughTransformLineDetector.h deleted file mode 100644 index 3ab6977..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageHoughTransformLineDetector.h +++ /dev/null @@ -1,49 +0,0 @@ -#import "GPUImageFilterGroup.h" -#import "GPUImageThresholdEdgeDetectionFilter.h" -#import "GPUImageParallelCoordinateLineTransformFilter.h" -#import "GPUImageThresholdedNonMaximumSuppressionFilter.h" -#import "GPUImageCannyEdgeDetectionFilter.h" - -// This applies a Hough transform to detect lines in a scene. It starts with a thresholded Sobel edge detection pass, -// then takes those edge points in and applies a Hough transform to convert them to lines. The intersection of these lines -// is then determined via blending and accumulation, and a non-maximum suppression filter is applied to find local maxima. -// These local maxima are then converted back into lines in normal space and returned via a callback block. -// -// Rather than using one of the standard Hough transform types, this filter uses parallel coordinate space which is far more efficient -// to rasterize on a GPU. -// -// This approach is based entirely on the PC lines process developed by the Graph@FIT research group at the Brno University of Technology -// and described in their publications: -// -// M. Dubská, J. Havel, and A. Herout. Real-Time Detection of Lines using Parallel Coordinates and OpenGL. Proceedings of SCCG 2011, Bratislava, SK, p. 7. -// http://medusa.fit.vutbr.cz/public/data/papers/2011-SCCG-Dubska-Real-Time-Line-Detection-Using-PC-and-OpenGL.pdf -// M. Dubská, J. Havel, and A. Herout. PClines — Line detection using parallel coordinates. 2011 IEEE Conference on Computer Vision and Pattern Recognition (CVPR), p. 1489- 1494. -// http://medusa.fit.vutbr.cz/public/data/papers/2011-CVPR-Dubska-PClines.pdf - -//#define DEBUGLINEDETECTION - -@interface GPUImageHoughTransformLineDetector : GPUImageFilterGroup -{ - GPUImageOutput *thresholdEdgeDetectionFilter; - -// GPUImageThresholdEdgeDetectionFilter *thresholdEdgeDetectionFilter; - GPUImageParallelCoordinateLineTransformFilter *parallelCoordinateLineTransformFilter; - GPUImageThresholdedNonMaximumSuppressionFilter *nonMaximumSuppressionFilter; - - GLfloat *linesArray; - GLubyte *rawImagePixels; -} - -// A threshold value for which a point is detected as belonging to an edge for determining lines. Default is 0.9. -@property(readwrite, nonatomic) CGFloat edgeThreshold; - -// A threshold value for which a local maximum is detected as belonging to a line in parallel coordinate space. Default is 0.20. -@property(readwrite, nonatomic) CGFloat lineDetectionThreshold; - -// This block is called on the detection of lines, usually on every processed frame. A C array containing normalized slopes and intercepts in m, b pairs (y=mx+b) is passed in, along with a count of the number of lines detected and the current timestamp of the video frame -@property(nonatomic, copy) void(^linesDetectedBlock)(GLfloat* lineArray, NSUInteger linesDetected, CMTime frameTime); - -// These images are only enabled when built with DEBUGLINEDETECTION defined, and are used to examine the intermediate states of the Hough transform -@property(nonatomic, readonly, strong) NSMutableArray *intermediateImages; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageHoughTransformLineDetector.m b/Example/Pods/GPUImage/framework/Source/GPUImageHoughTransformLineDetector.m deleted file mode 100644 index 8289eb8..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageHoughTransformLineDetector.m +++ /dev/null @@ -1,241 +0,0 @@ -#import "GPUImageHoughTransformLineDetector.h" - -@interface GPUImageHoughTransformLineDetector() - -- (void)extractLineParametersFromImageAtFrameTime:(CMTime)frameTime; - -@end - -@implementation GPUImageHoughTransformLineDetector - -@synthesize linesDetectedBlock; -@synthesize edgeThreshold; -@synthesize lineDetectionThreshold; -@synthesize intermediateImages = _intermediateImages; - -- (id)init; -{ - if (!(self = [super init])) - { - return nil; - } - - // First pass: do edge detection and threshold that to just have white pixels for edges -// if ([GPUImageContext deviceSupportsFramebufferReads]) -// if ([GPUImageContext deviceSupportsFramebufferReads]) -// { -// thresholdEdgeDetectionFilter = [[GPUImageThresholdEdgeDetectionFilter alloc] init]; -// thresholdEdgeDetectionFilter = [[GPUImageSobelEdgeDetectionFilter alloc] init]; -// [(GPUImageThresholdEdgeDetectionFilter *)thresholdEdgeDetectionFilter setThreshold:0.07]; -// [(GPUImageThresholdEdgeDetectionFilter *)thresholdEdgeDetectionFilter setEdgeStrength:0.25]; -// [(GPUImageThresholdEdgeDetectionFilter *)thresholdEdgeDetectionFilter setEdgeStrength:1.0]; -// thresholdEdgeDetectionFilter = [[GPUImageCannyEdgeDetectionFilter alloc] init]; -// } -// else -// { - thresholdEdgeDetectionFilter = [[GPUImageCannyEdgeDetectionFilter alloc] init]; -// } - [self addFilter:thresholdEdgeDetectionFilter]; - - // Second pass: extract the white points and draw representative lines in parallel coordinate space - parallelCoordinateLineTransformFilter = [[GPUImageParallelCoordinateLineTransformFilter alloc] init]; - [self addFilter:parallelCoordinateLineTransformFilter]; - - // Third pass: apply non-maximum suppression - if ([GPUImageContext deviceSupportsFramebufferReads]) - { - nonMaximumSuppressionFilter = [[GPUImageThresholdedNonMaximumSuppressionFilter alloc] initWithPackedColorspace:YES]; - } - else - { - nonMaximumSuppressionFilter = [[GPUImageThresholdedNonMaximumSuppressionFilter alloc] initWithPackedColorspace:NO]; - } - [self addFilter:nonMaximumSuppressionFilter]; - - __unsafe_unretained GPUImageHoughTransformLineDetector *weakSelf = self; -#ifdef DEBUGLINEDETECTION - _intermediateImages = [[NSMutableArray alloc] init]; - __unsafe_unretained NSMutableArray *weakIntermediateImages = _intermediateImages; - -// __unsafe_unretained GPUImageOutput *weakEdgeDetectionFilter = thresholdEdgeDetectionFilter; -// [thresholdEdgeDetectionFilter setFrameProcessingCompletionBlock:^(GPUImageOutput *filter, CMTime frameTime){ -// [weakIntermediateImages removeAllObjects]; -// UIImage *intermediateImage = [weakEdgeDetectionFilter imageFromCurrentFramebuffer]; -// [weakIntermediateImages addObject:intermediateImage]; -// }]; -// -// __unsafe_unretained GPUImageOutput *weakParallelCoordinateLineTransformFilter = parallelCoordinateLineTransformFilter; -// [parallelCoordinateLineTransformFilter setFrameProcessingCompletionBlock:^(GPUImageOutput *filter, CMTime frameTime){ -// UIImage *intermediateImage = [weakParallelCoordinateLineTransformFilter imageFromCurrentFramebuffer]; -// [weakIntermediateImages addObject:intermediateImage]; -// }]; - - __unsafe_unretained GPUImageOutput *weakNonMaximumSuppressionFilter = nonMaximumSuppressionFilter; - [nonMaximumSuppressionFilter setFrameProcessingCompletionBlock:^(GPUImageOutput *filter, CMTime frameTime){ - UIImage *intermediateImage = [weakNonMaximumSuppressionFilter imageFromCurrentFramebuffer]; - [weakIntermediateImages addObject:intermediateImage]; - - [weakSelf extractLineParametersFromImageAtFrameTime:frameTime]; - }]; -#else - [nonMaximumSuppressionFilter setFrameProcessingCompletionBlock:^(GPUImageOutput *filter, CMTime frameTime) { - [weakSelf extractLineParametersFromImageAtFrameTime:frameTime]; - }]; -#endif - - [thresholdEdgeDetectionFilter addTarget:parallelCoordinateLineTransformFilter]; - [parallelCoordinateLineTransformFilter addTarget:nonMaximumSuppressionFilter]; - - self.initialFilters = [NSArray arrayWithObjects:thresholdEdgeDetectionFilter, nil]; - // self.terminalFilter = colorPackingFilter; - self.terminalFilter = nonMaximumSuppressionFilter; - -// self.edgeThreshold = 0.95; - self.lineDetectionThreshold = 0.12; - - return self; -} - -- (void)dealloc; -{ - free(rawImagePixels); - free(linesArray); -} - -#pragma mark - -#pragma mark Corner extraction - -- (void)extractLineParametersFromImageAtFrameTime:(CMTime)frameTime; -{ - // we need a normal color texture for this filter - NSAssert(self.outputTextureOptions.internalFormat == GL_RGBA, @"The output texture format for this filter must be GL_RGBA."); - NSAssert(self.outputTextureOptions.type == GL_UNSIGNED_BYTE, @"The type of the output texture of this filter must be GL_UNSIGNED_BYTE."); - - NSUInteger numberOfLines = 0; - CGSize imageSize = nonMaximumSuppressionFilter.outputFrameSize; - - unsigned int imageByteSize = imageSize.width * imageSize.height * 4; - - if (rawImagePixels == NULL) - { - rawImagePixels = (GLubyte *)malloc(imageByteSize); - linesArray = calloc(1024 * 2, sizeof(GLfloat)); - } - - glReadPixels(0, 0, (int)imageSize.width, (int)imageSize.height, GL_RGBA, GL_UNSIGNED_BYTE, rawImagePixels); - -// CFAbsoluteTime startTime = CFAbsoluteTimeGetCurrent(); - - unsigned int imageWidth = imageSize.width * 4; - - unsigned int currentByte = 0; - unsigned int cornerStorageIndex = 0; - unsigned long lineStrengthCounter = 0; - while (currentByte < imageByteSize) - { - GLubyte colorByte = rawImagePixels[currentByte]; -// NSLog(@"(%d,%d): [%d,%d,%d,%d]", xCoordinate, yCoordinate, rawImagePixels[currentByte], rawImagePixels[currentByte+1], rawImagePixels[currentByte+2], rawImagePixels[currentByte+3]); -// NSLog(@"[%d,%d,%d,%d]", rawImagePixels[currentByte], rawImagePixels[currentByte+1], rawImagePixels[currentByte+2], rawImagePixels[currentByte+3]); - - if (colorByte > 0) - { - unsigned int xCoordinate = currentByte % imageWidth; - unsigned int yCoordinate = currentByte / imageWidth; - - lineStrengthCounter += colorByte; -// NSLog(@"(%d,%d): [%d,%d,%d,%d]", xCoordinate, yCoordinate, rawImagePixels[currentByte], rawImagePixels[currentByte+1], rawImagePixels[currentByte+2], rawImagePixels[currentByte+3]); - - CGFloat normalizedXCoordinate = -1.0 + 2.0 * (CGFloat)(xCoordinate / 4) / imageSize.width; - CGFloat normalizedYCoordinate = -1.0 + 2.0 * (CGFloat)(yCoordinate) / imageSize.height; - - if (normalizedXCoordinate < 0.0) - { - // T space - // m = -1 - d/u - // b = d * v/u - if (normalizedXCoordinate > -0.05) // Test for the case right near the X axis, stamp the X intercept instead of the Y - { - linesArray[cornerStorageIndex++] = 100000.0; - linesArray[cornerStorageIndex++] = normalizedYCoordinate; - } - else - { - linesArray[cornerStorageIndex++] = -1.0 - 1.0 / normalizedXCoordinate; - linesArray[cornerStorageIndex++] = 1.0 * normalizedYCoordinate / normalizedXCoordinate; - } - } - else - { - // S space - // m = 1 - d/u - // b = d * v/u - if (normalizedXCoordinate < 0.05) // Test for the case right near the X axis, stamp the X intercept instead of the Y - { - linesArray[cornerStorageIndex++] = 100000.0; - linesArray[cornerStorageIndex++] = normalizedYCoordinate; - } - else - { - linesArray[cornerStorageIndex++] = 1.0 - 1.0 / normalizedXCoordinate; - linesArray[cornerStorageIndex++] = 1.0 * normalizedYCoordinate / normalizedXCoordinate; - } - } - - numberOfLines++; - - numberOfLines = MIN(numberOfLines, 1023); - cornerStorageIndex = MIN(cornerStorageIndex, 2040); - } - currentByte +=4; - } - -// CFAbsoluteTime currentFrameTime = (CFAbsoluteTimeGetCurrent() - startTime); -// NSLog(@"Processing time : %f ms", 1000.0 * currentFrameTime); - - if (linesDetectedBlock != NULL) - { - linesDetectedBlock(linesArray, numberOfLines, frameTime); - } -} - -- (BOOL)wantsMonochromeInput; -{ -// return YES; - return NO; -} - -#pragma mark - -#pragma mark Accessors - -//- (void)setEdgeThreshold:(CGFloat)newValue; -//{ -// [(GPUImageCannyEdgeDetectionFilter *)thresholdEdgeDetectionFilter setThreshold:newValue]; -//} -// -//- (CGFloat)edgeThreshold; -//{ -// return [(GPUImageCannyEdgeDetectionFilter *)thresholdEdgeDetectionFilter threshold]; -//} - -- (void)setLineDetectionThreshold:(CGFloat)newValue; -{ - nonMaximumSuppressionFilter.threshold = newValue; -} - -- (CGFloat)lineDetectionThreshold; -{ - return nonMaximumSuppressionFilter.threshold; -} - -#ifdef DEBUGLINEDETECTION -- (void)newFrameReadyAtTime:(CMTime)frameTime atIndex:(NSInteger)textureIndex; -{ -// [thresholdEdgeDetectionFilter useNextFrameForImageCapture]; -// [parallelCoordinateLineTransformFilter useNextFrameForImageCapture]; - [nonMaximumSuppressionFilter useNextFrameForImageCapture]; - - [super newFrameReadyAtTime:frameTime atIndex:textureIndex]; -} -#endif - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageHueBlendFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageHueBlendFilter.h deleted file mode 100644 index 4399ffc..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageHueBlendFilter.h +++ /dev/null @@ -1,5 +0,0 @@ -#import "GPUImageTwoInputFilter.h" - -@interface GPUImageHueBlendFilter : GPUImageTwoInputFilter - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageHueBlendFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageHueBlendFilter.m deleted file mode 100644 index f9dfbbb..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageHueBlendFilter.m +++ /dev/null @@ -1,212 +0,0 @@ -#import "GPUImageHueBlendFilter.h" - -/** - * Hue blend mode based upon pseudo code from the PDF specification. - */ -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageHueBlendFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - varying highp vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - highp float lum(lowp vec3 c) { - return dot(c, vec3(0.3, 0.59, 0.11)); - } - - lowp vec3 clipcolor(lowp vec3 c) { - highp float l = lum(c); - lowp float n = min(min(c.r, c.g), c.b); - lowp float x = max(max(c.r, c.g), c.b); - - if (n < 0.0) { - c.r = l + ((c.r - l) * l) / (l - n); - c.g = l + ((c.g - l) * l) / (l - n); - c.b = l + ((c.b - l) * l) / (l - n); - } - if (x > 1.0) { - c.r = l + ((c.r - l) * (1.0 - l)) / (x - l); - c.g = l + ((c.g - l) * (1.0 - l)) / (x - l); - c.b = l + ((c.b - l) * (1.0 - l)) / (x - l); - } - - return c; - } - - lowp vec3 setlum(lowp vec3 c, highp float l) { - highp float d = l - lum(c); - c = c + vec3(d); - return clipcolor(c); - } - - highp float sat(lowp vec3 c) { - lowp float n = min(min(c.r, c.g), c.b); - lowp float x = max(max(c.r, c.g), c.b); - return x - n; - } - - lowp float mid(lowp float cmin, lowp float cmid, lowp float cmax, highp float s) { - return ((cmid - cmin) * s) / (cmax - cmin); - } - - lowp vec3 setsat(lowp vec3 c, highp float s) { - if (c.r > c.g) { - if (c.r > c.b) { - if (c.g > c.b) { - /* g is mid, b is min */ - c.g = mid(c.b, c.g, c.r, s); - c.b = 0.0; - } else { - /* b is mid, g is min */ - c.b = mid(c.g, c.b, c.r, s); - c.g = 0.0; - } - c.r = s; - } else { - /* b is max, r is mid, g is min */ - c.r = mid(c.g, c.r, c.b, s); - c.b = s; - c.r = 0.0; - } - } else if (c.r > c.b) { - /* g is max, r is mid, b is min */ - c.r = mid(c.b, c.r, c.g, s); - c.g = s; - c.b = 0.0; - } else if (c.g > c.b) { - /* g is max, b is mid, r is min */ - c.b = mid(c.r, c.b, c.g, s); - c.g = s; - c.r = 0.0; - } else if (c.b > c.g) { - /* b is max, g is mid, r is min */ - c.g = mid(c.r, c.g, c.b, s); - c.b = s; - c.r = 0.0; - } else { - c = vec3(0.0); - } - return c; - } - - void main() - { - highp vec4 baseColor = texture2D(inputImageTexture, textureCoordinate); - highp vec4 overlayColor = texture2D(inputImageTexture2, textureCoordinate2); - - gl_FragColor = vec4(baseColor.rgb * (1.0 - overlayColor.a) + setlum(setsat(overlayColor.rgb, sat(baseColor.rgb)), lum(baseColor.rgb)) * overlayColor.a, baseColor.a); - } -); -#else -NSString *const kGPUImageHueBlendFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - float lum(vec3 c) { - return dot(c, vec3(0.3, 0.59, 0.11)); - } - - vec3 clipcolor(vec3 c) { - float l = lum(c); - float n = min(min(c.r, c.g), c.b); - float x = max(max(c.r, c.g), c.b); - - if (n < 0.0) { - c.r = l + ((c.r - l) * l) / (l - n); - c.g = l + ((c.g - l) * l) / (l - n); - c.b = l + ((c.b - l) * l) / (l - n); - } - if (x > 1.0) { - c.r = l + ((c.r - l) * (1.0 - l)) / (x - l); - c.g = l + ((c.g - l) * (1.0 - l)) / (x - l); - c.b = l + ((c.b - l) * (1.0 - l)) / (x - l); - } - - return c; - } - - vec3 setlum(vec3 c, float l) { - float d = l - lum(c); - c = c + vec3(d); - return clipcolor(c); - } - - float sat(vec3 c) { - float n = min(min(c.r, c.g), c.b); - float x = max(max(c.r, c.g), c.b); - return x - n; - } - - float mid(float cmin, float cmid, float cmax, float s) { - return ((cmid - cmin) * s) / (cmax - cmin); - } - - vec3 setsat(vec3 c, float s) { - if (c.r > c.g) { - if (c.r > c.b) { - if (c.g > c.b) { - /* g is mid, b is min */ - c.g = mid(c.b, c.g, c.r, s); - c.b = 0.0; - } else { - /* b is mid, g is min */ - c.b = mid(c.g, c.b, c.r, s); - c.g = 0.0; - } - c.r = s; - } else { - /* b is max, r is mid, g is min */ - c.r = mid(c.g, c.r, c.b, s); - c.b = s; - c.r = 0.0; - } - } else if (c.r > c.b) { - /* g is max, r is mid, b is min */ - c.r = mid(c.b, c.r, c.g, s); - c.g = s; - c.b = 0.0; - } else if (c.g > c.b) { - /* g is max, b is mid, r is min */ - c.b = mid(c.r, c.b, c.g, s); - c.g = s; - c.r = 0.0; - } else if (c.b > c.g) { - /* b is max, g is mid, r is min */ - c.g = mid(c.r, c.g, c.b, s); - c.b = s; - c.r = 0.0; - } else { - c = vec3(0.0); - } - return c; - } - - void main() - { - vec4 baseColor = texture2D(inputImageTexture, textureCoordinate); - vec4 overlayColor = texture2D(inputImageTexture2, textureCoordinate2); - - gl_FragColor = vec4(baseColor.rgb * (1.0 - overlayColor.a) + setlum(setsat(overlayColor.rgb, sat(baseColor.rgb)), lum(baseColor.rgb)) * overlayColor.a, baseColor.a); - } -); -#endif - -@implementation GPUImageHueBlendFilter - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageHueBlendFragmentShaderString])) - { - return nil; - } - - return self; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageHueFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageHueFilter.h deleted file mode 100644 index eef2465..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageHueFilter.h +++ /dev/null @@ -1,11 +0,0 @@ - -#import "GPUImageFilter.h" - -@interface GPUImageHueFilter : GPUImageFilter -{ - GLint hueAdjustUniform; - -} -@property (nonatomic, readwrite) CGFloat hue; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageHueFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageHueFilter.m deleted file mode 100644 index 5b42c86..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageHueFilter.m +++ /dev/null @@ -1,123 +0,0 @@ - -#import "GPUImageHueFilter.h" - -// Adapted from http://stackoverflow.com/questions/9234724/how-to-change-hue-of-a-texture-with-glsl - see for code and discussion -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageHueFragmentShaderString = SHADER_STRING -( - precision highp float; - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform mediump float hueAdjust; - const highp vec4 kRGBToYPrime = vec4 (0.299, 0.587, 0.114, 0.0); - const highp vec4 kRGBToI = vec4 (0.595716, -0.274453, -0.321263, 0.0); - const highp vec4 kRGBToQ = vec4 (0.211456, -0.522591, 0.31135, 0.0); - - const highp vec4 kYIQToR = vec4 (1.0, 0.9563, 0.6210, 0.0); - const highp vec4 kYIQToG = vec4 (1.0, -0.2721, -0.6474, 0.0); - const highp vec4 kYIQToB = vec4 (1.0, -1.1070, 1.7046, 0.0); - - void main () - { - // Sample the input pixel - highp vec4 color = texture2D(inputImageTexture, textureCoordinate); - - // Convert to YIQ - highp float YPrime = dot (color, kRGBToYPrime); - highp float I = dot (color, kRGBToI); - highp float Q = dot (color, kRGBToQ); - - // Calculate the hue and chroma - highp float hue = atan (Q, I); - highp float chroma = sqrt (I * I + Q * Q); - - // Make the user's adjustments - hue += (-hueAdjust); //why negative rotation? - - // Convert back to YIQ - Q = chroma * sin (hue); - I = chroma * cos (hue); - - // Convert back to RGB - highp vec4 yIQ = vec4 (YPrime, I, Q, 0.0); - color.r = dot (yIQ, kYIQToR); - color.g = dot (yIQ, kYIQToG); - color.b = dot (yIQ, kYIQToB); - - // Save the result - gl_FragColor = color; - } -); -#else -NSString *const kGPUImageHueFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform float hueAdjust; - const vec4 kRGBToYPrime = vec4 (0.299, 0.587, 0.114, 0.0); - const vec4 kRGBToI = vec4 (0.595716, -0.274453, -0.321263, 0.0); - const vec4 kRGBToQ = vec4 (0.211456, -0.522591, 0.31135, 0.0); - - const vec4 kYIQToR = vec4 (1.0, 0.9563, 0.6210, 0.0); - const vec4 kYIQToG = vec4 (1.0, -0.2721, -0.6474, 0.0); - const vec4 kYIQToB = vec4 (1.0, -1.1070, 1.7046, 0.0); - - void main () - { - // Sample the input pixel - vec4 color = texture2D(inputImageTexture, textureCoordinate); - - // Convert to YIQ - float YPrime = dot (color, kRGBToYPrime); - float I = dot (color, kRGBToI); - float Q = dot (color, kRGBToQ); - - // Calculate the hue and chroma - float hue = atan (Q, I); - float chroma = sqrt (I * I + Q * Q); - - // Make the user's adjustments - hue += (-hueAdjust); //why negative rotation? - - // Convert back to YIQ - Q = chroma * sin (hue); - I = chroma * cos (hue); - - // Convert back to RGB - vec4 yIQ = vec4 (YPrime, I, Q, 0.0); - color.r = dot (yIQ, kYIQToR); - color.g = dot (yIQ, kYIQToG); - color.b = dot (yIQ, kYIQToB); - - // Save the result - gl_FragColor = color; - } -); -#endif - -@implementation GPUImageHueFilter -@synthesize hue; - -- (id)init -{ - if(! (self = [super initWithFragmentShaderFromString:kGPUImageHueFragmentShaderString]) ) - { - return nil; - } - - hueAdjustUniform = [filterProgram uniformIndex:@"hueAdjust"]; - self.hue = 90; - - return self; -} - -- (void)setHue:(CGFloat)newHue -{ - // Convert degrees to radians for hue rotation - hue = fmodf(newHue, 360.0) * M_PI/180; - [self setFloat:hue forUniform:hueAdjustUniform program:filterProgram]; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageJFAVoronoiFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageJFAVoronoiFilter.h deleted file mode 100644 index 4c50cc3..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageJFAVoronoiFilter.h +++ /dev/null @@ -1,17 +0,0 @@ -#import "GPUImageFilter.h" - -@interface GPUImageJFAVoronoiFilter : GPUImageFilter -{ - GLuint secondFilterOutputTexture; - GLuint secondFilterFramebuffer; - - - GLint sampleStepUniform; - GLint sizeUniform; - NSUInteger numPasses; - -} - -@property (nonatomic, readwrite) CGSize sizeInPixels; - -@end \ No newline at end of file diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageJFAVoronoiFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageJFAVoronoiFilter.m deleted file mode 100644 index 1583591..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageJFAVoronoiFilter.m +++ /dev/null @@ -1,446 +0,0 @@ -// adapted from unitzeroone - http://unitzeroone.com/labs/jfavoronoi/ - -#import "GPUImageJFAVoronoiFilter.h" - -// The shaders are mostly taken from UnitZeroOne's WebGL example here: -// http://unitzeroone.com/blog/2011/03/22/jump-flood-voronoi-for-webgl/ - -NSString *const kGPUImageJFAVoronoiVertexShaderString = SHADER_STRING -( - attribute vec4 position; - attribute vec4 inputTextureCoordinate; - - uniform float sampleStep; - - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - void main() - { - gl_Position = position; - - vec2 widthStep = vec2(sampleStep, 0.0); - vec2 heightStep = vec2(0.0, sampleStep); - vec2 widthHeightStep = vec2(sampleStep); - vec2 widthNegativeHeightStep = vec2(sampleStep, -sampleStep); - - textureCoordinate = inputTextureCoordinate.xy; - leftTextureCoordinate = inputTextureCoordinate.xy - widthStep; - rightTextureCoordinate = inputTextureCoordinate.xy + widthStep; - - topTextureCoordinate = inputTextureCoordinate.xy - heightStep; - topLeftTextureCoordinate = inputTextureCoordinate.xy - widthHeightStep; - topRightTextureCoordinate = inputTextureCoordinate.xy + widthNegativeHeightStep; - - bottomTextureCoordinate = inputTextureCoordinate.xy + heightStep; - bottomLeftTextureCoordinate = inputTextureCoordinate.xy - widthNegativeHeightStep; - bottomRightTextureCoordinate = inputTextureCoordinate.xy + widthHeightStep; - } - ); - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageJFAVoronoiFragmentShaderString = SHADER_STRING -( - - precision highp float; - - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - uniform sampler2D inputImageTexture; - uniform vec2 size; - //varying vec2 textureCoordinate; - //uniform float sampleStep; - - vec2 getCoordFromColor(vec4 color) -{ - float z = color.z * 256.0; - float yoff = floor(z / 8.0); - float xoff = mod(z, 8.0); - float x = color.x*256.0 + xoff*256.0; - float y = color.y*256.0 + yoff*256.0; - return vec2(x,y) / size; -} - - void main(void) { - - vec2 sub; - vec4 dst; - vec4 local = texture2D(inputImageTexture, textureCoordinate); - vec4 sam; - float l; - float smallestDist; - if(local.a == 0.0){ - - smallestDist = dot(1.0,1.0); - }else{ - sub = getCoordFromColor(local)-textureCoordinate; - smallestDist = dot(sub,sub); - } - dst = local; - - - sam = texture2D(inputImageTexture, topRightTextureCoordinate); - if(sam.a == 1.0){ - sub = (getCoordFromColor(sam)-textureCoordinate); - l = dot(sub,sub); - if(l < smallestDist){ - smallestDist = l; - dst = sam; - } - } - - sam = texture2D(inputImageTexture, topTextureCoordinate); - if(sam.a == 1.0){ - sub = (getCoordFromColor(sam)-textureCoordinate); - l = dot(sub,sub); - if(l < smallestDist){ - smallestDist = l; - dst = sam; - } - } - - sam = texture2D(inputImageTexture, topLeftTextureCoordinate); - if(sam.a == 1.0){ - sub = (getCoordFromColor(sam)-textureCoordinate); - l = dot(sub,sub); - if(l < smallestDist){ - smallestDist = l; - dst = sam; - } - } - - sam = texture2D(inputImageTexture, bottomRightTextureCoordinate); - if(sam.a == 1.0){ - sub = (getCoordFromColor(sam)-textureCoordinate); - l = dot(sub,sub); - if(l < smallestDist){ - smallestDist = l; - dst = sam; - } - } - - sam = texture2D(inputImageTexture, bottomTextureCoordinate); - if(sam.a == 1.0){ - sub = (getCoordFromColor(sam)-textureCoordinate); - l = dot(sub,sub); - if(l < smallestDist){ - smallestDist = l; - dst = sam; - } - } - - sam = texture2D(inputImageTexture, bottomLeftTextureCoordinate); - if(sam.a == 1.0){ - sub = (getCoordFromColor(sam)-textureCoordinate); - l = dot(sub,sub); - if(l < smallestDist){ - smallestDist = l; - dst = sam; - } - } - - sam = texture2D(inputImageTexture, leftTextureCoordinate); - if(sam.a == 1.0){ - sub = (getCoordFromColor(sam)-textureCoordinate); - l = dot(sub,sub); - if(l < smallestDist){ - smallestDist = l; - dst = sam; - } - } - - sam = texture2D(inputImageTexture, rightTextureCoordinate); - if(sam.a == 1.0){ - sub = (getCoordFromColor(sam)-textureCoordinate); - l = dot(sub,sub); - if(l < smallestDist){ - smallestDist = l; - dst = sam; - } - } - gl_FragColor = dst; - } -); -#else -NSString *const kGPUImageJFAVoronoiFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - uniform sampler2D inputImageTexture; - uniform vec2 size; - //varying vec2 textureCoordinate; - //uniform float sampleStep; - - vec2 getCoordFromColor(vec4 color) -{ - float z = color.z * 256.0; - float yoff = floor(z / 8.0); - float xoff = mod(z, 8.0); - float x = color.x*256.0 + xoff*256.0; - float y = color.y*256.0 + yoff*256.0; - return vec2(x,y) / size; -} - - void main(void) { - - vec2 sub; - vec4 dst; - vec4 local = texture2D(inputImageTexture, textureCoordinate); - vec4 sam; - float l; - float smallestDist; - if(local.a == 0.0){ - - smallestDist = dot(1.0,1.0); - }else{ - sub = getCoordFromColor(local)-textureCoordinate; - smallestDist = dot(sub,sub); - } - dst = local; - - - sam = texture2D(inputImageTexture, topRightTextureCoordinate); - if(sam.a == 1.0){ - sub = (getCoordFromColor(sam)-textureCoordinate); - l = dot(sub,sub); - if(l < smallestDist){ - smallestDist = l; - dst = sam; - } - } - - sam = texture2D(inputImageTexture, topTextureCoordinate); - if(sam.a == 1.0){ - sub = (getCoordFromColor(sam)-textureCoordinate); - l = dot(sub,sub); - if(l < smallestDist){ - smallestDist = l; - dst = sam; - } - } - - sam = texture2D(inputImageTexture, topLeftTextureCoordinate); - if(sam.a == 1.0){ - sub = (getCoordFromColor(sam)-textureCoordinate); - l = dot(sub,sub); - if(l < smallestDist){ - smallestDist = l; - dst = sam; - } - } - - sam = texture2D(inputImageTexture, bottomRightTextureCoordinate); - if(sam.a == 1.0){ - sub = (getCoordFromColor(sam)-textureCoordinate); - l = dot(sub,sub); - if(l < smallestDist){ - smallestDist = l; - dst = sam; - } - } - - sam = texture2D(inputImageTexture, bottomTextureCoordinate); - if(sam.a == 1.0){ - sub = (getCoordFromColor(sam)-textureCoordinate); - l = dot(sub,sub); - if(l < smallestDist){ - smallestDist = l; - dst = sam; - } - } - - sam = texture2D(inputImageTexture, bottomLeftTextureCoordinate); - if(sam.a == 1.0){ - sub = (getCoordFromColor(sam)-textureCoordinate); - l = dot(sub,sub); - if(l < smallestDist){ - smallestDist = l; - dst = sam; - } - } - - sam = texture2D(inputImageTexture, leftTextureCoordinate); - if(sam.a == 1.0){ - sub = (getCoordFromColor(sam)-textureCoordinate); - l = dot(sub,sub); - if(l < smallestDist){ - smallestDist = l; - dst = sam; - } - } - - sam = texture2D(inputImageTexture, rightTextureCoordinate); - if(sam.a == 1.0){ - sub = (getCoordFromColor(sam)-textureCoordinate); - l = dot(sub,sub); - if(l < smallestDist){ - smallestDist = l; - dst = sam; - } - } - gl_FragColor = dst; - } -); -#endif - -@interface GPUImageJFAVoronoiFilter() { - int currentPass; -} - - -@end - -@implementation GPUImageJFAVoronoiFilter - -@synthesize sizeInPixels = _sizeInPixels; - -- (id)init; -{ - if (!(self = [super initWithVertexShaderFromString:kGPUImageJFAVoronoiVertexShaderString fragmentShaderFromString:kGPUImageJFAVoronoiFragmentShaderString])) - { - - NSLog(@"nil returned"); - return nil; - - } - - sampleStepUniform = [filterProgram uniformIndex:@"sampleStep"]; - sizeUniform = [filterProgram uniformIndex:@"size"]; - //[self disableSecondFrameCheck]; - - return self; -} - --(void)setSizeInPixels:(CGSize)sizeInPixels { - _sizeInPixels = sizeInPixels; - - //validate that it's a power of 2 - - float width = log2(sizeInPixels.width); - float height = log2(sizeInPixels.height); - - if (width != height) { - NSLog(@"Voronoi point texture must be square"); - return; - } - if (width != floor(width) || height != floor(height)) { - NSLog(@"Voronoi point texture must be a power of 2. Texture size: %f, %f", sizeInPixels.width, sizeInPixels.height); - return; - } - glUniform2f(sizeUniform, _sizeInPixels.width, _sizeInPixels.height); -} - -#pragma mark - -#pragma mark Managing the display FBOs - --(NSUInteger)nextPowerOfTwo:(CGPoint)input { - NSUInteger val; - if (input.x > input.y) { - val = (NSUInteger)input.x; - } else { - val = (NSUInteger)input.y; - } - - val--; - val = (val >> 1) | val; - val = (val >> 2) | val; - val = (val >> 4) | val; - val = (val >> 8) | val; - val = (val >> 16) | val; - val++; - return val; -} - -//- (void)setOutputFBO; -//{ -// if (currentPass % 2 == 1) { -// [self setSecondFilterFBO]; -// } else { -// [self setFilterFBO]; -// } -// -//} - -- (void)renderToTextureWithVertices:(const GLfloat *)vertices textureCoordinates:(const GLfloat *)textureCoordinates; -{ - // Run the first stage of the two-pass filter - [GPUImageContext setActiveShaderProgram:filterProgram]; - currentPass = 0; - - outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:[self sizeOfFBO] textureOptions:self.outputTextureOptions onlyTexture:NO]; - [outputFramebuffer activateFramebuffer]; - - glActiveTexture(GL_TEXTURE2); - - glClearColor(0.0f, 0.0f, 0.0f, 1.0f); - glClear(GL_COLOR_BUFFER_BIT); - - glUniform1f(sampleStepUniform, 0.5); - - glUniform2f(sizeUniform, _sizeInPixels.width, _sizeInPixels.height); - - glBindTexture(GL_TEXTURE_2D, [firstInputFramebuffer texture]); - - glUniform1i(filterInputTextureUniform, 2); - - glVertexAttribPointer(filterPositionAttribute, 2, GL_FLOAT, 0, 0, vertices); - glVertexAttribPointer(filterTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, textureCoordinates); - - glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); - - for (int pass = 1; pass <= numPasses + 1; pass++) { - currentPass = pass; -// [self setOutputFBO]; - - //glClearColor(0.0f, 0.0f, 0.0f, 1.0f); - glClear(GL_COLOR_BUFFER_BIT); - - glActiveTexture(GL_TEXTURE2); - if (pass % 2 == 0) { - glBindTexture(GL_TEXTURE_2D, secondFilterOutputTexture); - } else { - glBindTexture(GL_TEXTURE_2D, [outputFramebuffer texture]); - } - glUniform1i(filterInputTextureUniform, 2); - - float step = pow(2.0, numPasses - pass) / pow(2.0, numPasses); - glUniform1f(sampleStepUniform, step); - glUniform2f(sizeUniform, _sizeInPixels.width, _sizeInPixels.height); - - glVertexAttribPointer(filterPositionAttribute, 2, GL_FLOAT, 0, 0, vertices); - glVertexAttribPointer(filterTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, textureCoordinates); - - glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); - } -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageKuwaharaFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageKuwaharaFilter.h deleted file mode 100755 index 4fb0bce..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageKuwaharaFilter.h +++ /dev/null @@ -1,13 +0,0 @@ -#import "GPUImageFilter.h" - -/** Kuwahara image abstraction, drawn from the work of Kyprianidis, et. al. in their publication "Anisotropic Kuwahara Filtering on the GPU" within the GPU Pro collection. This produces an oil-painting-like image, but it is extremely computationally expensive, so it can take seconds to render a frame on an iPad 2. This might be best used for still images. - */ -@interface GPUImageKuwaharaFilter : GPUImageFilter -{ - GLint radiusUniform; -} - -/// The radius to sample from when creating the brush-stroke effect, with a default of 3. The larger the radius, the slower the filter. -@property(readwrite, nonatomic) NSUInteger radius; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageKuwaharaFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageKuwaharaFilter.m deleted file mode 100755 index 9061dbf..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageKuwaharaFilter.m +++ /dev/null @@ -1,223 +0,0 @@ -#import "GPUImageKuwaharaFilter.h" - -// Sourced from Kyprianidis, J. E., Kang, H., and Doellner, J. "Anisotropic Kuwahara Filtering on the GPU," GPU Pro p.247 (2010). -// -// Original header: -// -// Anisotropic Kuwahara Filtering on the GPU -// by Jan Eric Kyprianidis - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageKuwaharaFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - uniform sampler2D inputImageTexture; - uniform int radius; - - precision highp float; - - const vec2 src_size = vec2 (1.0 / 768.0, 1.0 / 1024.0); - - void main (void) - { - vec2 uv = textureCoordinate; - float n = float((radius + 1) * (radius + 1)); - int i; int j; - vec3 m0 = vec3(0.0); vec3 m1 = vec3(0.0); vec3 m2 = vec3(0.0); vec3 m3 = vec3(0.0); - vec3 s0 = vec3(0.0); vec3 s1 = vec3(0.0); vec3 s2 = vec3(0.0); vec3 s3 = vec3(0.0); - vec3 c; - - for (j = -radius; j <= 0; ++j) { - for (i = -radius; i <= 0; ++i) { - c = texture2D(inputImageTexture, uv + vec2(i,j) * src_size).rgb; - m0 += c; - s0 += c * c; - } - } - - for (j = -radius; j <= 0; ++j) { - for (i = 0; i <= radius; ++i) { - c = texture2D(inputImageTexture, uv + vec2(i,j) * src_size).rgb; - m1 += c; - s1 += c * c; - } - } - - for (j = 0; j <= radius; ++j) { - for (i = 0; i <= radius; ++i) { - c = texture2D(inputImageTexture, uv + vec2(i,j) * src_size).rgb; - m2 += c; - s2 += c * c; - } - } - - for (j = 0; j <= radius; ++j) { - for (i = -radius; i <= 0; ++i) { - c = texture2D(inputImageTexture, uv + vec2(i,j) * src_size).rgb; - m3 += c; - s3 += c * c; - } - } - - - float min_sigma2 = 1e+2; - m0 /= n; - s0 = abs(s0 / n - m0 * m0); - - float sigma2 = s0.r + s0.g + s0.b; - if (sigma2 < min_sigma2) { - min_sigma2 = sigma2; - gl_FragColor = vec4(m0, 1.0); - } - - m1 /= n; - s1 = abs(s1 / n - m1 * m1); - - sigma2 = s1.r + s1.g + s1.b; - if (sigma2 < min_sigma2) { - min_sigma2 = sigma2; - gl_FragColor = vec4(m1, 1.0); - } - - m2 /= n; - s2 = abs(s2 / n - m2 * m2); - - sigma2 = s2.r + s2.g + s2.b; - if (sigma2 < min_sigma2) { - min_sigma2 = sigma2; - gl_FragColor = vec4(m2, 1.0); - } - - m3 /= n; - s3 = abs(s3 / n - m3 * m3); - - sigma2 = s3.r + s3.g + s3.b; - if (sigma2 < min_sigma2) { - min_sigma2 = sigma2; - gl_FragColor = vec4(m3, 1.0); - } - } -); -#else -NSString *const kGPUImageKuwaharaFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - uniform sampler2D inputImageTexture; - uniform int radius; - - const vec2 src_size = vec2 (1.0 / 768.0, 1.0 / 1024.0); - - void main (void) - { - vec2 uv = textureCoordinate; - float n = float((radius + 1) * (radius + 1)); - int i; int j; - vec3 m0 = vec3(0.0); vec3 m1 = vec3(0.0); vec3 m2 = vec3(0.0); vec3 m3 = vec3(0.0); - vec3 s0 = vec3(0.0); vec3 s1 = vec3(0.0); vec3 s2 = vec3(0.0); vec3 s3 = vec3(0.0); - vec3 c; - - for (j = -radius; j <= 0; ++j) { - for (i = -radius; i <= 0; ++i) { - c = texture2D(inputImageTexture, uv + vec2(i,j) * src_size).rgb; - m0 += c; - s0 += c * c; - } - } - - for (j = -radius; j <= 0; ++j) { - for (i = 0; i <= radius; ++i) { - c = texture2D(inputImageTexture, uv + vec2(i,j) * src_size).rgb; - m1 += c; - s1 += c * c; - } - } - - for (j = 0; j <= radius; ++j) { - for (i = 0; i <= radius; ++i) { - c = texture2D(inputImageTexture, uv + vec2(i,j) * src_size).rgb; - m2 += c; - s2 += c * c; - } - } - - for (j = 0; j <= radius; ++j) { - for (i = -radius; i <= 0; ++i) { - c = texture2D(inputImageTexture, uv + vec2(i,j) * src_size).rgb; - m3 += c; - s3 += c * c; - } - } - - - float min_sigma2 = 1e+2; - m0 /= n; - s0 = abs(s0 / n - m0 * m0); - - float sigma2 = s0.r + s0.g + s0.b; - if (sigma2 < min_sigma2) { - min_sigma2 = sigma2; - gl_FragColor = vec4(m0, 1.0); - } - - m1 /= n; - s1 = abs(s1 / n - m1 * m1); - - sigma2 = s1.r + s1.g + s1.b; - if (sigma2 < min_sigma2) { - min_sigma2 = sigma2; - gl_FragColor = vec4(m1, 1.0); - } - - m2 /= n; - s2 = abs(s2 / n - m2 * m2); - - sigma2 = s2.r + s2.g + s2.b; - if (sigma2 < min_sigma2) { - min_sigma2 = sigma2; - gl_FragColor = vec4(m2, 1.0); - } - - m3 /= n; - s3 = abs(s3 / n - m3 * m3); - - sigma2 = s3.r + s3.g + s3.b; - if (sigma2 < min_sigma2) { - min_sigma2 = sigma2; - gl_FragColor = vec4(m3, 1.0); - } - } -); -#endif - -@implementation GPUImageKuwaharaFilter - -@synthesize radius = _radius; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageKuwaharaFragmentShaderString])) - { - return nil; - } - - radiusUniform = [filterProgram uniformIndex:@"radius"]; - - self.radius = 3; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setRadius:(NSUInteger)newValue; -{ - _radius = newValue; - - [self setInteger:(GLint)_radius forUniform:radiusUniform program:filterProgram]; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageKuwaharaRadius3Filter.h b/Example/Pods/GPUImage/framework/Source/GPUImageKuwaharaRadius3Filter.h deleted file mode 100644 index c4591b8..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageKuwaharaRadius3Filter.h +++ /dev/null @@ -1,8 +0,0 @@ -// -// GPUImageKuwaharaRadius3Filter.h - -#import "GPUImageFilter.h" - -@interface GPUImageKuwaharaRadius3Filter : GPUImageFilter - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageKuwaharaRadius3Filter.m b/Example/Pods/GPUImage/framework/Source/GPUImageKuwaharaRadius3Filter.m deleted file mode 100644 index 98b092c..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageKuwaharaRadius3Filter.m +++ /dev/null @@ -1,547 +0,0 @@ -#import "GPUImageKuwaharaRadius3Filter.h" - -// Sourced from Kyprianidis, J. E., Kang, H., and Doellner, J. "Anisotropic Kuwahara Filtering on the GPU," GPU Pro p.247 (2010). -// -// Original header: -// -// Anisotropic Kuwahara Filtering on the GPU -// by Jan Eric Kyprianidis - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageKuwaharaRadius3FragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - uniform sampler2D inputImageTexture; - - precision highp float; - - const vec2 src_size = vec2 (1.0 / 768.0, 1.0 / 1024.0); - - void main (void) - { - vec2 uv = textureCoordinate; - float n = float(16); // radius is assumed to be 3 - vec3 m0 = vec3(0.0); vec3 m1 = vec3(0.0); vec3 m2 = vec3(0.0); vec3 m3 = vec3(0.0); - vec3 s0 = vec3(0.0); vec3 s1 = vec3(0.0); vec3 s2 = vec3(0.0); vec3 s3 = vec3(0.0); - vec3 c; - vec3 cSq; - - c = texture2D(inputImageTexture, uv + vec2(-3,-3) * src_size).rgb; - m0 += c; - s0 += c * c; - c = texture2D(inputImageTexture, uv + vec2(-3,-2) * src_size).rgb; - m0 += c; - s0 += c * c; - c = texture2D(inputImageTexture, uv + vec2(-3,-1) * src_size).rgb; - m0 += c; - s0 += c * c; - c = texture2D(inputImageTexture, uv + vec2(-3,0) * src_size).rgb; - cSq = c * c; - m0 += c; - s0 += cSq; - m1 += c; - s1 += cSq; - - c = texture2D(inputImageTexture, uv + vec2(-2,-3) * src_size).rgb; - m0 += c; - s0 += c * c; - c = texture2D(inputImageTexture, uv + vec2(-2,-2) * src_size).rgb; - m0 += c; - s0 += c * c; - c = texture2D(inputImageTexture, uv + vec2(-2,-1) * src_size).rgb; - m0 += c; - s0 += c * c; - c = texture2D(inputImageTexture, uv + vec2(-2,0) * src_size).rgb; - cSq = c * c; - m0 += c; - s0 += cSq; - m1 += c; - s1 += cSq; - - c = texture2D(inputImageTexture, uv + vec2(-1,-3) * src_size).rgb; - m0 += c; - s0 += c * c; - c = texture2D(inputImageTexture, uv + vec2(-1,-2) * src_size).rgb; - m0 += c; - s0 += c * c; - c = texture2D(inputImageTexture, uv + vec2(-1,-1) * src_size).rgb; - m0 += c; - s0 += c * c; - c = texture2D(inputImageTexture, uv + vec2(-1,0) * src_size).rgb; - cSq = c * c; - m0 += c; - s0 += cSq; - m1 += c; - s1 += cSq; - - c = texture2D(inputImageTexture, uv + vec2(0,-3) * src_size).rgb; - cSq = c * c; - m0 += c; - s0 += cSq; - m3 += c; - s3 += cSq; - c = texture2D(inputImageTexture, uv + vec2(0,-2) * src_size).rgb; - cSq = c * c; - m0 += c; - s0 += cSq; - m3 += c; - s3 += cSq; - c = texture2D(inputImageTexture, uv + vec2(0,-1) * src_size).rgb; - cSq = c * c; - m0 += c; - s0 += cSq; - m3 += c; - s3 += cSq; - c = texture2D(inputImageTexture, uv + vec2(0,0) * src_size).rgb; - cSq = c * c; - m0 += c; - s0 += cSq; - m1 += c; - s1 += cSq; - m2 += c; - s2 += cSq; - m3 += c; - s3 += cSq; - - c = texture2D(inputImageTexture, uv + vec2(-3,3) * src_size).rgb; - m1 += c; - s1 += c * c; - c = texture2D(inputImageTexture, uv + vec2(-3,2) * src_size).rgb; - m1 += c; - s1 += c * c; - c = texture2D(inputImageTexture, uv + vec2(-3,1) * src_size).rgb; - m1 += c; - s1 += c * c; - - c = texture2D(inputImageTexture, uv + vec2(-2,3) * src_size).rgb; - m1 += c; - s1 += c * c; - c = texture2D(inputImageTexture, uv + vec2(-2,2) * src_size).rgb; - m1 += c; - s1 += c * c; - c = texture2D(inputImageTexture, uv + vec2(-2,1) * src_size).rgb; - m1 += c; - s1 += c * c; - - c = texture2D(inputImageTexture, uv + vec2(-1,3) * src_size).rgb; - m1 += c; - s1 += c * c; - c = texture2D(inputImageTexture, uv + vec2(-1,2) * src_size).rgb; - m1 += c; - s1 += c * c; - c = texture2D(inputImageTexture, uv + vec2(-1,1) * src_size).rgb; - m1 += c; - s1 += c * c; - - c = texture2D(inputImageTexture, uv + vec2(0,3) * src_size).rgb; - cSq = c * c; - m1 += c; - s1 += cSq; - m2 += c; - s2 += cSq; - c = texture2D(inputImageTexture, uv + vec2(0,2) * src_size).rgb; - cSq = c * c; - m1 += c; - s1 += cSq; - m2 += c; - s2 += cSq; - c = texture2D(inputImageTexture, uv + vec2(0,1) * src_size).rgb; - cSq = c * c; - m1 += c; - s1 += cSq; - m2 += c; - s2 += cSq; - - c = texture2D(inputImageTexture, uv + vec2(3,3) * src_size).rgb; - m2 += c; - s2 += c * c; - c = texture2D(inputImageTexture, uv + vec2(3,2) * src_size).rgb; - m2 += c; - s2 += c * c; - c = texture2D(inputImageTexture, uv + vec2(3,1) * src_size).rgb; - m2 += c; - s2 += c * c; - c = texture2D(inputImageTexture, uv + vec2(3,0) * src_size).rgb; - cSq = c * c; - m2 += c; - s2 += cSq; - m3 += c; - s3 += cSq; - - c = texture2D(inputImageTexture, uv + vec2(2,3) * src_size).rgb; - m2 += c; - s2 += c * c; - c = texture2D(inputImageTexture, uv + vec2(2,2) * src_size).rgb; - m2 += c; - s2 += c * c; - c = texture2D(inputImageTexture, uv + vec2(2,1) * src_size).rgb; - m2 += c; - s2 += c * c; - c = texture2D(inputImageTexture, uv + vec2(2,0) * src_size).rgb; - cSq = c * c; - m2 += c; - s2 += cSq; - m3 += c; - s3 += cSq; - - c = texture2D(inputImageTexture, uv + vec2(1,3) * src_size).rgb; - m2 += c; - s2 += c * c; - c = texture2D(inputImageTexture, uv + vec2(1,2) * src_size).rgb; - m2 += c; - s2 += c * c; - c = texture2D(inputImageTexture, uv + vec2(1,1) * src_size).rgb; - m2 += c; - s2 += c * c; - c = texture2D(inputImageTexture, uv + vec2(1,0) * src_size).rgb; - cSq = c * c; - m2 += c; - s2 += cSq; - m3 += c; - s3 += cSq; - - c = texture2D(inputImageTexture, uv + vec2(3,-3) * src_size).rgb; - m3 += c; - s3 += c * c; - c = texture2D(inputImageTexture, uv + vec2(3,-2) * src_size).rgb; - m3 += c; - s3 += c * c; - c = texture2D(inputImageTexture, uv + vec2(3,-1) * src_size).rgb; - m3 += c; - s3 += c * c; - - c = texture2D(inputImageTexture, uv + vec2(2,-3) * src_size).rgb; - m3 += c; - s3 += c * c; - c = texture2D(inputImageTexture, uv + vec2(2,-2) * src_size).rgb; - m3 += c; - s3 += c * c; - c = texture2D(inputImageTexture, uv + vec2(2,-1) * src_size).rgb; - m3 += c; - s3 += c * c; - - c = texture2D(inputImageTexture, uv + vec2(1,-3) * src_size).rgb; - m3 += c; - s3 += c * c; - c = texture2D(inputImageTexture, uv + vec2(1,-2) * src_size).rgb; - m3 += c; - s3 += c * c; - c = texture2D(inputImageTexture, uv + vec2(1,-1) * src_size).rgb; - m3 += c; - s3 += c * c; - - float min_sigma2 = 1e+2; - m0 /= n; - s0 = abs(s0 / n - m0 * m0); - - float sigma2 = s0.r + s0.g + s0.b; - if (sigma2 < min_sigma2) { - min_sigma2 = sigma2; - gl_FragColor = vec4(m0, 1.0); - } - - m1 /= n; - s1 = abs(s1 / n - m1 * m1); - - sigma2 = s1.r + s1.g + s1.b; - if (sigma2 < min_sigma2) { - min_sigma2 = sigma2; - gl_FragColor = vec4(m1, 1.0); - } - - m2 /= n; - s2 = abs(s2 / n - m2 * m2); - - sigma2 = s2.r + s2.g + s2.b; - if (sigma2 < min_sigma2) { - min_sigma2 = sigma2; - gl_FragColor = vec4(m2, 1.0); - } - - m3 /= n; - s3 = abs(s3 / n - m3 * m3); - - sigma2 = s3.r + s3.g + s3.b; - if (sigma2 < min_sigma2) { - min_sigma2 = sigma2; - gl_FragColor = vec4(m3, 1.0); - } - } -); -#else -NSString *const kGPUImageKuwaharaRadius3FragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - uniform sampler2D inputImageTexture; - - const vec2 src_size = vec2 (1.0 / 768.0, 1.0 / 1024.0); - - void main (void) - { - vec2 uv = textureCoordinate; - float n = float(16); // radius is assumed to be 3 - vec3 m0 = vec3(0.0); vec3 m1 = vec3(0.0); vec3 m2 = vec3(0.0); vec3 m3 = vec3(0.0); - vec3 s0 = vec3(0.0); vec3 s1 = vec3(0.0); vec3 s2 = vec3(0.0); vec3 s3 = vec3(0.0); - vec3 c; - vec3 cSq; - - c = texture2D(inputImageTexture, uv + vec2(-3,-3) * src_size).rgb; - m0 += c; - s0 += c * c; - c = texture2D(inputImageTexture, uv + vec2(-3,-2) * src_size).rgb; - m0 += c; - s0 += c * c; - c = texture2D(inputImageTexture, uv + vec2(-3,-1) * src_size).rgb; - m0 += c; - s0 += c * c; - c = texture2D(inputImageTexture, uv + vec2(-3,0) * src_size).rgb; - cSq = c * c; - m0 += c; - s0 += cSq; - m1 += c; - s1 += cSq; - - c = texture2D(inputImageTexture, uv + vec2(-2,-3) * src_size).rgb; - m0 += c; - s0 += c * c; - c = texture2D(inputImageTexture, uv + vec2(-2,-2) * src_size).rgb; - m0 += c; - s0 += c * c; - c = texture2D(inputImageTexture, uv + vec2(-2,-1) * src_size).rgb; - m0 += c; - s0 += c * c; - c = texture2D(inputImageTexture, uv + vec2(-2,0) * src_size).rgb; - cSq = c * c; - m0 += c; - s0 += cSq; - m1 += c; - s1 += cSq; - - c = texture2D(inputImageTexture, uv + vec2(-1,-3) * src_size).rgb; - m0 += c; - s0 += c * c; - c = texture2D(inputImageTexture, uv + vec2(-1,-2) * src_size).rgb; - m0 += c; - s0 += c * c; - c = texture2D(inputImageTexture, uv + vec2(-1,-1) * src_size).rgb; - m0 += c; - s0 += c * c; - c = texture2D(inputImageTexture, uv + vec2(-1,0) * src_size).rgb; - cSq = c * c; - m0 += c; - s0 += cSq; - m1 += c; - s1 += cSq; - - c = texture2D(inputImageTexture, uv + vec2(0,-3) * src_size).rgb; - cSq = c * c; - m0 += c; - s0 += cSq; - m3 += c; - s3 += cSq; - c = texture2D(inputImageTexture, uv + vec2(0,-2) * src_size).rgb; - cSq = c * c; - m0 += c; - s0 += cSq; - m3 += c; - s3 += cSq; - c = texture2D(inputImageTexture, uv + vec2(0,-1) * src_size).rgb; - cSq = c * c; - m0 += c; - s0 += cSq; - m3 += c; - s3 += cSq; - c = texture2D(inputImageTexture, uv + vec2(0,0) * src_size).rgb; - cSq = c * c; - m0 += c; - s0 += cSq; - m1 += c; - s1 += cSq; - m2 += c; - s2 += cSq; - m3 += c; - s3 += cSq; - - c = texture2D(inputImageTexture, uv + vec2(-3,3) * src_size).rgb; - m1 += c; - s1 += c * c; - c = texture2D(inputImageTexture, uv + vec2(-3,2) * src_size).rgb; - m1 += c; - s1 += c * c; - c = texture2D(inputImageTexture, uv + vec2(-3,1) * src_size).rgb; - m1 += c; - s1 += c * c; - - c = texture2D(inputImageTexture, uv + vec2(-2,3) * src_size).rgb; - m1 += c; - s1 += c * c; - c = texture2D(inputImageTexture, uv + vec2(-2,2) * src_size).rgb; - m1 += c; - s1 += c * c; - c = texture2D(inputImageTexture, uv + vec2(-2,1) * src_size).rgb; - m1 += c; - s1 += c * c; - - c = texture2D(inputImageTexture, uv + vec2(-1,3) * src_size).rgb; - m1 += c; - s1 += c * c; - c = texture2D(inputImageTexture, uv + vec2(-1,2) * src_size).rgb; - m1 += c; - s1 += c * c; - c = texture2D(inputImageTexture, uv + vec2(-1,1) * src_size).rgb; - m1 += c; - s1 += c * c; - - c = texture2D(inputImageTexture, uv + vec2(0,3) * src_size).rgb; - cSq = c * c; - m1 += c; - s1 += cSq; - m2 += c; - s2 += cSq; - c = texture2D(inputImageTexture, uv + vec2(0,2) * src_size).rgb; - cSq = c * c; - m1 += c; - s1 += cSq; - m2 += c; - s2 += cSq; - c = texture2D(inputImageTexture, uv + vec2(0,1) * src_size).rgb; - cSq = c * c; - m1 += c; - s1 += cSq; - m2 += c; - s2 += cSq; - - c = texture2D(inputImageTexture, uv + vec2(3,3) * src_size).rgb; - m2 += c; - s2 += c * c; - c = texture2D(inputImageTexture, uv + vec2(3,2) * src_size).rgb; - m2 += c; - s2 += c * c; - c = texture2D(inputImageTexture, uv + vec2(3,1) * src_size).rgb; - m2 += c; - s2 += c * c; - c = texture2D(inputImageTexture, uv + vec2(3,0) * src_size).rgb; - cSq = c * c; - m2 += c; - s2 += cSq; - m3 += c; - s3 += cSq; - - c = texture2D(inputImageTexture, uv + vec2(2,3) * src_size).rgb; - m2 += c; - s2 += c * c; - c = texture2D(inputImageTexture, uv + vec2(2,2) * src_size).rgb; - m2 += c; - s2 += c * c; - c = texture2D(inputImageTexture, uv + vec2(2,1) * src_size).rgb; - m2 += c; - s2 += c * c; - c = texture2D(inputImageTexture, uv + vec2(2,0) * src_size).rgb; - cSq = c * c; - m2 += c; - s2 += cSq; - m3 += c; - s3 += cSq; - - c = texture2D(inputImageTexture, uv + vec2(1,3) * src_size).rgb; - m2 += c; - s2 += c * c; - c = texture2D(inputImageTexture, uv + vec2(1,2) * src_size).rgb; - m2 += c; - s2 += c * c; - c = texture2D(inputImageTexture, uv + vec2(1,1) * src_size).rgb; - m2 += c; - s2 += c * c; - c = texture2D(inputImageTexture, uv + vec2(1,0) * src_size).rgb; - cSq = c * c; - m2 += c; - s2 += cSq; - m3 += c; - s3 += cSq; - - c = texture2D(inputImageTexture, uv + vec2(3,-3) * src_size).rgb; - m3 += c; - s3 += c * c; - c = texture2D(inputImageTexture, uv + vec2(3,-2) * src_size).rgb; - m3 += c; - s3 += c * c; - c = texture2D(inputImageTexture, uv + vec2(3,-1) * src_size).rgb; - m3 += c; - s3 += c * c; - - c = texture2D(inputImageTexture, uv + vec2(2,-3) * src_size).rgb; - m3 += c; - s3 += c * c; - c = texture2D(inputImageTexture, uv + vec2(2,-2) * src_size).rgb; - m3 += c; - s3 += c * c; - c = texture2D(inputImageTexture, uv + vec2(2,-1) * src_size).rgb; - m3 += c; - s3 += c * c; - - c = texture2D(inputImageTexture, uv + vec2(1,-3) * src_size).rgb; - m3 += c; - s3 += c * c; - c = texture2D(inputImageTexture, uv + vec2(1,-2) * src_size).rgb; - m3 += c; - s3 += c * c; - c = texture2D(inputImageTexture, uv + vec2(1,-1) * src_size).rgb; - m3 += c; - s3 += c * c; - - float min_sigma2 = 1e+2; - m0 /= n; - s0 = abs(s0 / n - m0 * m0); - - float sigma2 = s0.r + s0.g + s0.b; - if (sigma2 < min_sigma2) { - min_sigma2 = sigma2; - gl_FragColor = vec4(m0, 1.0); - } - - m1 /= n; - s1 = abs(s1 / n - m1 * m1); - - sigma2 = s1.r + s1.g + s1.b; - if (sigma2 < min_sigma2) { - min_sigma2 = sigma2; - gl_FragColor = vec4(m1, 1.0); - } - - m2 /= n; - s2 = abs(s2 / n - m2 * m2); - - sigma2 = s2.r + s2.g + s2.b; - if (sigma2 < min_sigma2) { - min_sigma2 = sigma2; - gl_FragColor = vec4(m2, 1.0); - } - - m3 /= n; - s3 = abs(s3 / n - m3 * m3); - - sigma2 = s3.r + s3.g + s3.b; - if (sigma2 < min_sigma2) { - min_sigma2 = sigma2; - gl_FragColor = vec4(m3, 1.0); - } - } -); -#endif - -@implementation GPUImageKuwaharaRadius3Filter - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageKuwaharaRadius3FragmentShaderString])) - { - return nil; - } - - return self; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageLanczosResamplingFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageLanczosResamplingFilter.h deleted file mode 100644 index 5d7409f..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageLanczosResamplingFilter.h +++ /dev/null @@ -1,7 +0,0 @@ -#import "GPUImageTwoPassTextureSamplingFilter.h" - -@interface GPUImageLanczosResamplingFilter : GPUImageTwoPassTextureSamplingFilter - -@property(readwrite, nonatomic) CGSize originalImageSize; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageLanczosResamplingFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageLanczosResamplingFilter.m deleted file mode 100644 index a655f48..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageLanczosResamplingFilter.m +++ /dev/null @@ -1,239 +0,0 @@ -#import "GPUImageLanczosResamplingFilter.h" - -NSString *const kGPUImageLanczosVertexShaderString = SHADER_STRING -( - attribute vec4 position; - attribute vec2 inputTextureCoordinate; - - uniform float texelWidthOffset; - uniform float texelHeightOffset; - - varying vec2 centerTextureCoordinate; - varying vec2 oneStepLeftTextureCoordinate; - varying vec2 twoStepsLeftTextureCoordinate; - varying vec2 threeStepsLeftTextureCoordinate; - varying vec2 fourStepsLeftTextureCoordinate; - varying vec2 oneStepRightTextureCoordinate; - varying vec2 twoStepsRightTextureCoordinate; - varying vec2 threeStepsRightTextureCoordinate; - varying vec2 fourStepsRightTextureCoordinate; - - void main() - { - gl_Position = position; - - vec2 firstOffset = vec2(texelWidthOffset, texelHeightOffset); - vec2 secondOffset = vec2(2.0 * texelWidthOffset, 2.0 * texelHeightOffset); - vec2 thirdOffset = vec2(3.0 * texelWidthOffset, 3.0 * texelHeightOffset); - vec2 fourthOffset = vec2(4.0 * texelWidthOffset, 4.0 * texelHeightOffset); - - centerTextureCoordinate = inputTextureCoordinate; - oneStepLeftTextureCoordinate = inputTextureCoordinate - firstOffset; - twoStepsLeftTextureCoordinate = inputTextureCoordinate - secondOffset; - threeStepsLeftTextureCoordinate = inputTextureCoordinate - thirdOffset; - fourStepsLeftTextureCoordinate = inputTextureCoordinate - fourthOffset; - oneStepRightTextureCoordinate = inputTextureCoordinate + firstOffset; - twoStepsRightTextureCoordinate = inputTextureCoordinate + secondOffset; - threeStepsRightTextureCoordinate = inputTextureCoordinate + thirdOffset; - fourStepsRightTextureCoordinate = inputTextureCoordinate + fourthOffset; - } -); - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageLanczosFragmentShaderString = SHADER_STRING -( - precision highp float; - - uniform sampler2D inputImageTexture; - - varying vec2 centerTextureCoordinate; - varying vec2 oneStepLeftTextureCoordinate; - varying vec2 twoStepsLeftTextureCoordinate; - varying vec2 threeStepsLeftTextureCoordinate; - varying vec2 fourStepsLeftTextureCoordinate; - varying vec2 oneStepRightTextureCoordinate; - varying vec2 twoStepsRightTextureCoordinate; - varying vec2 threeStepsRightTextureCoordinate; - varying vec2 fourStepsRightTextureCoordinate; - - // sinc(x) * sinc(x/a) = (a * sin(pi * x) * sin(pi * x / a)) / (pi^2 * x^2) - // Assuming a Lanczos constant of 2.0, and scaling values to max out at x = +/- 1.5 - - void main() - { - lowp vec4 fragmentColor = texture2D(inputImageTexture, centerTextureCoordinate) * 0.38026; - - fragmentColor += texture2D(inputImageTexture, oneStepLeftTextureCoordinate) * 0.27667; - fragmentColor += texture2D(inputImageTexture, oneStepRightTextureCoordinate) * 0.27667; - - fragmentColor += texture2D(inputImageTexture, twoStepsLeftTextureCoordinate) * 0.08074; - fragmentColor += texture2D(inputImageTexture, twoStepsRightTextureCoordinate) * 0.08074; - - fragmentColor += texture2D(inputImageTexture, threeStepsLeftTextureCoordinate) * -0.02612; - fragmentColor += texture2D(inputImageTexture, threeStepsRightTextureCoordinate) * -0.02612; - - fragmentColor += texture2D(inputImageTexture, fourStepsLeftTextureCoordinate) * -0.02143; - fragmentColor += texture2D(inputImageTexture, fourStepsRightTextureCoordinate) * -0.02143; - - gl_FragColor = fragmentColor; - } -); -#else -NSString *const kGPUImageLanczosFragmentShaderString = SHADER_STRING -( - uniform sampler2D inputImageTexture; - - varying vec2 centerTextureCoordinate; - varying vec2 oneStepLeftTextureCoordinate; - varying vec2 twoStepsLeftTextureCoordinate; - varying vec2 threeStepsLeftTextureCoordinate; - varying vec2 fourStepsLeftTextureCoordinate; - varying vec2 oneStepRightTextureCoordinate; - varying vec2 twoStepsRightTextureCoordinate; - varying vec2 threeStepsRightTextureCoordinate; - varying vec2 fourStepsRightTextureCoordinate; - - // sinc(x) * sinc(x/a) = (a * sin(pi * x) * sin(pi * x / a)) / (pi^2 * x^2) - // Assuming a Lanczos constant of 2.0, and scaling values to max out at x = +/- 1.5 - - void main() - { - vec4 fragmentColor = texture2D(inputImageTexture, centerTextureCoordinate) * 0.38026; - - fragmentColor += texture2D(inputImageTexture, oneStepLeftTextureCoordinate) * 0.27667; - fragmentColor += texture2D(inputImageTexture, oneStepRightTextureCoordinate) * 0.27667; - - fragmentColor += texture2D(inputImageTexture, twoStepsLeftTextureCoordinate) * 0.08074; - fragmentColor += texture2D(inputImageTexture, twoStepsRightTextureCoordinate) * 0.08074; - - fragmentColor += texture2D(inputImageTexture, threeStepsLeftTextureCoordinate) * -0.02612; - fragmentColor += texture2D(inputImageTexture, threeStepsRightTextureCoordinate) * -0.02612; - - fragmentColor += texture2D(inputImageTexture, fourStepsLeftTextureCoordinate) * -0.02143; - fragmentColor += texture2D(inputImageTexture, fourStepsRightTextureCoordinate) * -0.02143; - - gl_FragColor = fragmentColor; - } -); -#endif - -@implementation GPUImageLanczosResamplingFilter - -@synthesize originalImageSize = _originalImageSize; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFirstStageVertexShaderFromString:kGPUImageLanczosVertexShaderString firstStageFragmentShaderFromString:kGPUImageLanczosFragmentShaderString secondStageVertexShaderFromString:kGPUImageLanczosVertexShaderString secondStageFragmentShaderFromString:kGPUImageLanczosFragmentShaderString])) - { - return nil; - } - - return self; -} - -// Base texture sampling offset on the input image, not the final size -- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex; -{ - self.originalImageSize = newSize; - [super setInputSize:newSize atIndex:textureIndex]; -} - -- (void)setupFilterForSize:(CGSize)filterFrameSize; -{ - runSynchronouslyOnVideoProcessingQueue(^{ - // The first pass through the framebuffer may rotate the inbound image, so need to account for that by changing up the kernel ordering for that pass - if (GPUImageRotationSwapsWidthAndHeight(inputRotation)) - { - verticalPassTexelWidthOffset = 1.0 / _originalImageSize.height; - verticalPassTexelHeightOffset = 0.0; - } - else - { - verticalPassTexelWidthOffset = 0.0; - verticalPassTexelHeightOffset = 1.0 / _originalImageSize.height; - } - - horizontalPassTexelWidthOffset = 1.0 / _originalImageSize.width; - horizontalPassTexelHeightOffset = 0.0; - }); -} - - -- (void)renderToTextureWithVertices:(const GLfloat *)vertices textureCoordinates:(const GLfloat *)textureCoordinates; -{ - if (self.preventRendering) - { - [firstInputFramebuffer unlock]; - return; - } - - [GPUImageContext setActiveShaderProgram:filterProgram]; - - CGSize currentFBOSize = [self sizeOfFBO]; - if (GPUImageRotationSwapsWidthAndHeight(inputRotation)) - { - currentFBOSize.height = self.originalImageSize.height; - } - else - { - currentFBOSize.width = self.originalImageSize.width; - } - outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:currentFBOSize textureOptions:self.outputTextureOptions onlyTexture:NO]; - [outputFramebuffer activateFramebuffer]; - - [self setUniformsForProgramAtIndex:0]; - - glClearColor(backgroundColorRed, backgroundColorGreen, backgroundColorBlue, backgroundColorAlpha); - glClear(GL_COLOR_BUFFER_BIT); - - glActiveTexture(GL_TEXTURE2); - glBindTexture(GL_TEXTURE_2D, [firstInputFramebuffer texture]); - - glUniform1i(filterInputTextureUniform, 2); - - glVertexAttribPointer(filterPositionAttribute, 2, GL_FLOAT, 0, 0, vertices); - glVertexAttribPointer(filterTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, textureCoordinates); - - glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); - - [firstInputFramebuffer unlock]; - - // Run the second stage of the two-pass filter - [GPUImageContext setActiveShaderProgram:secondFilterProgram]; - glActiveTexture(GL_TEXTURE2); - glBindTexture(GL_TEXTURE_2D, 0); - glActiveTexture(GL_TEXTURE3); - glBindTexture(GL_TEXTURE_2D, 0); - secondOutputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:[self sizeOfFBO] textureOptions:self.outputTextureOptions onlyTexture:NO]; - [secondOutputFramebuffer activateFramebuffer]; - if (usingNextFrameForImageCapture) - { - [secondOutputFramebuffer lock]; - } - - [self setUniformsForProgramAtIndex:1]; - - glActiveTexture(GL_TEXTURE3); - glBindTexture(GL_TEXTURE_2D, [outputFramebuffer texture]); - glVertexAttribPointer(secondFilterTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, [[self class] textureCoordinatesForRotation:kGPUImageNoRotation]); - - glUniform1i(secondFilterInputTextureUniform, 3); - - glVertexAttribPointer(secondFilterPositionAttribute, 2, GL_FLOAT, 0, 0, vertices); - - glClearColor(0.0f, 0.0f, 0.0f, 1.0f); - glClear(GL_COLOR_BUFFER_BIT); - - glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); - [outputFramebuffer unlock]; - outputFramebuffer = nil; - if (usingNextFrameForImageCapture) - { - dispatch_semaphore_signal(imageCaptureSemaphore); - } -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageLaplacianFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageLaplacianFilter.h deleted file mode 100644 index 267c1ba..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageLaplacianFilter.h +++ /dev/null @@ -1,5 +0,0 @@ -#import "GPUImage3x3ConvolutionFilter.h" - -@interface GPUImageLaplacianFilter : GPUImage3x3ConvolutionFilter - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageLaplacianFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageLaplacianFilter.m deleted file mode 100644 index 98b7850..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageLaplacianFilter.m +++ /dev/null @@ -1,115 +0,0 @@ -#import "GPUImageLaplacianFilter.h" -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageLaplacianFragmentShaderString = SHADER_STRING -( - precision highp float; - - uniform sampler2D inputImageTexture; - - uniform mediump mat3 convolutionMatrix; - - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - void main() - { - mediump vec3 bottomColor = texture2D(inputImageTexture, bottomTextureCoordinate).rgb; - mediump vec3 bottomLeftColor = texture2D(inputImageTexture, bottomLeftTextureCoordinate).rgb; - mediump vec3 bottomRightColor = texture2D(inputImageTexture, bottomRightTextureCoordinate).rgb; - mediump vec4 centerColor = texture2D(inputImageTexture, textureCoordinate); - mediump vec3 leftColor = texture2D(inputImageTexture, leftTextureCoordinate).rgb; - mediump vec3 rightColor = texture2D(inputImageTexture, rightTextureCoordinate).rgb; - mediump vec3 topColor = texture2D(inputImageTexture, topTextureCoordinate).rgb; - mediump vec3 topRightColor = texture2D(inputImageTexture, topRightTextureCoordinate).rgb; - mediump vec3 topLeftColor = texture2D(inputImageTexture, topLeftTextureCoordinate).rgb; - - mediump vec3 resultColor = topLeftColor * convolutionMatrix[0][0] + topColor * convolutionMatrix[0][1] + topRightColor * convolutionMatrix[0][2]; - resultColor += leftColor * convolutionMatrix[1][0] + centerColor.rgb * convolutionMatrix[1][1] + rightColor * convolutionMatrix[1][2]; - resultColor += bottomLeftColor * convolutionMatrix[2][0] + bottomColor * convolutionMatrix[2][1] + bottomRightColor * convolutionMatrix[2][2]; - - // Normalize the results to allow for negative gradients in the 0.0-1.0 colorspace - resultColor = resultColor + 0.5; - - gl_FragColor = vec4(resultColor, centerColor.a); - } -); -#else -NSString *const kGPUImageLaplacianFragmentShaderString = SHADER_STRING -( - uniform sampler2D inputImageTexture; - - uniform mat3 convolutionMatrix; - - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - void main() - { - vec3 bottomColor = texture2D(inputImageTexture, bottomTextureCoordinate).rgb; - vec3 bottomLeftColor = texture2D(inputImageTexture, bottomLeftTextureCoordinate).rgb; - vec3 bottomRightColor = texture2D(inputImageTexture, bottomRightTextureCoordinate).rgb; - vec4 centerColor = texture2D(inputImageTexture, textureCoordinate); - vec3 leftColor = texture2D(inputImageTexture, leftTextureCoordinate).rgb; - vec3 rightColor = texture2D(inputImageTexture, rightTextureCoordinate).rgb; - vec3 topColor = texture2D(inputImageTexture, topTextureCoordinate).rgb; - vec3 topRightColor = texture2D(inputImageTexture, topRightTextureCoordinate).rgb; - vec3 topLeftColor = texture2D(inputImageTexture, topLeftTextureCoordinate).rgb; - - vec3 resultColor = topLeftColor * convolutionMatrix[0][0] + topColor * convolutionMatrix[0][1] + topRightColor * convolutionMatrix[0][2]; - resultColor += leftColor * convolutionMatrix[1][0] + centerColor.rgb * convolutionMatrix[1][1] + rightColor * convolutionMatrix[1][2]; - resultColor += bottomLeftColor * convolutionMatrix[2][0] + bottomColor * convolutionMatrix[2][1] + bottomRightColor * convolutionMatrix[2][2]; - - // Normalize the results to allow for negative gradients in the 0.0-1.0 colorspace - resultColor = resultColor + 0.5; - - gl_FragColor = vec4(resultColor, centerColor.a); - } -); -#endif - -@implementation GPUImageLaplacianFilter - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageLaplacianFragmentShaderString])) - { - return nil; - } - - GPUMatrix3x3 newConvolutionMatrix; - newConvolutionMatrix.one.one = 0.5; - newConvolutionMatrix.one.two = 1.0; - newConvolutionMatrix.one.three = 0.5; - - newConvolutionMatrix.two.one = 1.0; - newConvolutionMatrix.two.two = -6.0; - newConvolutionMatrix.two.three = 1.0; - - newConvolutionMatrix.three.one = 0.5; - newConvolutionMatrix.three.two = 1.0; - newConvolutionMatrix.three.three = 0.5; - - self.convolutionKernel = newConvolutionMatrix; - - return self; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageLevelsFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageLevelsFilter.h deleted file mode 100644 index d0948fb..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageLevelsFilter.h +++ /dev/null @@ -1,45 +0,0 @@ -#import "GPUImageFilter.h" - -/** - * Levels like Photoshop. - * - * The min, max, minOut and maxOut parameters are floats in the range [0, 1]. - * If you have parameters from Photoshop in the range [0, 255] you must first - * convert them to be [0, 1]. - * The gamma/mid parameter is a float >= 0. This matches the value from Photoshop. - * - * If you want to apply levels to RGB as well as individual channels you need to use - * this filter twice - first for the individual channels and then for all channels. - */ -@interface GPUImageLevelsFilter : GPUImageFilter -{ - GLint minUniform; - GLint midUniform; - GLint maxUniform; - GLint minOutputUniform; - GLint maxOutputUniform; - - GPUVector3 minVector, midVector, maxVector, minOutputVector, maxOutputVector; -} - -/** Set levels for the red channel */ -- (void)setRedMin:(CGFloat)min gamma:(CGFloat)mid max:(CGFloat)max minOut:(CGFloat)minOut maxOut:(CGFloat)maxOut; - -- (void)setRedMin:(CGFloat)min gamma:(CGFloat)mid max:(CGFloat)max; - -/** Set levels for the green channel */ -- (void)setGreenMin:(CGFloat)min gamma:(CGFloat)mid max:(CGFloat)max minOut:(CGFloat)minOut maxOut:(CGFloat)maxOut; - -- (void)setGreenMin:(CGFloat)min gamma:(CGFloat)mid max:(CGFloat)max; - -/** Set levels for the blue channel */ -- (void)setBlueMin:(CGFloat)min gamma:(CGFloat)mid max:(CGFloat)max minOut:(CGFloat)minOut maxOut:(CGFloat)maxOut; - -- (void)setBlueMin:(CGFloat)min gamma:(CGFloat)mid max:(CGFloat)max; - -/** Set levels for all channels at once */ -- (void)setMin:(CGFloat)min gamma:(CGFloat)mid max:(CGFloat)max minOut:(CGFloat)minOut maxOut:(CGFloat)maxOut; -- (void)setMin:(CGFloat)min gamma:(CGFloat)mid max:(CGFloat)max; - -@end - diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageLevelsFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageLevelsFilter.m deleted file mode 100644 index 158815f..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageLevelsFilter.m +++ /dev/null @@ -1,152 +0,0 @@ -#import "GPUImageLevelsFilter.h" - -/* - ** Gamma correction - ** Details: http://blog.mouaif.org/2009/01/22/photoshop-gamma-correction-shader/ - */ - -#define GammaCorrection(color, gamma) pow(color, 1.0 / gamma) - -/* - ** Levels control (input (+gamma), output) - ** Details: http://blog.mouaif.org/2009/01/28/levels-control-shader/ - */ - -#define LevelsControlInputRange(color, minInput, maxInput) min(max(color - minInput, vec3(0.0)) / (maxInput - minInput), vec3(1.0)) -#define LevelsControlInput(color, minInput, gamma, maxInput) GammaCorrection(LevelsControlInputRange(color, minInput, maxInput), gamma) -#define LevelsControlOutputRange(color, minOutput, maxOutput) mix(minOutput, maxOutput, color) -#define LevelsControl(color, minInput, gamma, maxInput, minOutput, maxOutput) LevelsControlOutputRange(LevelsControlInput(color, minInput, gamma, maxInput), minOutput, maxOutput) - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageLevelsFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform mediump vec3 levelMinimum; - uniform mediump vec3 levelMiddle; - uniform mediump vec3 levelMaximum; - uniform mediump vec3 minOutput; - uniform mediump vec3 maxOutput; - - void main() - { - mediump vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - - gl_FragColor = vec4(LevelsControl(textureColor.rgb, levelMinimum, levelMiddle, levelMaximum, minOutput, maxOutput), textureColor.a); - } -); -#else -NSString *const kGPUImageLevelsFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform vec3 levelMinimum; - uniform vec3 levelMiddle; - uniform vec3 levelMaximum; - uniform vec3 minOutput; - uniform vec3 maxOutput; - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - - gl_FragColor = vec4(LevelsControl(textureColor.rgb, levelMinimum, levelMiddle, levelMaximum, minOutput, maxOutput), textureColor.a); - } -); -#endif - -@implementation GPUImageLevelsFilter - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageLevelsFragmentShaderString])) - { - return nil; - } - - minUniform = [filterProgram uniformIndex:@"levelMinimum"]; - midUniform = [filterProgram uniformIndex:@"levelMiddle"]; - maxUniform = [filterProgram uniformIndex:@"levelMaximum"]; - minOutputUniform = [filterProgram uniformIndex:@"minOutput"]; - maxOutputUniform = [filterProgram uniformIndex:@"maxOutput"]; - - [self setRedMin:0.0 gamma:1.0 max:1.0 minOut:0.0 maxOut:1.0]; - [self setGreenMin:0.0 gamma:1.0 max:1.0 minOut:0.0 maxOut:1.0]; - [self setBlueMin:0.0 gamma:1.0 max:1.0 minOut:0.0 maxOut:1.0]; - - return self; -} - -#pragma mark - -#pragma mark Helpers - -- (void)updateUniforms { - [self setVec3:minVector forUniform:minUniform program:filterProgram]; - [self setVec3:midVector forUniform:midUniform program:filterProgram]; - [self setVec3:maxVector forUniform:maxUniform program:filterProgram]; - [self setVec3:minOutputVector forUniform:minOutputUniform program:filterProgram]; - [self setVec3:maxOutputVector forUniform:maxOutputUniform program:filterProgram]; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setMin:(CGFloat)min gamma:(CGFloat)mid max:(CGFloat)max minOut:(CGFloat)minOut maxOut:(CGFloat)maxOut { - [self setRedMin:min gamma:mid max:max minOut:minOut maxOut:maxOut]; - [self setGreenMin:min gamma:mid max:max minOut:minOut maxOut:maxOut]; - [self setBlueMin:min gamma:mid max:max minOut:minOut maxOut:maxOut]; -} - -- (void)setMin:(CGFloat)min gamma:(CGFloat)mid max:(CGFloat)max { - [self setMin:min gamma:mid max:max minOut:0.0 maxOut:1.0]; -} - -- (void)setRedMin:(CGFloat)min gamma:(CGFloat)mid max:(CGFloat)max minOut:(CGFloat)minOut maxOut:(CGFloat)maxOut { - minVector.one = min; - midVector.one = mid; - maxVector.one = max; - minOutputVector.one = minOut; - maxOutputVector.one = maxOut; - - [self updateUniforms]; -} - -- (void)setRedMin:(CGFloat)min gamma:(CGFloat)mid max:(CGFloat)max { - [self setRedMin:min gamma:mid max:max minOut:0.0 maxOut:1.0]; -} - -- (void)setGreenMin:(CGFloat)min gamma:(CGFloat)mid max:(CGFloat)max minOut:(CGFloat)minOut maxOut:(CGFloat)maxOut { - minVector.two = min; - midVector.two = mid; - maxVector.two = max; - minOutputVector.two = minOut; - maxOutputVector.two = maxOut; - - [self updateUniforms]; -} - -- (void)setGreenMin:(CGFloat)min gamma:(CGFloat)mid max:(CGFloat)max { - [self setGreenMin:min gamma:mid max:max minOut:0.0 maxOut:1.0]; -} - -- (void)setBlueMin:(CGFloat)min gamma:(CGFloat)mid max:(CGFloat)max minOut:(CGFloat)minOut maxOut:(CGFloat)maxOut { - minVector.three = min; - midVector.three = mid; - maxVector.three = max; - minOutputVector.three = minOut; - maxOutputVector.three = maxOut; - - [self updateUniforms]; -} - -- (void)setBlueMin:(CGFloat)min gamma:(CGFloat)mid max:(CGFloat)max { - [self setBlueMin:min gamma:mid max:max minOut:0.0 maxOut:1.0]; -} - -@end - diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageLightenBlendFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageLightenBlendFilter.h deleted file mode 100755 index b0287c1..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageLightenBlendFilter.h +++ /dev/null @@ -1,8 +0,0 @@ -#import "GPUImageTwoInputFilter.h" - -/// Blends two images by taking the maximum value of each color component between the images -@interface GPUImageLightenBlendFilter : GPUImageTwoInputFilter -{ -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageLightenBlendFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageLightenBlendFilter.m deleted file mode 100755 index 2bbd4b2..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageLightenBlendFilter.m +++ /dev/null @@ -1,52 +0,0 @@ -#import "GPUImageLightenBlendFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageLightenBlendFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - varying highp vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - lowp vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate2); - - gl_FragColor = max(textureColor, textureColor2); - } -); -#else -NSString *const kGPUImageLightenBlendFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate2); - - gl_FragColor = max(textureColor, textureColor2); - } - ); -#endif - -@implementation GPUImageLightenBlendFilter - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageLightenBlendFragmentShaderString])) - { - return nil; - } - - return self; -} - -@end - diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageLineGenerator.h b/Example/Pods/GPUImage/framework/Source/GPUImageLineGenerator.h deleted file mode 100644 index 4c46736..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageLineGenerator.h +++ /dev/null @@ -1,18 +0,0 @@ -#import "GPUImageFilter.h" - -@interface GPUImageLineGenerator : GPUImageFilter -{ - GLint lineWidthUniform, lineColorUniform; - GLfloat *lineCoordinates; -} - -// The width of the displayed lines, in pixels. The default is 1. -@property(readwrite, nonatomic) CGFloat lineWidth; - -// The color of the lines is specified using individual red, green, and blue components (normalized to 1.0). The default is green: (0.0, 1.0, 0.0). -- (void)setLineColorRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent; - -// Rendering -- (void)renderLinesFromArray:(GLfloat *)lineSlopeAndIntercepts count:(NSUInteger)numberOfLines frameTime:(CMTime)frameTime; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageLineGenerator.m b/Example/Pods/GPUImage/framework/Source/GPUImageLineGenerator.m deleted file mode 100644 index 85d93be..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageLineGenerator.m +++ /dev/null @@ -1,164 +0,0 @@ -#import "GPUImageLineGenerator.h" - -NSString *const kGPUImageLineGeneratorVertexShaderString = SHADER_STRING -( - attribute vec4 position; - - void main() - { - gl_Position = position; - } -); - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageLineGeneratorFragmentShaderString = SHADER_STRING -( - uniform lowp vec3 lineColor; - - void main() - { - gl_FragColor = vec4(lineColor, 1.0); - } -); -#else -NSString *const kGPUImageLineGeneratorFragmentShaderString = SHADER_STRING -( - uniform vec3 lineColor; - - void main() - { - gl_FragColor = vec4(lineColor, 1.0); - } -); -#endif - -@interface GPUImageLineGenerator() - -- (void)generateLineCoordinates; - -@end - -@implementation GPUImageLineGenerator - -@synthesize lineWidth = _lineWidth; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithVertexShaderFromString:kGPUImageLineGeneratorVertexShaderString fragmentShaderFromString:kGPUImageLineGeneratorFragmentShaderString])) - { - return nil; - } - - runSynchronouslyOnVideoProcessingQueue(^{ - lineWidthUniform = [filterProgram uniformIndex:@"lineWidth"]; - lineColorUniform = [filterProgram uniformIndex:@"lineColor"]; - - self.lineWidth = 1.0; - [self setLineColorRed:0.0 green:1.0 blue:0.0]; - }); - - return self; -} - -- (void)dealloc -{ - if (lineCoordinates) - { - free(lineCoordinates); - } -} - -#pragma mark - -#pragma mark Rendering - -- (void)generateLineCoordinates; -{ - lineCoordinates = calloc(1024 * 4, sizeof(GLfloat)); -} - -- (void)renderLinesFromArray:(GLfloat *)lineSlopeAndIntercepts count:(NSUInteger)numberOfLines frameTime:(CMTime)frameTime; -{ - if (self.preventRendering) - { - return; - } - - if (lineCoordinates == NULL) - { - [self generateLineCoordinates]; - } - - // Iterate through and generate vertices from the slopes and intercepts - NSUInteger currentVertexIndex = 0; - NSUInteger currentLineIndex = 0; - NSUInteger maxLineIndex = numberOfLines *2; - while(currentLineIndex < maxLineIndex) - { - GLfloat slope = lineSlopeAndIntercepts[currentLineIndex++]; - GLfloat intercept = lineSlopeAndIntercepts[currentLineIndex++]; - - if (slope > 9000.0) // Vertical line - { - lineCoordinates[currentVertexIndex++] = intercept; - lineCoordinates[currentVertexIndex++] = -1.0; - lineCoordinates[currentVertexIndex++] = intercept; - lineCoordinates[currentVertexIndex++] = 1.0; - } - else - { - lineCoordinates[currentVertexIndex++] = -1.0; - lineCoordinates[currentVertexIndex++] = slope * -1.0 + intercept; - lineCoordinates[currentVertexIndex++] = 1.0; - lineCoordinates[currentVertexIndex++] = slope * 1.0 + intercept; - } - } - - runSynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext setActiveShaderProgram:filterProgram]; - - outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:[self sizeOfFBO] textureOptions:self.outputTextureOptions onlyTexture:NO]; - [outputFramebuffer activateFramebuffer]; - - glClearColor(0.0, 0.0, 0.0, 0.0); - glClear(GL_COLOR_BUFFER_BIT); - - glBlendEquation(GL_FUNC_ADD); - glBlendFunc(GL_ONE, GL_ONE); - glEnable(GL_BLEND); - - glVertexAttribPointer(filterPositionAttribute, 2, GL_FLOAT, 0, 0, lineCoordinates); - glDrawArrays(GL_LINES, 0, ((unsigned int)numberOfLines * 2)); - - glDisable(GL_BLEND); - - [self informTargetsAboutNewFrameAtTime:frameTime]; - }); -} - -- (void)renderToTextureWithVertices:(const GLfloat *)vertices textureCoordinates:(const GLfloat *)textureCoordinates; -{ - // Prevent rendering of the frame by normal means -} - -#pragma mark - -#pragma mark Accessors - -- (void)setLineWidth:(CGFloat)newValue; -{ - _lineWidth = newValue; - [GPUImageContext setActiveShaderProgram:filterProgram]; - glLineWidth(newValue); -} - -- (void)setLineColorRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent; -{ - GPUVector3 lineColor = {redComponent, greenComponent, blueComponent}; - - [self setVec3:lineColor forUniform:lineColorUniform program:filterProgram]; -} - - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageLinearBurnBlendFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageLinearBurnBlendFilter.h deleted file mode 100644 index 7e5e415..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageLinearBurnBlendFilter.h +++ /dev/null @@ -1,5 +0,0 @@ -#import "GPUImageTwoInputFilter.h" - -@interface GPUImageLinearBurnBlendFilter : GPUImageTwoInputFilter - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageLinearBurnBlendFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageLinearBurnBlendFilter.m deleted file mode 100644 index 4703196..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageLinearBurnBlendFilter.m +++ /dev/null @@ -1,51 +0,0 @@ -#import "GPUImageLinearBurnBlendFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageLinearBurnBlendFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - varying highp vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - mediump vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - mediump vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate2); - - gl_FragColor = vec4(clamp(textureColor.rgb + textureColor2.rgb - vec3(1.0), vec3(0.0), vec3(1.0)), textureColor.a); - } -); -#else -NSString *const kGPUImageLinearBurnBlendFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate2); - - gl_FragColor = vec4(clamp(textureColor.rgb + textureColor2.rgb - vec3(1.0), vec3(0.0), vec3(1.0)), textureColor.a); - } -); -#endif - -@implementation GPUImageLinearBurnBlendFilter - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageLinearBurnBlendFragmentShaderString])) - { - return nil; - } - - return self; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageLocalBinaryPatternFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageLocalBinaryPatternFilter.h deleted file mode 100644 index 431dbbd..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageLocalBinaryPatternFilter.h +++ /dev/null @@ -1,5 +0,0 @@ -#import "GPUImage3x3TextureSamplingFilter.h" - -@interface GPUImageLocalBinaryPatternFilter : GPUImage3x3TextureSamplingFilter - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageLocalBinaryPatternFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageLocalBinaryPatternFilter.m deleted file mode 100644 index 1ee1f8d..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageLocalBinaryPatternFilter.m +++ /dev/null @@ -1,123 +0,0 @@ -#import "GPUImageLocalBinaryPatternFilter.h" - -// This is based on "Accelerating image recognition on mobile devices using GPGPU" by Miguel Bordallo Lopez, Henri Nykanen, Jari Hannuksela, Olli Silven and Markku Vehvilainen -// http://www.ee.oulu.fi/~jhannuks/publications/SPIE2011a.pdf - -// Right pixel is the most significant bit, traveling clockwise to get to the upper right, which is the least significant -// If the external pixel is greater than or equal to the center, set to 1, otherwise 0 -// -// 2 1 0 -// 3 7 -// 4 5 6 - -// 01101101 -// 76543210 - -@implementation GPUImageLocalBinaryPatternFilter - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageLocalBinaryPatternFragmentShaderString = SHADER_STRING -( - precision highp float; - - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - lowp float centerIntensity = texture2D(inputImageTexture, textureCoordinate).r; - lowp float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; - lowp float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r; - lowp float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r; - lowp float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; - lowp float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r; - lowp float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r; - lowp float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r; - lowp float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r; - - lowp float byteTally = 1.0 / 255.0 * step(centerIntensity, topRightIntensity); - byteTally += 2.0 / 255.0 * step(centerIntensity, topIntensity); - byteTally += 4.0 / 255.0 * step(centerIntensity, topLeftIntensity); - byteTally += 8.0 / 255.0 * step(centerIntensity, leftIntensity); - byteTally += 16.0 / 255.0 * step(centerIntensity, bottomLeftIntensity); - byteTally += 32.0 / 255.0 * step(centerIntensity, bottomIntensity); - byteTally += 64.0 / 255.0 * step(centerIntensity, bottomRightIntensity); - byteTally += 128.0 / 255.0 * step(centerIntensity, rightIntensity); - - // TODO: Replace the above with a dot product and two vec4s - // TODO: Apply step to a matrix, rather than individually - - gl_FragColor = vec4(byteTally, byteTally, byteTally, 1.0); - } -); -#else -NSString *const kGPUImageLocalBinaryPatternFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - float centerIntensity = texture2D(inputImageTexture, textureCoordinate).r; - float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; - float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r; - float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r; - float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; - float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r; - float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r; - float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r; - float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r; - - float byteTally = 1.0 / 255.0 * step(centerIntensity, topRightIntensity); - byteTally += 2.0 / 255.0 * step(centerIntensity, topIntensity); - byteTally += 4.0 / 255.0 * step(centerIntensity, topLeftIntensity); - byteTally += 8.0 / 255.0 * step(centerIntensity, leftIntensity); - byteTally += 16.0 / 255.0 * step(centerIntensity, bottomLeftIntensity); - byteTally += 32.0 / 255.0 * step(centerIntensity, bottomIntensity); - byteTally += 64.0 / 255.0 * step(centerIntensity, bottomRightIntensity); - byteTally += 128.0 / 255.0 * step(centerIntensity, rightIntensity); - - // TODO: Replace the above with a dot product and two vec4s - // TODO: Apply step to a matrix, rather than individually - - gl_FragColor = vec4(byteTally, byteTally, byteTally, 1.0); - } -); -#endif - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageLocalBinaryPatternFragmentShaderString])) - { - return nil; - } - - return self; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageLookupFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageLookupFilter.h deleted file mode 100644 index 23ebde2..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageLookupFilter.h +++ /dev/null @@ -1,34 +0,0 @@ -#import "GPUImageTwoInputFilter.h" - -@interface GPUImageLookupFilter : GPUImageTwoInputFilter -{ - GLint intensityUniform; -} - -// How To Use: -// 1) Use your favourite photo editing application to apply a filter to lookup.png from GPUImage/framework/Resources. -// For this to work properly each pixel color must not depend on other pixels (e.g. blur will not work). -// If you need more complex filter you can create as many lookup tables as required. -// E.g. color_balance_lookup_1.png -> GPUImageGaussianBlurFilter -> color_balance_lookup_2.png -// 2) Use you new lookup.png file as a second input for GPUImageLookupFilter. - -// See GPUImageAmatorkaFilter, GPUImageMissEtikateFilter, and GPUImageSoftEleganceFilter for example. - -// Additional Info: -// Lookup texture is organised as 8x8 quads of 64x64 pixels representing all possible RGB colors: -//for (int by = 0; by < 8; by++) { -// for (int bx = 0; bx < 8; bx++) { -// for (int g = 0; g < 64; g++) { -// for (int r = 0; r < 64; r++) { -// image.setPixel(r + bx * 64, g + by * 64, qRgb((int)(r * 255.0 / 63.0 + 0.5), -// (int)(g * 255.0 / 63.0 + 0.5), -// (int)((bx + by * 8.0) * 255.0 / 63.0 + 0.5))); -// } -// } -// } -//} - -// Opacity/intensity of lookup filter ranges from 0.0 to 1.0, with 1.0 as the normal setting -@property(readwrite, nonatomic) CGFloat intensity; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageLookupFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageLookupFilter.m deleted file mode 100644 index c098392..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageLookupFilter.m +++ /dev/null @@ -1,115 +0,0 @@ -#import "GPUImageLookupFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageLookupFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - varying highp vec2 textureCoordinate2; // TODO: This is not used - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; // lookup texture - - uniform lowp float intensity; - - void main() - { - highp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - - highp float blueColor = textureColor.b * 63.0; - - highp vec2 quad1; - quad1.y = floor(floor(blueColor) / 8.0); - quad1.x = floor(blueColor) - (quad1.y * 8.0); - - highp vec2 quad2; - quad2.y = floor(ceil(blueColor) / 8.0); - quad2.x = ceil(blueColor) - (quad2.y * 8.0); - - highp vec2 texPos1; - texPos1.x = (quad1.x * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.r); - texPos1.y = (quad1.y * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.g); - - highp vec2 texPos2; - texPos2.x = (quad2.x * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.r); - texPos2.y = (quad2.y * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.g); - - lowp vec4 newColor1 = texture2D(inputImageTexture2, texPos1); - lowp vec4 newColor2 = texture2D(inputImageTexture2, texPos2); - - lowp vec4 newColor = mix(newColor1, newColor2, fract(blueColor)); - gl_FragColor = mix(textureColor, vec4(newColor.rgb, textureColor.w), intensity); - } -); -#else -NSString *const kGPUImageLookupFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; // TODO: This is not used - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; // lookup texture - - uniform float intensity; - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - - float blueColor = textureColor.b * 63.0; - - vec2 quad1; - quad1.y = floor(floor(blueColor) / 8.0); - quad1.x = floor(blueColor) - (quad1.y * 8.0); - - vec2 quad2; - quad2.y = floor(ceil(blueColor) / 8.0); - quad2.x = ceil(blueColor) - (quad2.y * 8.0); - - vec2 texPos1; - texPos1.x = (quad1.x * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.r); - texPos1.y = (quad1.y * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.g); - - vec2 texPos2; - texPos2.x = (quad2.x * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.r); - texPos2.y = (quad2.y * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.g); - - vec4 newColor1 = texture2D(inputImageTexture2, texPos1); - vec4 newColor2 = texture2D(inputImageTexture2, texPos2); - - vec4 newColor = mix(newColor1, newColor2, fract(blueColor)); - gl_FragColor = mix(textureColor, vec4(newColor.rgb, textureColor.w), intensity); - } -); -#endif - -@implementation GPUImageLookupFilter - -@synthesize intensity = _intensity; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - intensityUniform = [filterProgram uniformIndex:@"intensity"]; - self.intensity = 1.0f; - - if (!(self = [super initWithFragmentShaderFromString:kGPUImageLookupFragmentShaderString])) - { - return nil; - } - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setIntensity:(CGFloat)intensity -{ - _intensity = intensity; - - [self setFloat:_intensity forUniform:intensityUniform program:filterProgram]; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageLowPassFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageLowPassFilter.h deleted file mode 100644 index be5c397..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageLowPassFilter.h +++ /dev/null @@ -1,14 +0,0 @@ -#import "GPUImageFilterGroup.h" -#import "GPUImageBuffer.h" -#import "GPUImageDissolveBlendFilter.h" - -@interface GPUImageLowPassFilter : GPUImageFilterGroup -{ - GPUImageBuffer *bufferFilter; - GPUImageDissolveBlendFilter *dissolveBlendFilter; -} - -// This controls the degree by which the previous accumulated frames are blended with the current one. This ranges from 0.0 to 1.0, with a default of 0.5. -@property(readwrite, nonatomic) CGFloat filterStrength; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageLowPassFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageLowPassFilter.m deleted file mode 100644 index 39ca08f..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageLowPassFilter.m +++ /dev/null @@ -1,61 +0,0 @@ -#import "GPUImageLowPassFilter.h" - -@implementation GPUImageLowPassFilter - -@synthesize filterStrength; - -- (id)init; -{ - if (!(self = [super init])) - { - return nil; - } - - // Take in the frame and blend it with the previous one - dissolveBlendFilter = [[GPUImageDissolveBlendFilter alloc] init]; - [self addFilter:dissolveBlendFilter]; - - // Buffer the result to be fed back into the blend - bufferFilter = [[GPUImageBuffer alloc] init]; - [self addFilter:bufferFilter]; - - // Texture location 0 needs to be the original image for the dissolve blend - [bufferFilter addTarget:dissolveBlendFilter atTextureLocation:1]; - [dissolveBlendFilter addTarget:bufferFilter]; - - [dissolveBlendFilter disableSecondFrameCheck]; - - // To prevent double updating of this filter, disable updates from the sharp image side - // self.inputFilterToIgnoreForUpdates = unsharpMaskFilter; - - self.initialFilters = [NSArray arrayWithObject:dissolveBlendFilter]; - self.terminalFilter = dissolveBlendFilter; - - self.filterStrength = 0.5; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setFilterStrength:(CGFloat)newValue; -{ - dissolveBlendFilter.mix = newValue; -} - -- (CGFloat)filterStrength; -{ - return dissolveBlendFilter.mix; -} - -- (void)addTarget:(id)newTarget atTextureLocation:(NSInteger)textureLocation; -{ - [self.terminalFilter addTarget:newTarget atTextureLocation:textureLocation]; - //if use GPUImagePipline,will cause self.termainlFilter removeAllTargets,so need add bufferFilter back - if (self.terminalFilter == dissolveBlendFilter && ![self.terminalFilter.targets containsObject:bufferFilter]) { - [self.terminalFilter addTarget:bufferFilter atTextureLocation:1]; - } -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageLuminanceRangeFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageLuminanceRangeFilter.h deleted file mode 100644 index 5a31037..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageLuminanceRangeFilter.h +++ /dev/null @@ -1,12 +0,0 @@ -#import "GPUImageFilter.h" - -@interface GPUImageLuminanceRangeFilter : GPUImageFilter -{ - GLint rangeReductionUniform; -} - -/** The degree to reduce the luminance range, from 0.0 to 1.0. Default is 0.6. - */ -@property(readwrite, nonatomic) CGFloat rangeReductionFactor; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageLuminanceRangeFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageLuminanceRangeFilter.m deleted file mode 100644 index 5122c95..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageLuminanceRangeFilter.m +++ /dev/null @@ -1,76 +0,0 @@ -#import "GPUImageLuminanceRangeFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageLuminanceRangeFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform lowp float rangeReduction; - - // Values from "Graphics Shaders: Theory and Practice" by Bailey and Cunningham - const mediump vec3 luminanceWeighting = vec3(0.2125, 0.7154, 0.0721); - - void main() - { - lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - mediump float luminance = dot(textureColor.rgb, luminanceWeighting); - mediump float luminanceRatio = ((0.5 - luminance) * rangeReduction); - - gl_FragColor = vec4((textureColor.rgb) + (luminanceRatio), textureColor.w); - } -); -#else -NSString *const kGPUImageLuminanceRangeFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform float rangeReduction; - - // Values from "Graphics Shaders: Theory and Practice" by Bailey and Cunningham - const vec3 luminanceWeighting = vec3(0.2125, 0.7154, 0.0721); - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - float luminance = dot(textureColor.rgb, luminanceWeighting); - float luminanceRatio = ((0.5 - luminance) * rangeReduction); - - gl_FragColor = vec4((textureColor.rgb) + (luminanceRatio), textureColor.w); - } -); -#endif - -@implementation GPUImageLuminanceRangeFilter - -@synthesize rangeReductionFactor = _rangeReductionFactor; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageLuminanceRangeFragmentShaderString])) - { - return nil; - } - - rangeReductionUniform = [filterProgram uniformIndex:@"rangeReduction"]; - self.rangeReductionFactor = 0.6; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setRangeReductionFactor:(CGFloat)newValue; -{ - _rangeReductionFactor = newValue; - - [self setFloat:_rangeReductionFactor forUniform:rangeReductionUniform program:filterProgram]; -} - - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageLuminanceThresholdFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageLuminanceThresholdFilter.h deleted file mode 100755 index 0abb9a1..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageLuminanceThresholdFilter.h +++ /dev/null @@ -1,14 +0,0 @@ -#import "GPUImageFilter.h" - -/** Pixels with a luminance above the threshold will appear white, and those below will be black - */ -@interface GPUImageLuminanceThresholdFilter : GPUImageFilter -{ - GLint thresholdUniform; -} - -/** Anything above this luminance will be white, and anything below black. Ranges from 0.0 to 1.0, with 0.5 as the default - */ -@property(readwrite, nonatomic) CGFloat threshold; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageLuminanceThresholdFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageLuminanceThresholdFilter.m deleted file mode 100755 index 368b8fb..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageLuminanceThresholdFilter.m +++ /dev/null @@ -1,74 +0,0 @@ -#import "GPUImageLuminanceThresholdFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageLuminanceThresholdFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform highp float threshold; - - const highp vec3 W = vec3(0.2125, 0.7154, 0.0721); - - void main() - { - highp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - highp float luminance = dot(textureColor.rgb, W); - highp float thresholdResult = step(threshold, luminance); - - gl_FragColor = vec4(vec3(thresholdResult), textureColor.w); - } -); -#else -NSString *const kGPUImageLuminanceThresholdFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform float threshold; - - const vec3 W = vec3(0.2125, 0.7154, 0.0721); - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - float luminance = dot(textureColor.rgb, W); - float thresholdResult = step(threshold, luminance); - - gl_FragColor = vec4(vec3(thresholdResult), textureColor.w); - } -); -#endif - -@implementation GPUImageLuminanceThresholdFilter - -@synthesize threshold = _threshold; - -#pragma mark - -#pragma mark Initialization - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageLuminanceThresholdFragmentShaderString])) - { - return nil; - } - - thresholdUniform = [filterProgram uniformIndex:@"threshold"]; - self.threshold = 0.5; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setThreshold:(CGFloat)newValue; -{ - _threshold = newValue; - - [self setFloat:_threshold forUniform:thresholdUniform program:filterProgram]; -} - -@end - diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageLuminosity.h b/Example/Pods/GPUImage/framework/Source/GPUImageLuminosity.h deleted file mode 100644 index b2d2458..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageLuminosity.h +++ /dev/null @@ -1,17 +0,0 @@ -#import "GPUImageAverageColor.h" - -@interface GPUImageLuminosity : GPUImageAverageColor -{ - GLProgram *secondFilterProgram; - GLint secondFilterPositionAttribute, secondFilterTextureCoordinateAttribute; - GLint secondFilterInputTextureUniform, secondFilterInputTextureUniform2; - GLint secondFilterTexelWidthUniform, secondFilterTexelHeightUniform; -} - -// This block is called on the completion of color averaging for a frame -@property(nonatomic, copy) void(^luminosityProcessingFinishedBlock)(CGFloat luminosity, CMTime frameTime); - -- (void)extractLuminosityAtFrameTime:(CMTime)frameTime; -- (void)initializeSecondaryAttributes; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageLuminosity.m b/Example/Pods/GPUImage/framework/Source/GPUImageLuminosity.m deleted file mode 100644 index 37f374a..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageLuminosity.m +++ /dev/null @@ -1,329 +0,0 @@ -#import "GPUImageLuminosity.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageInitialLuminosityFragmentShaderString = SHADER_STRING -( - precision highp float; - - uniform sampler2D inputImageTexture; - - varying highp vec2 outputTextureCoordinate; - - varying highp vec2 upperLeftInputTextureCoordinate; - varying highp vec2 upperRightInputTextureCoordinate; - varying highp vec2 lowerLeftInputTextureCoordinate; - varying highp vec2 lowerRightInputTextureCoordinate; - - const highp vec3 W = vec3(0.2125, 0.7154, 0.0721); - - void main() - { - highp float upperLeftLuminance = dot(texture2D(inputImageTexture, upperLeftInputTextureCoordinate).rgb, W); - highp float upperRightLuminance = dot(texture2D(inputImageTexture, upperRightInputTextureCoordinate).rgb, W); - highp float lowerLeftLuminance = dot(texture2D(inputImageTexture, lowerLeftInputTextureCoordinate).rgb, W); - highp float lowerRightLuminance = dot(texture2D(inputImageTexture, lowerRightInputTextureCoordinate).rgb, W); - - highp float luminosity = 0.25 * (upperLeftLuminance + upperRightLuminance + lowerLeftLuminance + lowerRightLuminance); - gl_FragColor = vec4(luminosity, luminosity, luminosity, 1.0); - } -); - -NSString *const kGPUImageLuminosityFragmentShaderString = SHADER_STRING -( - precision highp float; - - uniform sampler2D inputImageTexture; - - varying highp vec2 outputTextureCoordinate; - - varying highp vec2 upperLeftInputTextureCoordinate; - varying highp vec2 upperRightInputTextureCoordinate; - varying highp vec2 lowerLeftInputTextureCoordinate; - varying highp vec2 lowerRightInputTextureCoordinate; - - void main() - { - highp float upperLeftLuminance = texture2D(inputImageTexture, upperLeftInputTextureCoordinate).r; - highp float upperRightLuminance = texture2D(inputImageTexture, upperRightInputTextureCoordinate).r; - highp float lowerLeftLuminance = texture2D(inputImageTexture, lowerLeftInputTextureCoordinate).r; - highp float lowerRightLuminance = texture2D(inputImageTexture, lowerRightInputTextureCoordinate).r; - - highp float luminosity = 0.25 * (upperLeftLuminance + upperRightLuminance + lowerLeftLuminance + lowerRightLuminance); - gl_FragColor = vec4(luminosity, luminosity, luminosity, 1.0); - } -); -#else -NSString *const kGPUImageInitialLuminosityFragmentShaderString = SHADER_STRING -( - uniform sampler2D inputImageTexture; - - varying vec2 outputTextureCoordinate; - - varying vec2 upperLeftInputTextureCoordinate; - varying vec2 upperRightInputTextureCoordinate; - varying vec2 lowerLeftInputTextureCoordinate; - varying vec2 lowerRightInputTextureCoordinate; - - const vec3 W = vec3(0.2125, 0.7154, 0.0721); - - void main() - { - float upperLeftLuminance = dot(texture2D(inputImageTexture, upperLeftInputTextureCoordinate).rgb, W); - float upperRightLuminance = dot(texture2D(inputImageTexture, upperRightInputTextureCoordinate).rgb, W); - float lowerLeftLuminance = dot(texture2D(inputImageTexture, lowerLeftInputTextureCoordinate).rgb, W); - float lowerRightLuminance = dot(texture2D(inputImageTexture, lowerRightInputTextureCoordinate).rgb, W); - - float luminosity = 0.25 * (upperLeftLuminance + upperRightLuminance + lowerLeftLuminance + lowerRightLuminance); - gl_FragColor = vec4(luminosity, luminosity, luminosity, 1.0); - } -); - -NSString *const kGPUImageLuminosityFragmentShaderString = SHADER_STRING -( - uniform sampler2D inputImageTexture; - - varying vec2 outputTextureCoordinate; - - varying vec2 upperLeftInputTextureCoordinate; - varying vec2 upperRightInputTextureCoordinate; - varying vec2 lowerLeftInputTextureCoordinate; - varying vec2 lowerRightInputTextureCoordinate; - - void main() - { - float upperLeftLuminance = texture2D(inputImageTexture, upperLeftInputTextureCoordinate).r; - float upperRightLuminance = texture2D(inputImageTexture, upperRightInputTextureCoordinate).r; - float lowerLeftLuminance = texture2D(inputImageTexture, lowerLeftInputTextureCoordinate).r; - float lowerRightLuminance = texture2D(inputImageTexture, lowerRightInputTextureCoordinate).r; - - float luminosity = 0.25 * (upperLeftLuminance + upperRightLuminance + lowerLeftLuminance + lowerRightLuminance); - gl_FragColor = vec4(luminosity, luminosity, luminosity, 1.0); - } -); -#endif - -@implementation GPUImageLuminosity - -@synthesize luminosityProcessingFinishedBlock = _luminosityProcessingFinishedBlock; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithVertexShaderFromString:kGPUImageColorAveragingVertexShaderString fragmentShaderFromString:kGPUImageInitialLuminosityFragmentShaderString])) - { - return nil; - } - - texelWidthUniform = [filterProgram uniformIndex:@"texelWidth"]; - texelHeightUniform = [filterProgram uniformIndex:@"texelHeight"]; - - __unsafe_unretained GPUImageLuminosity *weakSelf = self; - [self setFrameProcessingCompletionBlock:^(GPUImageOutput *filter, CMTime frameTime) { - [weakSelf extractLuminosityAtFrameTime:frameTime]; - }]; - - runSynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext useImageProcessingContext]; - - secondFilterProgram = [[GPUImageContext sharedImageProcessingContext] programForVertexShaderString:kGPUImageColorAveragingVertexShaderString fragmentShaderString:kGPUImageLuminosityFragmentShaderString]; - - if (!secondFilterProgram.initialized) - { - [self initializeSecondaryAttributes]; - - if (![secondFilterProgram link]) - { - NSString *progLog = [secondFilterProgram programLog]; - NSLog(@"Program link log: %@", progLog); - NSString *fragLog = [secondFilterProgram fragmentShaderLog]; - NSLog(@"Fragment shader compile log: %@", fragLog); - NSString *vertLog = [secondFilterProgram vertexShaderLog]; - NSLog(@"Vertex shader compile log: %@", vertLog); - filterProgram = nil; - NSAssert(NO, @"Filter shader link failed"); - } - } - - secondFilterPositionAttribute = [secondFilterProgram attributeIndex:@"position"]; - secondFilterTextureCoordinateAttribute = [secondFilterProgram attributeIndex:@"inputTextureCoordinate"]; - secondFilterInputTextureUniform = [secondFilterProgram uniformIndex:@"inputImageTexture"]; // This does assume a name of "inputImageTexture" for the fragment shader - secondFilterInputTextureUniform2 = [secondFilterProgram uniformIndex:@"inputImageTexture2"]; // This does assume a name of "inputImageTexture2" for second input texture in the fragment shader - - secondFilterTexelWidthUniform = [secondFilterProgram uniformIndex:@"texelWidth"]; - secondFilterTexelHeightUniform = [secondFilterProgram uniformIndex:@"texelHeight"]; - - [GPUImageContext setActiveShaderProgram:secondFilterProgram]; - - glEnableVertexAttribArray(secondFilterPositionAttribute); - glEnableVertexAttribArray(secondFilterTextureCoordinateAttribute); - }); - - return self; -} - -- (void)initializeSecondaryAttributes; -{ - [secondFilterProgram addAttribute:@"position"]; - [secondFilterProgram addAttribute:@"inputTextureCoordinate"]; -} - -/* -- (void)renderToTextureWithVertices:(const GLfloat *)vertices textureCoordinates:(const GLfloat *)textureCoordinates; -{ - if (self.preventRendering) - { - [firstInputFramebuffer unlock]; - return; - } - - // Do an initial render pass that both convert to luminance and reduces - [GPUImageContext setActiveShaderProgram:filterProgram]; - - glVertexAttribPointer(filterPositionAttribute, 2, GL_FLOAT, 0, 0, vertices); - glVertexAttribPointer(filterTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, textureCoordinates); - - GLuint currentFramebuffer = [[stageFramebuffers objectAtIndex:0] intValue]; - glBindFramebuffer(GL_FRAMEBUFFER, currentFramebuffer); - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - CGSize currentStageSize = [[stageSizes objectAtIndex:0] CGSizeValue]; -#else - NSSize currentStageSize = [[stageSizes objectAtIndex:0] sizeValue]; -#endif - glViewport(0, 0, (int)currentStageSize.width, (int)currentStageSize.height); - - GLuint currentTexture = [firstInputFramebuffer texture]; - - glClearColor(0.0f, 0.0f, 0.0f, 1.0f); - glClear(GL_COLOR_BUFFER_BIT); - - glActiveTexture(GL_TEXTURE2); - glBindTexture(GL_TEXTURE_2D, currentTexture); - - glUniform1i(filterInputTextureUniform, 2); - - glUniform1f(texelWidthUniform, 0.5 / currentStageSize.width); - glUniform1f(texelHeightUniform, 0.5 / currentStageSize.height); - - glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); - - currentTexture = [[stageTextures objectAtIndex:0] intValue]; - - // Just perform reductions from this point on - [GPUImageContext setActiveShaderProgram:secondFilterProgram]; - glVertexAttribPointer(secondFilterPositionAttribute, 2, GL_FLOAT, 0, 0, vertices); - glVertexAttribPointer(secondFilterTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, textureCoordinates); - - NSUInteger numberOfStageFramebuffers = [stageFramebuffers count]; - for (NSUInteger currentStage = 1; currentStage < numberOfStageFramebuffers; currentStage++) - { - currentFramebuffer = [[stageFramebuffers objectAtIndex:currentStage] intValue]; - glBindFramebuffer(GL_FRAMEBUFFER, currentFramebuffer); - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - currentStageSize = [[stageSizes objectAtIndex:currentStage] CGSizeValue]; -#else - currentStageSize = [[stageSizes objectAtIndex:currentStage] sizeValue]; -#endif - glViewport(0, 0, (int)currentStageSize.width, (int)currentStageSize.height); - - glClearColor(0.0f, 0.0f, 0.0f, 1.0f); - glClear(GL_COLOR_BUFFER_BIT); - - glActiveTexture(GL_TEXTURE2); - glBindTexture(GL_TEXTURE_2D, currentTexture); - - glUniform1i(secondFilterInputTextureUniform, 2); - - glUniform1f(secondFilterTexelWidthUniform, 0.5 / currentStageSize.width); - glUniform1f(secondFilterTexelHeightUniform, 0.5 / currentStageSize.height); - - glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); - - currentTexture = [[stageTextures objectAtIndex:currentStage] intValue]; - -// NSUInteger totalBytesForImage = (int)currentStageSize.width * (int)currentStageSize.height * 4; -// GLubyte *rawImagePixels2 = (GLubyte *)malloc(totalBytesForImage); -// glReadPixels(0, 0, (int)currentStageSize.width, (int)currentStageSize.height, GL_RGBA, GL_UNSIGNED_BYTE, rawImagePixels2); -// CGDataProviderRef dataProvider = CGDataProviderCreateWithData(NULL, rawImagePixels2, totalBytesForImage, NULL); -// CGColorSpaceRef defaultRGBColorSpace = CGColorSpaceCreateDeviceRGB(); -// -// CGFloat currentRedTotal = 0.0f, currentGreenTotal = 0.0f, currentBlueTotal = 0.0f, currentAlphaTotal = 0.0f; -// NSUInteger totalNumberOfPixels = totalBytesForImage / 4; -// -// for (NSUInteger currentPixel = 0; currentPixel < totalNumberOfPixels; currentPixel++) -// { -// currentRedTotal += (CGFloat)rawImagePixels2[(currentPixel * 4)] / 255.0f; -// currentGreenTotal += (CGFloat)rawImagePixels2[(currentPixel * 4) + 1] / 255.0f; -// currentBlueTotal += (CGFloat)rawImagePixels2[(currentPixel * 4 + 2)] / 255.0f; -// currentAlphaTotal += (CGFloat)rawImagePixels2[(currentPixel * 4) + 3] / 255.0f; -// } -// -// NSLog(@"Stage %d average image red: %f, green: %f, blue: %f, alpha: %f", currentStage, currentRedTotal / (CGFloat)totalNumberOfPixels, currentGreenTotal / (CGFloat)totalNumberOfPixels, currentBlueTotal / (CGFloat)totalNumberOfPixels, currentAlphaTotal / (CGFloat)totalNumberOfPixels); -// -// -// CGImageRef cgImageFromBytes = CGImageCreate((int)currentStageSize.width, (int)currentStageSize.height, 8, 32, 4 * (int)currentStageSize.width, defaultRGBColorSpace, kCGBitmapByteOrderDefault | kCGImageAlphaLast, dataProvider, NULL, NO, kCGRenderingIntentDefault); -// -// UIImage *imageToSave = [UIImage imageWithCGImage:cgImageFromBytes]; -// -// NSData *dataForPNGFile = UIImagePNGRepresentation(imageToSave); -// -// NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); -// NSString *documentsDirectory = [paths objectAtIndex:0]; -// -// NSString *imageName = [NSString stringWithFormat:@"AverageLevel%d.png", currentStage]; -// NSError *error = nil; -// if (![dataForPNGFile writeToFile:[documentsDirectory stringByAppendingPathComponent:imageName] options:NSAtomicWrite error:&error]) -// { -// return; -// } - } - - [firstInputFramebuffer unlock]; -} - */ - -#pragma mark - -#pragma mark Callbacks - -- (void)extractLuminosityAtFrameTime:(CMTime)frameTime; -{ - runSynchronouslyOnVideoProcessingQueue(^{ - - // we need a normal color texture for this filter - NSAssert(self.outputTextureOptions.internalFormat == GL_RGBA, @"The output texture format for this filter must be GL_RGBA."); - NSAssert(self.outputTextureOptions.type == GL_UNSIGNED_BYTE, @"The type of the output texture of this filter must be GL_UNSIGNED_BYTE."); - - NSUInteger totalNumberOfPixels = round(finalStageSize.width * finalStageSize.height); - - if (rawImagePixels == NULL) - { - rawImagePixels = (GLubyte *)malloc(totalNumberOfPixels * 4); - } - - [GPUImageContext useImageProcessingContext]; - [outputFramebuffer activateFramebuffer]; - - glReadPixels(0, 0, (int)finalStageSize.width, (int)finalStageSize.height, GL_RGBA, GL_UNSIGNED_BYTE, rawImagePixels); - - NSUInteger luminanceTotal = 0; - NSUInteger byteIndex = 0; - for (NSUInteger currentPixel = 0; currentPixel < totalNumberOfPixels; currentPixel++) - { - luminanceTotal += rawImagePixels[byteIndex]; - byteIndex += 4; - } - - CGFloat normalizedLuminosityTotal = (CGFloat)luminanceTotal / (CGFloat)totalNumberOfPixels / 255.0; - - if (_luminosityProcessingFinishedBlock != NULL) - { - _luminosityProcessingFinishedBlock(normalizedLuminosityTotal, frameTime); - } - }); -} - - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageLuminosityBlendFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageLuminosityBlendFilter.h deleted file mode 100644 index 03b5e4c..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageLuminosityBlendFilter.h +++ /dev/null @@ -1,5 +0,0 @@ -#import "GPUImageTwoInputFilter.h" - -@interface GPUImageLuminosityBlendFilter : GPUImageTwoInputFilter - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageLuminosityBlendFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageLuminosityBlendFilter.m deleted file mode 100644 index 7e39974..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageLuminosityBlendFilter.m +++ /dev/null @@ -1,113 +0,0 @@ -#import "GPUImageLuminosityBlendFilter.h" - -/** - * Luminosity blend mode based upon pseudo code from the PDF specification. - */ -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageLuminosityBlendFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - varying highp vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - highp float lum(lowp vec3 c) { - return dot(c, vec3(0.3, 0.59, 0.11)); - } - - lowp vec3 clipcolor(lowp vec3 c) { - highp float l = lum(c); - lowp float n = min(min(c.r, c.g), c.b); - lowp float x = max(max(c.r, c.g), c.b); - - if (n < 0.0) { - c.r = l + ((c.r - l) * l) / (l - n); - c.g = l + ((c.g - l) * l) / (l - n); - c.b = l + ((c.b - l) * l) / (l - n); - } - if (x > 1.0) { - c.r = l + ((c.r - l) * (1.0 - l)) / (x - l); - c.g = l + ((c.g - l) * (1.0 - l)) / (x - l); - c.b = l + ((c.b - l) * (1.0 - l)) / (x - l); - } - - return c; - } - - lowp vec3 setlum(lowp vec3 c, highp float l) { - highp float d = l - lum(c); - c = c + vec3(d); - return clipcolor(c); - } - - void main() - { - highp vec4 baseColor = texture2D(inputImageTexture, textureCoordinate); - highp vec4 overlayColor = texture2D(inputImageTexture2, textureCoordinate2); - - gl_FragColor = vec4(baseColor.rgb * (1.0 - overlayColor.a) + setlum(baseColor.rgb, lum(overlayColor.rgb)) * overlayColor.a, baseColor.a); - } -); -#else -NSString *const kGPUImageLuminosityBlendFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - float lum(vec3 c) { - return dot(c, vec3(0.3, 0.59, 0.11)); - } - - vec3 clipcolor(vec3 c) { - float l = lum(c); - float n = min(min(c.r, c.g), c.b); - float x = max(max(c.r, c.g), c.b); - - if (n < 0.0) { - c.r = l + ((c.r - l) * l) / (l - n); - c.g = l + ((c.g - l) * l) / (l - n); - c.b = l + ((c.b - l) * l) / (l - n); - } - if (x > 1.0) { - c.r = l + ((c.r - l) * (1.0 - l)) / (x - l); - c.g = l + ((c.g - l) * (1.0 - l)) / (x - l); - c.b = l + ((c.b - l) * (1.0 - l)) / (x - l); - } - - return c; - } - - vec3 setlum(vec3 c, float l) { - float d = l - lum(c); - c = c + vec3(d); - return clipcolor(c); - } - - void main() - { - vec4 baseColor = texture2D(inputImageTexture, textureCoordinate); - vec4 overlayColor = texture2D(inputImageTexture2, textureCoordinate2); - - gl_FragColor = vec4(baseColor.rgb * (1.0 - overlayColor.a) + setlum(baseColor.rgb, lum(overlayColor.rgb)) * overlayColor.a, baseColor.a); - } -); -#endif - - -@implementation GPUImageLuminosityBlendFilter - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageLuminosityBlendFragmentShaderString])) - { - return nil; - } - - return self; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageMaskFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageMaskFilter.h deleted file mode 100755 index 94cf064..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageMaskFilter.h +++ /dev/null @@ -1,5 +0,0 @@ -#import "GPUImageTwoInputFilter.h" - -@interface GPUImageMaskFilter : GPUImageTwoInputFilter - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageMaskFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageMaskFilter.m deleted file mode 100755 index 24503b3..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageMaskFilter.m +++ /dev/null @@ -1,76 +0,0 @@ -#import "GPUImageMaskFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageMaskShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - varying highp vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - lowp vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate2); - - //Averages mask's the RGB values, and scales that value by the mask's alpha - // - //The dot product should take fewer cycles than doing an average normally - // - //Typical/ideal case, R,G, and B will be the same, and Alpha will be 1.0 - lowp float newAlpha = dot(textureColor2.rgb, vec3(.33333334, .33333334, .33333334)) * textureColor2.a; - - gl_FragColor = vec4(textureColor.xyz, newAlpha); -// gl_FragColor = vec4(textureColor2); - } -); -#else -NSString *const kGPUImageMaskShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate2); - - //Averages mask's the RGB values, and scales that value by the mask's alpha - // - //The dot product should take fewer cycles than doing an average normally - // - //Typical/ideal case, R,G, and B will be the same, and Alpha will be 1.0 - float newAlpha = dot(textureColor2.rgb, vec3(.33333334, .33333334, .33333334)) * textureColor2.a; - - gl_FragColor = vec4(textureColor.xyz, newAlpha); - // gl_FragColor = vec4(textureColor2); - } -); -#endif - -@implementation GPUImageMaskFilter - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageMaskShaderString])) - { - return nil; - } - - return self; -} - -- (void)renderToTextureWithVertices:(const GLfloat *)vertices textureCoordinates:(const GLfloat *)textureCoordinates; -{ - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - [super renderToTextureWithVertices:vertices textureCoordinates:textureCoordinates]; - glDisable(GL_BLEND); -} - -@end - diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageMedianFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageMedianFilter.h deleted file mode 100644 index 8022578..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageMedianFilter.h +++ /dev/null @@ -1,5 +0,0 @@ -#import "GPUImage3x3TextureSamplingFilter.h" - -@interface GPUImageMedianFilter : GPUImage3x3TextureSamplingFilter - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageMedianFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageMedianFilter.m deleted file mode 100644 index 78c1180..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageMedianFilter.m +++ /dev/null @@ -1,178 +0,0 @@ -#import "GPUImageMedianFilter.h" - -/* - 3x3 median filter, adapted from "A Fast, Small-Radius GPU Median Filter" by Morgan McGuire in ShaderX6 - http://graphics.cs.williams.edu/papers/MedianShaderX6/ - - Morgan McGuire and Kyle Whitson - Williams College - - Register allocation tips by Victor Huang Xiaohuang - University of Illinois at Urbana-Champaign - - http://graphics.cs.williams.edu - - - Copyright (c) Morgan McGuire and Williams College, 2006 - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageMedianFragmentShaderString = SHADER_STRING -( - precision highp float; - - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - uniform sampler2D inputImageTexture; - -#define s2(a, b) temp = a; a = min(a, b); b = max(temp, b); -#define mn3(a, b, c) s2(a, b); s2(a, c); -#define mx3(a, b, c) s2(b, c); s2(a, c); - -#define mnmx3(a, b, c) mx3(a, b, c); s2(a, b); // 3 exchanges -#define mnmx4(a, b, c, d) s2(a, b); s2(c, d); s2(a, c); s2(b, d); // 4 exchanges -#define mnmx5(a, b, c, d, e) s2(a, b); s2(c, d); mn3(a, c, e); mx3(b, d, e); // 6 exchanges -#define mnmx6(a, b, c, d, e, f) s2(a, d); s2(b, e); s2(c, f); mn3(a, b, c); mx3(d, e, f); // 7 exchanges - - void main() - { - vec3 v[6]; - - v[0] = texture2D(inputImageTexture, bottomLeftTextureCoordinate).rgb; - v[1] = texture2D(inputImageTexture, topRightTextureCoordinate).rgb; - v[2] = texture2D(inputImageTexture, topLeftTextureCoordinate).rgb; - v[3] = texture2D(inputImageTexture, bottomRightTextureCoordinate).rgb; - v[4] = texture2D(inputImageTexture, leftTextureCoordinate).rgb; - v[5] = texture2D(inputImageTexture, rightTextureCoordinate).rgb; -// v[6] = texture2D(inputImageTexture, bottomTextureCoordinate).rgb; -// v[7] = texture2D(inputImageTexture, topTextureCoordinate).rgb; - vec3 temp; - - mnmx6(v[0], v[1], v[2], v[3], v[4], v[5]); - - v[5] = texture2D(inputImageTexture, bottomTextureCoordinate).rgb; - - mnmx5(v[1], v[2], v[3], v[4], v[5]); - - v[5] = texture2D(inputImageTexture, topTextureCoordinate).rgb; - - mnmx4(v[2], v[3], v[4], v[5]); - - v[5] = texture2D(inputImageTexture, textureCoordinate).rgb; - - mnmx3(v[3], v[4], v[5]); - - gl_FragColor = vec4(v[4], 1.0); - } -); -#else -NSString *const kGPUImageMedianFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - uniform sampler2D inputImageTexture; - -#define s2(a, b) temp = a; a = min(a, b); b = max(temp, b); -#define mn3(a, b, c) s2(a, b); s2(a, c); -#define mx3(a, b, c) s2(b, c); s2(a, c); - -#define mnmx3(a, b, c) mx3(a, b, c); s2(a, b); // 3 exchanges -#define mnmx4(a, b, c, d) s2(a, b); s2(c, d); s2(a, c); s2(b, d); // 4 exchanges -#define mnmx5(a, b, c, d, e) s2(a, b); s2(c, d); mn3(a, c, e); mx3(b, d, e); // 6 exchanges -#define mnmx6(a, b, c, d, e, f) s2(a, d); s2(b, e); s2(c, f); mn3(a, b, c); mx3(d, e, f); // 7 exchanges - - void main() - { - vec3 v[6]; - - v[0] = texture2D(inputImageTexture, bottomLeftTextureCoordinate).rgb; - v[1] = texture2D(inputImageTexture, topRightTextureCoordinate).rgb; - v[2] = texture2D(inputImageTexture, topLeftTextureCoordinate).rgb; - v[3] = texture2D(inputImageTexture, bottomRightTextureCoordinate).rgb; - v[4] = texture2D(inputImageTexture, leftTextureCoordinate).rgb; - v[5] = texture2D(inputImageTexture, rightTextureCoordinate).rgb; - // v[6] = texture2D(inputImageTexture, bottomTextureCoordinate).rgb; - // v[7] = texture2D(inputImageTexture, topTextureCoordinate).rgb; - vec3 temp; - - mnmx6(v[0], v[1], v[2], v[3], v[4], v[5]); - - v[5] = texture2D(inputImageTexture, bottomTextureCoordinate).rgb; - - mnmx5(v[1], v[2], v[3], v[4], v[5]); - - v[5] = texture2D(inputImageTexture, topTextureCoordinate).rgb; - - mnmx4(v[2], v[3], v[4], v[5]); - - v[5] = texture2D(inputImageTexture, textureCoordinate).rgb; - - mnmx3(v[3], v[4], v[5]); - - gl_FragColor = vec4(v[4], 1.0); - } -); -#endif - -@implementation GPUImageMedianFilter - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageMedianFragmentShaderString])) - { - return nil; - } - - hasOverriddenImageSizeFactor = NO; - - return self; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageMissEtikateFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageMissEtikateFilter.h deleted file mode 100755 index de17064..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageMissEtikateFilter.h +++ /dev/null @@ -1,17 +0,0 @@ -#import "GPUImageFilterGroup.h" - -@class GPUImagePicture; - -/** A photo filter based on Photoshop action by Miss Etikate: - http://miss-etikate.deviantart.com/art/Photoshop-Action-15-120151961 - */ - -// Note: If you want to use this effect you have to add lookup_miss_etikate.png -// from Resources folder to your application bundle. - -@interface GPUImageMissEtikateFilter : GPUImageFilterGroup -{ - GPUImagePicture *lookupImageSource; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageMissEtikateFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageMissEtikateFilter.m deleted file mode 100755 index 1810b70..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageMissEtikateFilter.m +++ /dev/null @@ -1,38 +0,0 @@ -#import "GPUImageMissEtikateFilter.h" -#import "GPUImagePicture.h" -#import "GPUImageLookupFilter.h" - -@implementation GPUImageMissEtikateFilter - -- (id)init; -{ - if (!(self = [super init])) - { - return nil; - } - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - UIImage *image = [UIImage imageNamed:@"lookup_miss_etikate.png"]; -#else - NSImage *image = [NSImage imageNamed:@"lookup_miss_etikate.png"]; -#endif - - NSAssert(image, @"To use GPUImageMissEtikateFilter you need to add lookup_miss_etikate.png from GPUImage/framework/Resources to your application bundle."); - - lookupImageSource = [[GPUImagePicture alloc] initWithImage:image]; - GPUImageLookupFilter *lookupFilter = [[GPUImageLookupFilter alloc] init]; - [self addFilter:lookupFilter]; - - [lookupImageSource addTarget:lookupFilter atTextureLocation:1]; - [lookupImageSource processImage]; - - self.initialFilters = [NSArray arrayWithObjects:lookupFilter, nil]; - self.terminalFilter = lookupFilter; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageMonochromeFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageMonochromeFilter.h deleted file mode 100644 index 66a0e77..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageMonochromeFilter.h +++ /dev/null @@ -1,13 +0,0 @@ -#import "GPUImageFilter.h" - -@interface GPUImageMonochromeFilter : GPUImageFilter -{ - GLint intensityUniform, filterColorUniform; -} - -@property(readwrite, nonatomic) CGFloat intensity; -@property(readwrite, nonatomic) GPUVector4 color; - -- (void)setColorRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageMonochromeFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageMonochromeFilter.m deleted file mode 100644 index 70cef87..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageMonochromeFilter.m +++ /dev/null @@ -1,115 +0,0 @@ -#import "GPUImageMonochromeFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUMonochromeFragmentShaderString = SHADER_STRING -( - precision lowp float; - - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform float intensity; - uniform vec3 filterColor; - - const mediump vec3 luminanceWeighting = vec3(0.2125, 0.7154, 0.0721); - - void main() - { - //desat, then apply overlay blend - lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - float luminance = dot(textureColor.rgb, luminanceWeighting); - - lowp vec4 desat = vec4(vec3(luminance), 1.0); - - //overlay - lowp vec4 outputColor = vec4( - (desat.r < 0.5 ? (2.0 * desat.r * filterColor.r) : (1.0 - 2.0 * (1.0 - desat.r) * (1.0 - filterColor.r))), - (desat.g < 0.5 ? (2.0 * desat.g * filterColor.g) : (1.0 - 2.0 * (1.0 - desat.g) * (1.0 - filterColor.g))), - (desat.b < 0.5 ? (2.0 * desat.b * filterColor.b) : (1.0 - 2.0 * (1.0 - desat.b) * (1.0 - filterColor.b))), - 1.0 - ); - - //which is better, or are they equal? - gl_FragColor = vec4( mix(textureColor.rgb, outputColor.rgb, intensity), textureColor.a); - } -); -#else -NSString *const kGPUMonochromeFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform float intensity; - uniform vec3 filterColor; - - const vec3 luminanceWeighting = vec3(0.2125, 0.7154, 0.0721); - - void main() - { - //desat, then apply overlay blend - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - float luminance = dot(textureColor.rgb, luminanceWeighting); - - vec4 desat = vec4(vec3(luminance), 1.0); - - //overlay - vec4 outputColor = vec4( - (desat.r < 0.5 ? (2.0 * desat.r * filterColor.r) : (1.0 - 2.0 * (1.0 - desat.r) * (1.0 - filterColor.r))), - (desat.g < 0.5 ? (2.0 * desat.g * filterColor.g) : (1.0 - 2.0 * (1.0 - desat.g) * (1.0 - filterColor.g))), - (desat.b < 0.5 ? (2.0 * desat.b * filterColor.b) : (1.0 - 2.0 * (1.0 - desat.b) * (1.0 - filterColor.b))), - 1.0 - ); - - //which is better, or are they equal? - gl_FragColor = vec4( mix(textureColor.rgb, outputColor.rgb, intensity), textureColor.a); - } -); -#endif - -@implementation GPUImageMonochromeFilter - -@synthesize intensity = _intensity; -@synthesize color = _color; - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUMonochromeFragmentShaderString])) - { - return nil; - } - - intensityUniform = [filterProgram uniformIndex:@"intensity"]; - filterColorUniform = [filterProgram uniformIndex:@"filterColor"]; - - self.intensity = 1.0; - self.color = (GPUVector4){0.6f, 0.45f, 0.3f, 1.f}; - //self.color = [CIColor colorWithRed:0.6 green:0.45 blue:0.3 alpha:1.]; - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setColor:(GPUVector4)color; -{ - - _color = color; - - [self setColorRed:color.one green:color.two blue:color.three]; -} - -- (void)setColorRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent; -{ - GPUVector3 filterColor = {redComponent, greenComponent, blueComponent}; - - [self setVec3:filterColor forUniform:filterColorUniform program:filterProgram]; -} - -- (void)setIntensity:(CGFloat)newValue; -{ - _intensity = newValue; - - [self setFloat:_intensity forUniform:intensityUniform program:filterProgram]; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageMosaicFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageMosaicFilter.h deleted file mode 100644 index 5f72d3c..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageMosaicFilter.h +++ /dev/null @@ -1,22 +0,0 @@ - -// This needs a little more work, it's rotating the input tileset and there are some artifacts (I think from GL_LINEAR interpolation), but it's working - -#import "GPUImageTwoInputFilter.h" -#import "GPUImagePicture.h" - -@interface GPUImageMosaicFilter : GPUImageTwoInputFilter { - GLint inputTileSizeUniform, numTilesUniform, displayTileSizeUniform, colorOnUniform; - GPUImagePicture *pic; -} - -// This filter takes an input tileset, the tiles must ascend in luminance -// It looks at the input image and replaces each display tile with an input tile -// according to the luminance of that tile. The idea was to replicate the ASCII -// video filters seen in other apps, but the tileset can be anything. -@property(readwrite, nonatomic) CGSize inputTileSize; -@property(readwrite, nonatomic) float numTiles; -@property(readwrite, nonatomic) CGSize displayTileSize; -@property(readwrite, nonatomic) BOOL colorOn; -@property(readwrite, nonatomic, copy) NSString *tileSet; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageMosaicFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageMosaicFilter.m deleted file mode 100644 index b017ca9..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageMosaicFilter.m +++ /dev/null @@ -1,188 +0,0 @@ -// -// GPUImageMosaicFilter.m - - -#import "GPUImageMosaicFilter.h" -#import "GPUImagePicture.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageMosaicFragmentShaderString = SHADER_STRING -( - precision highp float; - - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - uniform vec2 inputTileSize; - uniform vec2 displayTileSize; - uniform float numTiles; - uniform int colorOn; - - void main() - { - vec2 xy = textureCoordinate; - xy = xy - mod(xy, displayTileSize); - - vec4 lumcoeff = vec4(0.299,0.587,0.114,0.0); - - vec4 inputColor = texture2D(inputImageTexture2, xy); - float lum = dot(inputColor,lumcoeff); - lum = 1.0 - lum; - - float stepsize = 1.0 / numTiles; - float lumStep = (lum - mod(lum, stepsize)) / stepsize; - - float rowStep = 1.0 / inputTileSize.x; - float x = mod(lumStep, rowStep); - float y = floor(lumStep / rowStep); - - vec2 startCoord = vec2(float(x) * inputTileSize.x, float(y) * inputTileSize.y); - vec2 finalCoord = startCoord + ((textureCoordinate - xy) * (inputTileSize / displayTileSize)); - - vec4 color = texture2D(inputImageTexture, finalCoord); - if (colorOn == 1) { - color = color * inputColor; - } - gl_FragColor = color; - - } -); -#else -NSString *const kGPUImageMosaicFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - uniform vec2 inputTileSize; - uniform vec2 displayTileSize; - uniform float numTiles; - uniform int colorOn; - - void main() - { - vec2 xy = textureCoordinate; - xy = xy - mod(xy, displayTileSize); - - vec4 lumcoeff = vec4(0.299,0.587,0.114,0.0); - - vec4 inputColor = texture2D(inputImageTexture2, xy); - float lum = dot(inputColor,lumcoeff); - lum = 1.0 - lum; - - float stepsize = 1.0 / numTiles; - float lumStep = (lum - mod(lum, stepsize)) / stepsize; - - float rowStep = 1.0 / inputTileSize.x; - float x = mod(lumStep, rowStep); - float y = floor(lumStep / rowStep); - - vec2 startCoord = vec2(float(x) * inputTileSize.x, float(y) * inputTileSize.y); - vec2 finalCoord = startCoord + ((textureCoordinate - xy) * (inputTileSize / displayTileSize)); - - vec4 color = texture2D(inputImageTexture, finalCoord); - if (colorOn == 1) { - color = color * inputColor; - } - gl_FragColor = color; - } -); -#endif - -@implementation GPUImageMosaicFilter - -@synthesize inputTileSize = _inputTileSize, numTiles = _numTiles, displayTileSize = _displayTileSize, colorOn = _colorOn; -@synthesize tileSet = _tileSet; - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageMosaicFragmentShaderString])) - { - return nil; - } - - inputTileSizeUniform = [filterProgram uniformIndex:@"inputTileSize"]; - displayTileSizeUniform = [filterProgram uniformIndex:@"displayTileSize"]; - numTilesUniform = [filterProgram uniformIndex:@"numTiles"]; - colorOnUniform = [filterProgram uniformIndex:@"colorOn"]; - - CGSize its = CGSizeMake(0.125, 0.125); - CGSize dts = CGSizeMake(0.025, 0.025); - [self setDisplayTileSize:dts]; - [self setInputTileSize:its]; - [self setNumTiles:64.0]; - [self setColorOn:YES]; - //[self setTileSet:@"squares.png"]; - return self; -} - -- (void)setColorOn:(BOOL)yes -{ - glUniform1i(colorOnUniform, yes); -} - -- (void)setNumTiles:(float)numTiles -{ - - _numTiles = numTiles; - [self setFloat:_numTiles forUniformName:@"numTiles"]; -} - -- (void)setInputTileSize:(CGSize)inputTileSize -{ - if (inputTileSize.width > 1.0) { - _inputTileSize.width = 1.0; - } - if (inputTileSize.height > 1.0) { - _inputTileSize.height = 1.0; - } - if (inputTileSize.width < 0.0) { - _inputTileSize.width = 0.0; - } - if (inputTileSize.height < 0.0) { - _inputTileSize.height = 0.0; - } - - - _inputTileSize = inputTileSize; - - [self setSize:_inputTileSize forUniform:inputTileSizeUniform program:filterProgram]; -} - --(void)setDisplayTileSize:(CGSize)displayTileSize -{ - if (displayTileSize.width > 1.0) { - _displayTileSize.width = 1.0; - } - if (displayTileSize.height > 1.0) { - _displayTileSize.height = 1.0; - } - if (displayTileSize.width < 0.0) { - _displayTileSize.width = 0.0; - } - if (displayTileSize.height < 0.0) { - _displayTileSize.height = 0.0; - } - - - _displayTileSize = displayTileSize; - - [self setSize:_displayTileSize forUniform:displayTileSizeUniform program:filterProgram]; -} - --(void)setTileSet:(NSString *)tileSet -{ -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - UIImage *img = [UIImage imageNamed:tileSet]; -#else - NSImage *img = [NSImage imageNamed:tileSet]; -#endif - pic = [[GPUImagePicture alloc] initWithImage:img smoothlyScaleOutput:YES]; - [pic addTarget:self]; - [pic processImage]; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageMotionBlurFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageMotionBlurFilter.h deleted file mode 100644 index dcca712..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageMotionBlurFilter.h +++ /dev/null @@ -1,13 +0,0 @@ -#import "GPUImageFilter.h" - -@interface GPUImageMotionBlurFilter : GPUImageFilter - -/** A multiplier for the blur size, ranging from 0.0 on up, with a default of 1.0 - */ -@property (readwrite, nonatomic) CGFloat blurSize; - -/** The angular direction of the blur, in degrees. 0 degrees by default - */ -@property (readwrite, nonatomic) CGFloat blurAngle; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageMotionBlurFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageMotionBlurFilter.m deleted file mode 100644 index 5a2c20b..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageMotionBlurFilter.m +++ /dev/null @@ -1,209 +0,0 @@ -#import "GPUImageMotionBlurFilter.h" - -// Override vertex shader to remove dependent texture reads -NSString *const kGPUImageTiltedTexelSamplingVertexShaderString = SHADER_STRING -( - attribute vec4 position; - attribute vec4 inputTextureCoordinate; - - uniform vec2 directionalTexelStep; - - varying vec2 textureCoordinate; - varying vec2 oneStepBackTextureCoordinate; - varying vec2 twoStepsBackTextureCoordinate; - varying vec2 threeStepsBackTextureCoordinate; - varying vec2 fourStepsBackTextureCoordinate; - varying vec2 oneStepForwardTextureCoordinate; - varying vec2 twoStepsForwardTextureCoordinate; - varying vec2 threeStepsForwardTextureCoordinate; - varying vec2 fourStepsForwardTextureCoordinate; - - void main() - { - gl_Position = position; - - textureCoordinate = inputTextureCoordinate.xy; - oneStepBackTextureCoordinate = inputTextureCoordinate.xy - directionalTexelStep; - twoStepsBackTextureCoordinate = inputTextureCoordinate.xy - 2.0 * directionalTexelStep; - threeStepsBackTextureCoordinate = inputTextureCoordinate.xy - 3.0 * directionalTexelStep; - fourStepsBackTextureCoordinate = inputTextureCoordinate.xy - 4.0 * directionalTexelStep; - oneStepForwardTextureCoordinate = inputTextureCoordinate.xy + directionalTexelStep; - twoStepsForwardTextureCoordinate = inputTextureCoordinate.xy + 2.0 * directionalTexelStep; - threeStepsForwardTextureCoordinate = inputTextureCoordinate.xy + 3.0 * directionalTexelStep; - fourStepsForwardTextureCoordinate = inputTextureCoordinate.xy + 4.0 * directionalTexelStep; - } -); - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageMotionBlurFragmentShaderString = SHADER_STRING -( - precision highp float; - - uniform sampler2D inputImageTexture; - - varying vec2 textureCoordinate; - varying vec2 oneStepBackTextureCoordinate; - varying vec2 twoStepsBackTextureCoordinate; - varying vec2 threeStepsBackTextureCoordinate; - varying vec2 fourStepsBackTextureCoordinate; - varying vec2 oneStepForwardTextureCoordinate; - varying vec2 twoStepsForwardTextureCoordinate; - varying vec2 threeStepsForwardTextureCoordinate; - varying vec2 fourStepsForwardTextureCoordinate; - - void main() - { - // Box weights -// lowp vec4 fragmentColor = texture2D(inputImageTexture, textureCoordinate) * 0.1111111; -// fragmentColor += texture2D(inputImageTexture, oneStepBackTextureCoordinate) * 0.1111111; -// fragmentColor += texture2D(inputImageTexture, twoStepsBackTextureCoordinate) * 0.1111111; -// fragmentColor += texture2D(inputImageTexture, threeStepsBackTextureCoordinate) * 0.1111111; -// fragmentColor += texture2D(inputImageTexture, fourStepsBackTextureCoordinate) * 0.1111111; -// fragmentColor += texture2D(inputImageTexture, oneStepForwardTextureCoordinate) * 0.1111111; -// fragmentColor += texture2D(inputImageTexture, twoStepsForwardTextureCoordinate) * 0.1111111; -// fragmentColor += texture2D(inputImageTexture, threeStepsForwardTextureCoordinate) * 0.1111111; -// fragmentColor += texture2D(inputImageTexture, fourStepsForwardTextureCoordinate) * 0.1111111; - - lowp vec4 fragmentColor = texture2D(inputImageTexture, textureCoordinate) * 0.18; - fragmentColor += texture2D(inputImageTexture, oneStepBackTextureCoordinate) * 0.15; - fragmentColor += texture2D(inputImageTexture, twoStepsBackTextureCoordinate) * 0.12; - fragmentColor += texture2D(inputImageTexture, threeStepsBackTextureCoordinate) * 0.09; - fragmentColor += texture2D(inputImageTexture, fourStepsBackTextureCoordinate) * 0.05; - fragmentColor += texture2D(inputImageTexture, oneStepForwardTextureCoordinate) * 0.15; - fragmentColor += texture2D(inputImageTexture, twoStepsForwardTextureCoordinate) * 0.12; - fragmentColor += texture2D(inputImageTexture, threeStepsForwardTextureCoordinate) * 0.09; - fragmentColor += texture2D(inputImageTexture, fourStepsForwardTextureCoordinate) * 0.05; - - gl_FragColor = fragmentColor; - } -); -#else -NSString *const kGPUImageMotionBlurFragmentShaderString = SHADER_STRING -( - uniform sampler2D inputImageTexture; - - varying vec2 textureCoordinate; - varying vec2 oneStepBackTextureCoordinate; - varying vec2 twoStepsBackTextureCoordinate; - varying vec2 threeStepsBackTextureCoordinate; - varying vec2 fourStepsBackTextureCoordinate; - varying vec2 oneStepForwardTextureCoordinate; - varying vec2 twoStepsForwardTextureCoordinate; - varying vec2 threeStepsForwardTextureCoordinate; - varying vec2 fourStepsForwardTextureCoordinate; - - void main() - { - // Box weights - // vec4 fragmentColor = texture2D(inputImageTexture, textureCoordinate) * 0.1111111; - // fragmentColor += texture2D(inputImageTexture, oneStepBackTextureCoordinate) * 0.1111111; - // fragmentColor += texture2D(inputImageTexture, twoStepsBackTextureCoordinate) * 0.1111111; - // fragmentColor += texture2D(inputImageTexture, threeStepsBackTextureCoordinate) * 0.1111111; - // fragmentColor += texture2D(inputImageTexture, fourStepsBackTextureCoordinate) * 0.1111111; - // fragmentColor += texture2D(inputImageTexture, oneStepForwardTextureCoordinate) * 0.1111111; - // fragmentColor += texture2D(inputImageTexture, twoStepsForwardTextureCoordinate) * 0.1111111; - // fragmentColor += texture2D(inputImageTexture, threeStepsForwardTextureCoordinate) * 0.1111111; - // fragmentColor += texture2D(inputImageTexture, fourStepsForwardTextureCoordinate) * 0.1111111; - - vec4 fragmentColor = texture2D(inputImageTexture, textureCoordinate) * 0.18; - fragmentColor += texture2D(inputImageTexture, oneStepBackTextureCoordinate) * 0.15; - fragmentColor += texture2D(inputImageTexture, twoStepsBackTextureCoordinate) * 0.12; - fragmentColor += texture2D(inputImageTexture, threeStepsBackTextureCoordinate) * 0.09; - fragmentColor += texture2D(inputImageTexture, fourStepsBackTextureCoordinate) * 0.05; - fragmentColor += texture2D(inputImageTexture, oneStepForwardTextureCoordinate) * 0.15; - fragmentColor += texture2D(inputImageTexture, twoStepsForwardTextureCoordinate) * 0.12; - fragmentColor += texture2D(inputImageTexture, threeStepsForwardTextureCoordinate) * 0.09; - fragmentColor += texture2D(inputImageTexture, fourStepsForwardTextureCoordinate) * 0.05; - - gl_FragColor = fragmentColor; - } -); -#endif - -@interface GPUImageMotionBlurFilter() -{ - GLint directionalTexelStepUniform; -} - -- (void)recalculateTexelOffsets; - -@end - -@implementation GPUImageMotionBlurFilter - -@synthesize blurSize = _blurSize; -@synthesize blurAngle = _blurAngle; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithVertexShaderFromString:kGPUImageTiltedTexelSamplingVertexShaderString fragmentShaderFromString:kGPUImageMotionBlurFragmentShaderString])) - { - return nil; - } - - directionalTexelStepUniform = [filterProgram uniformIndex:@"directionalTexelStep"]; - - self.blurSize = 2.5; - self.blurAngle = 0.0; - - return self; -} - -- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex; -{ - CGSize oldInputSize = inputTextureSize; - [super setInputSize:newSize atIndex:textureIndex]; - - if (!CGSizeEqualToSize(oldInputSize, inputTextureSize) && (!CGSizeEqualToSize(newSize, CGSizeZero)) ) - { - [self recalculateTexelOffsets]; - } -} - -- (void)recalculateTexelOffsets; -{ - CGFloat aspectRatio = 1.0; - CGPoint texelOffsets; - - if (GPUImageRotationSwapsWidthAndHeight(inputRotation)) - { - aspectRatio = (inputTextureSize.width / inputTextureSize.height); - texelOffsets.x = _blurSize * sin(_blurAngle * M_PI / 180.0) * aspectRatio / inputTextureSize.height; - texelOffsets.y = _blurSize * cos(_blurAngle * M_PI / 180.0) / inputTextureSize.height; - } - else - { - aspectRatio = (inputTextureSize.height / inputTextureSize.width); - texelOffsets.x = _blurSize * cos(_blurAngle * M_PI / 180.0) * aspectRatio / inputTextureSize.width; - texelOffsets.y = _blurSize * sin(_blurAngle * M_PI / 180.0) / inputTextureSize.width; - } - - [self setPoint:texelOffsets forUniform:directionalTexelStepUniform program:filterProgram]; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; -{ - [super setInputRotation:newInputRotation atIndex:textureIndex]; - [self recalculateTexelOffsets]; -} - -- (void)setBlurAngle:(CGFloat)newValue; -{ - _blurAngle = newValue; - [self recalculateTexelOffsets]; -} - -- (void)setBlurSize:(CGFloat)newValue; -{ - _blurSize = newValue; - [self recalculateTexelOffsets]; -} - - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageMotionDetector.h b/Example/Pods/GPUImage/framework/Source/GPUImageMotionDetector.h deleted file mode 100644 index 0132914..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageMotionDetector.h +++ /dev/null @@ -1,18 +0,0 @@ -#import "GPUImageFilterGroup.h" -#import "GPUImageLowPassFilter.h" -#import "GPUImageAverageColor.h" - -@interface GPUImageMotionDetector : GPUImageFilterGroup -{ - GPUImageLowPassFilter *lowPassFilter; - GPUImageTwoInputFilter *frameComparisonFilter; - GPUImageAverageColor *averageColor; -} - -// This controls the low pass filter strength used to compare the current frame with previous ones to detect motion. This ranges from 0.0 to 1.0, with a default of 0.5. -@property(readwrite, nonatomic) CGFloat lowPassFilterStrength; - -// For every frame, this will feed back the calculated centroid of the motion, as well as a relative intensity. -@property(nonatomic, copy) void(^motionDetectionBlock)(CGPoint motionCentroid, CGFloat motionIntensity, CMTime frameTime); - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageMotionDetector.m b/Example/Pods/GPUImage/framework/Source/GPUImageMotionDetector.m deleted file mode 100644 index 0e204ad..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageMotionDetector.m +++ /dev/null @@ -1,112 +0,0 @@ -#import "GPUImageMotionDetector.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageMotionComparisonFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - varying highp vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - uniform highp float intensity; - - void main() - { - lowp vec3 currentImageColor = texture2D(inputImageTexture, textureCoordinate).rgb; - lowp vec3 lowPassImageColor = texture2D(inputImageTexture2, textureCoordinate2).rgb; - - mediump float colorDistance = distance(currentImageColor, lowPassImageColor); // * 0.57735 - lowp float movementThreshold = step(0.2, colorDistance); - - gl_FragColor = movementThreshold * vec4(textureCoordinate2.x, textureCoordinate2.y, 1.0, 1.0); - } -); -#else -NSString *const kGPUImageMotionComparisonFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - uniform float intensity; - - void main() - { - vec3 currentImageColor = texture2D(inputImageTexture, textureCoordinate).rgb; - vec3 lowPassImageColor = texture2D(inputImageTexture2, textureCoordinate2).rgb; - - float colorDistance = distance(currentImageColor, lowPassImageColor); // * 0.57735 - float movementThreshold = step(0.2, colorDistance); - - gl_FragColor = movementThreshold * vec4(textureCoordinate2.x, textureCoordinate2.y, 1.0, 1.0); - } -); -#endif - - -@implementation GPUImageMotionDetector - -@synthesize lowPassFilterStrength, motionDetectionBlock; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super init])) - { - return nil; - } - - // Start with a low pass filter to define the component to be removed - lowPassFilter = [[GPUImageLowPassFilter alloc] init]; - [self addFilter:lowPassFilter]; - - // Take the difference of the current frame from the low pass filtered result to get the high pass - frameComparisonFilter = [[GPUImageTwoInputFilter alloc] initWithFragmentShaderFromString:kGPUImageMotionComparisonFragmentShaderString]; - [self addFilter:frameComparisonFilter]; - - // Texture location 0 needs to be the original image for the difference blend - [lowPassFilter addTarget:frameComparisonFilter atTextureLocation:1]; - - // End with the average color for the scene to determine the centroid - averageColor = [[GPUImageAverageColor alloc] init]; - - __unsafe_unretained GPUImageMotionDetector *weakSelf = self; - - [averageColor setColorAverageProcessingFinishedBlock:^(CGFloat redComponent, CGFloat greenComponent, CGFloat blueComponent, CGFloat alphaComponent, CMTime frameTime) { - if (weakSelf.motionDetectionBlock != NULL) - { - weakSelf.motionDetectionBlock(CGPointMake(redComponent / alphaComponent, greenComponent / alphaComponent), alphaComponent, frameTime); - } -// NSLog(@"Average X: %f, Y: %f total: %f", redComponent / alphaComponent, greenComponent / alphaComponent, alphaComponent); - }]; - - [frameComparisonFilter addTarget:averageColor]; - - self.initialFilters = [NSArray arrayWithObjects:lowPassFilter, frameComparisonFilter, nil]; - self.terminalFilter = frameComparisonFilter; - - self.lowPassFilterStrength = 0.5; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setLowPassFilterStrength:(CGFloat)newValue; -{ - lowPassFilter.filterStrength = newValue; -} - -- (CGFloat)lowPassFilterStrength; -{ - return lowPassFilter.filterStrength; -} - - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageMovie.h b/Example/Pods/GPUImage/framework/Source/GPUImageMovie.h deleted file mode 100755 index f61e56e..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageMovie.h +++ /dev/null @@ -1,61 +0,0 @@ -#import -#import -#import "GPUImageContext.h" -#import "GPUImageOutput.h" - -/** Protocol for getting Movie played callback. - */ -@protocol GPUImageMovieDelegate - -- (void)didCompletePlayingMovie; -@end - -/** Source object for filtering movies - */ -@interface GPUImageMovie : GPUImageOutput - -@property (readwrite, retain) AVAsset *asset; -@property (readwrite, retain) AVPlayerItem *playerItem; -@property(readwrite, retain) NSURL *url; - -/** This enables the benchmarking mode, which logs out instantaneous and average frame times to the console - */ -@property(readwrite, nonatomic) BOOL runBenchmark; - -/** This determines whether to play back a movie as fast as the frames can be processed, or if the original speed of the movie should be respected. Defaults to NO. - */ -@property(readwrite, nonatomic) BOOL playAtActualSpeed; - -/** This determines whether the video should repeat (loop) at the end and restart from the beginning. Defaults to NO. - */ -@property(readwrite, nonatomic) BOOL shouldRepeat; - -/** This specifies the progress of the process on a scale from 0 to 1.0. A value of 0 means the process has not yet begun, A value of 1.0 means the conversaion is complete. - This property is not key-value observable. - */ -@property(readonly, nonatomic) float progress; - -/** This is used to send the delete Movie did complete playing alert - */ -@property (readwrite, nonatomic, assign) id delegate; - -@property (readonly, nonatomic) AVAssetReader *assetReader; -@property (readonly, nonatomic) BOOL audioEncodingIsFinished; -@property (readonly, nonatomic) BOOL videoEncodingIsFinished; - -/// @name Initialization and teardown -- (id)initWithAsset:(AVAsset *)asset; -- (id)initWithPlayerItem:(AVPlayerItem *)playerItem; -- (id)initWithURL:(NSURL *)url; -- (void)yuvConversionSetup; - -/// @name Movie processing -- (void)enableSynchronizedEncodingUsingMovieWriter:(GPUImageMovieWriter *)movieWriter; -- (BOOL)readNextVideoFrameFromOutput:(AVAssetReaderOutput *)readerVideoTrackOutput; -- (BOOL)readNextAudioSampleFromOutput:(AVAssetReaderOutput *)readerAudioTrackOutput; -- (void)startProcessing; -- (void)endProcessing; -- (void)cancelProcessing; -- (void)processMovieFrame:(CMSampleBufferRef)movieSampleBuffer; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageMovie.m b/Example/Pods/GPUImage/framework/Source/GPUImageMovie.m deleted file mode 100755 index d096b03..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageMovie.m +++ /dev/null @@ -1,761 +0,0 @@ -#import "GPUImageMovie.h" -#import "GPUImageMovieWriter.h" -#import "GPUImageFilter.h" -#import "GPUImageVideoCamera.h" - -@interface GPUImageMovie () -{ - BOOL audioEncodingIsFinished, videoEncodingIsFinished; - GPUImageMovieWriter *synchronizedMovieWriter; - AVAssetReader *reader; - AVPlayerItemVideoOutput *playerItemOutput; - CADisplayLink *displayLink; - CMTime previousFrameTime, processingFrameTime; - CFAbsoluteTime previousActualFrameTime; - BOOL keepLooping; - - GLuint luminanceTexture, chrominanceTexture; - - GLProgram *yuvConversionProgram; - GLint yuvConversionPositionAttribute, yuvConversionTextureCoordinateAttribute; - GLint yuvConversionLuminanceTextureUniform, yuvConversionChrominanceTextureUniform; - GLint yuvConversionMatrixUniform; - const GLfloat *_preferredConversion; - - BOOL isFullYUVRange; - - int imageBufferWidth, imageBufferHeight; -} - -- (void)processAsset; - -@end - -@implementation GPUImageMovie - -@synthesize url = _url; -@synthesize asset = _asset; -@synthesize runBenchmark = _runBenchmark; -@synthesize playAtActualSpeed = _playAtActualSpeed; -@synthesize delegate = _delegate; -@synthesize shouldRepeat = _shouldRepeat; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)initWithURL:(NSURL *)url; -{ - if (!(self = [super init])) - { - return nil; - } - - [self yuvConversionSetup]; - - self.url = url; - self.asset = nil; - - return self; -} - -- (id)initWithAsset:(AVAsset *)asset; -{ - if (!(self = [super init])) - { - return nil; - } - - [self yuvConversionSetup]; - - self.url = nil; - self.asset = asset; - - return self; -} - -- (id)initWithPlayerItem:(AVPlayerItem *)playerItem; -{ - if (!(self = [super init])) - { - return nil; - } - - [self yuvConversionSetup]; - - self.url = nil; - self.asset = nil; - self.playerItem = playerItem; - - return self; -} - -- (void)yuvConversionSetup; -{ - if ([GPUImageContext supportsFastTextureUpload]) - { - runSynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext useImageProcessingContext]; - - _preferredConversion = kColorConversion709; - isFullYUVRange = YES; - yuvConversionProgram = [[GPUImageContext sharedImageProcessingContext] programForVertexShaderString:kGPUImageVertexShaderString fragmentShaderString:kGPUImageYUVFullRangeConversionForLAFragmentShaderString]; - - if (!yuvConversionProgram.initialized) - { - [yuvConversionProgram addAttribute:@"position"]; - [yuvConversionProgram addAttribute:@"inputTextureCoordinate"]; - - if (![yuvConversionProgram link]) - { - NSString *progLog = [yuvConversionProgram programLog]; - NSLog(@"Program link log: %@", progLog); - NSString *fragLog = [yuvConversionProgram fragmentShaderLog]; - NSLog(@"Fragment shader compile log: %@", fragLog); - NSString *vertLog = [yuvConversionProgram vertexShaderLog]; - NSLog(@"Vertex shader compile log: %@", vertLog); - yuvConversionProgram = nil; - NSAssert(NO, @"Filter shader link failed"); - } - } - - yuvConversionPositionAttribute = [yuvConversionProgram attributeIndex:@"position"]; - yuvConversionTextureCoordinateAttribute = [yuvConversionProgram attributeIndex:@"inputTextureCoordinate"]; - yuvConversionLuminanceTextureUniform = [yuvConversionProgram uniformIndex:@"luminanceTexture"]; - yuvConversionChrominanceTextureUniform = [yuvConversionProgram uniformIndex:@"chrominanceTexture"]; - yuvConversionMatrixUniform = [yuvConversionProgram uniformIndex:@"colorConversionMatrix"]; - - [GPUImageContext setActiveShaderProgram:yuvConversionProgram]; - - glEnableVertexAttribArray(yuvConversionPositionAttribute); - glEnableVertexAttribArray(yuvConversionTextureCoordinateAttribute); - }); - } -} - -- (void)dealloc -{ - // Moved into endProcessing - //if (self.playerItem && (displayLink != nil)) - //{ - // [displayLink invalidate]; // remove from all run loops - // displayLink = nil; - //} -} - -#pragma mark - -#pragma mark Movie processing - -- (void)enableSynchronizedEncodingUsingMovieWriter:(GPUImageMovieWriter *)movieWriter; -{ - synchronizedMovieWriter = movieWriter; - movieWriter.encodingLiveVideo = NO; -} - -- (void)startProcessing -{ - if( self.playerItem ) { - [self processPlayerItem]; - return; - } - if(self.url == nil) - { - [self processAsset]; - return; - } - - if (_shouldRepeat) keepLooping = YES; - - previousFrameTime = kCMTimeZero; - previousActualFrameTime = CFAbsoluteTimeGetCurrent(); - - NSDictionary *inputOptions = [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:YES] forKey:AVURLAssetPreferPreciseDurationAndTimingKey]; - AVURLAsset *inputAsset = [[AVURLAsset alloc] initWithURL:self.url options:inputOptions]; - - GPUImageMovie __block *blockSelf = self; - - [inputAsset loadValuesAsynchronouslyForKeys:[NSArray arrayWithObject:@"tracks"] completionHandler: ^{ - dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ - NSError *error = nil; - AVKeyValueStatus tracksStatus = [inputAsset statusOfValueForKey:@"tracks" error:&error]; - if (tracksStatus != AVKeyValueStatusLoaded) - { - return; - } - blockSelf.asset = inputAsset; - [blockSelf processAsset]; - blockSelf = nil; - }); - }]; -} - -- (AVAssetReader*)createAssetReader -{ - NSError *error = nil; - AVAssetReader *assetReader = [AVAssetReader assetReaderWithAsset:self.asset error:&error]; - - NSMutableDictionary *outputSettings = [NSMutableDictionary dictionary]; - if ([GPUImageContext supportsFastTextureUpload]) { - [outputSettings setObject:@(kCVPixelFormatType_420YpCbCr8BiPlanarFullRange) forKey:(id)kCVPixelBufferPixelFormatTypeKey]; - isFullYUVRange = YES; - } - else { - [outputSettings setObject:@(kCVPixelFormatType_32BGRA) forKey:(id)kCVPixelBufferPixelFormatTypeKey]; - isFullYUVRange = NO; - } - - // Maybe set alwaysCopiesSampleData to NO on iOS 5.0 for faster video decoding - AVAssetReaderTrackOutput *readerVideoTrackOutput = [AVAssetReaderTrackOutput assetReaderTrackOutputWithTrack:[[self.asset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0] outputSettings:outputSettings]; - readerVideoTrackOutput.alwaysCopiesSampleData = NO; - [assetReader addOutput:readerVideoTrackOutput]; - - NSArray *audioTracks = [self.asset tracksWithMediaType:AVMediaTypeAudio]; - BOOL shouldRecordAudioTrack = (([audioTracks count] > 0) && (self.audioEncodingTarget != nil) ); - AVAssetReaderTrackOutput *readerAudioTrackOutput = nil; - - if (shouldRecordAudioTrack) - { - [self.audioEncodingTarget setShouldInvalidateAudioSampleWhenDone:YES]; - - // This might need to be extended to handle movies with more than one audio track - AVAssetTrack* audioTrack = [audioTracks objectAtIndex:0]; - readerAudioTrackOutput = [AVAssetReaderTrackOutput assetReaderTrackOutputWithTrack:audioTrack outputSettings:nil]; - readerAudioTrackOutput.alwaysCopiesSampleData = NO; - [assetReader addOutput:readerAudioTrackOutput]; - } - - return assetReader; -} - -- (void)processAsset -{ - reader = [self createAssetReader]; - - AVAssetReaderOutput *readerVideoTrackOutput = nil; - AVAssetReaderOutput *readerAudioTrackOutput = nil; - - audioEncodingIsFinished = YES; - for( AVAssetReaderOutput *output in reader.outputs ) { - if( [output.mediaType isEqualToString:AVMediaTypeAudio] ) { - audioEncodingIsFinished = NO; - readerAudioTrackOutput = output; - } - else if( [output.mediaType isEqualToString:AVMediaTypeVideo] ) { - readerVideoTrackOutput = output; - } - } - - if ([reader startReading] == NO) - { - NSLog(@"Error reading from file at URL: %@", self.url); - return; - } - - __unsafe_unretained GPUImageMovie *weakSelf = self; - - if (synchronizedMovieWriter != nil) - { - [synchronizedMovieWriter setVideoInputReadyCallback:^{ - return [weakSelf readNextVideoFrameFromOutput:readerVideoTrackOutput]; - }]; - - [synchronizedMovieWriter setAudioInputReadyCallback:^{ - return [weakSelf readNextAudioSampleFromOutput:readerAudioTrackOutput]; - }]; - - [synchronizedMovieWriter enableSynchronizationCallbacks]; - } - else - { - while (reader.status == AVAssetReaderStatusReading && (!_shouldRepeat || keepLooping)) - { - [weakSelf readNextVideoFrameFromOutput:readerVideoTrackOutput]; - - if ( (readerAudioTrackOutput) && (!audioEncodingIsFinished) ) - { - [weakSelf readNextAudioSampleFromOutput:readerAudioTrackOutput]; - } - - } - - if (reader.status == AVAssetReaderStatusCompleted) { - - [reader cancelReading]; - - if (keepLooping) { - reader = nil; - dispatch_async(dispatch_get_main_queue(), ^{ - [self startProcessing]; - }); - } else { - [weakSelf endProcessing]; - } - - } - } -} - -- (void)processPlayerItem -{ - runSynchronouslyOnVideoProcessingQueue(^{ - displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(displayLinkCallback:)]; - [displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes]; - [displayLink setPaused:YES]; - - dispatch_queue_t videoProcessingQueue = [GPUImageContext sharedContextQueue]; - NSMutableDictionary *pixBuffAttributes = [NSMutableDictionary dictionary]; - if ([GPUImageContext supportsFastTextureUpload]) { - [pixBuffAttributes setObject:@(kCVPixelFormatType_420YpCbCr8BiPlanarFullRange) forKey:(id)kCVPixelBufferPixelFormatTypeKey]; - } - else { - [pixBuffAttributes setObject:@(kCVPixelFormatType_32BGRA) forKey:(id)kCVPixelBufferPixelFormatTypeKey]; - } - playerItemOutput = [[AVPlayerItemVideoOutput alloc] initWithPixelBufferAttributes:pixBuffAttributes]; - [playerItemOutput setDelegate:self queue:videoProcessingQueue]; - - [_playerItem addOutput:playerItemOutput]; - [playerItemOutput requestNotificationOfMediaDataChangeWithAdvanceInterval:0.1]; - }); -} - -- (void)outputMediaDataWillChange:(AVPlayerItemOutput *)sender -{ - // Restart display link. - [displayLink setPaused:NO]; -} - -- (void)displayLinkCallback:(CADisplayLink *)sender -{ - /* - The callback gets called once every Vsync. - Using the display link's timestamp and duration we can compute the next time the screen will be refreshed, and copy the pixel buffer for that time - This pixel buffer can then be processed and later rendered on screen. - */ - // Calculate the nextVsync time which is when the screen will be refreshed next. - CFTimeInterval nextVSync = ([sender timestamp] + [sender duration]); - - CMTime outputItemTime = [playerItemOutput itemTimeForHostTime:nextVSync]; - - if ([playerItemOutput hasNewPixelBufferForItemTime:outputItemTime]) { - __unsafe_unretained GPUImageMovie *weakSelf = self; - CVPixelBufferRef pixelBuffer = [playerItemOutput copyPixelBufferForItemTime:outputItemTime itemTimeForDisplay:NULL]; - if( pixelBuffer ) - runSynchronouslyOnVideoProcessingQueue(^{ - [weakSelf processMovieFrame:pixelBuffer withSampleTime:outputItemTime]; - CFRelease(pixelBuffer); - }); - } -} - -- (BOOL)readNextVideoFrameFromOutput:(AVAssetReaderOutput *)readerVideoTrackOutput; -{ - if (reader.status == AVAssetReaderStatusReading && ! videoEncodingIsFinished) - { - CMSampleBufferRef sampleBufferRef = [readerVideoTrackOutput copyNextSampleBuffer]; - if (sampleBufferRef) - { - //NSLog(@"read a video frame: %@", CFBridgingRelease(CMTimeCopyDescription(kCFAllocatorDefault, CMSampleBufferGetOutputPresentationTimeStamp(sampleBufferRef)))); - if (_playAtActualSpeed) - { - // Do this outside of the video processing queue to not slow that down while waiting - CMTime currentSampleTime = CMSampleBufferGetOutputPresentationTimeStamp(sampleBufferRef); - CMTime differenceFromLastFrame = CMTimeSubtract(currentSampleTime, previousFrameTime); - CFAbsoluteTime currentActualTime = CFAbsoluteTimeGetCurrent(); - - CGFloat frameTimeDifference = CMTimeGetSeconds(differenceFromLastFrame); - CGFloat actualTimeDifference = currentActualTime - previousActualFrameTime; - - if (frameTimeDifference > actualTimeDifference) - { - usleep(1000000.0 * (frameTimeDifference - actualTimeDifference)); - } - - previousFrameTime = currentSampleTime; - previousActualFrameTime = CFAbsoluteTimeGetCurrent(); - } - - __unsafe_unretained GPUImageMovie *weakSelf = self; - runSynchronouslyOnVideoProcessingQueue(^{ - [weakSelf processMovieFrame:sampleBufferRef]; - CMSampleBufferInvalidate(sampleBufferRef); - CFRelease(sampleBufferRef); - }); - - return YES; - } - else - { - if (!keepLooping) { - videoEncodingIsFinished = YES; - if( videoEncodingIsFinished && audioEncodingIsFinished ) - [self endProcessing]; - } - } - } - else if (synchronizedMovieWriter != nil) - { - if (reader.status == AVAssetReaderStatusCompleted) - { - [self endProcessing]; - } - } - return NO; -} - -- (BOOL)readNextAudioSampleFromOutput:(AVAssetReaderOutput *)readerAudioTrackOutput; -{ - if (reader.status == AVAssetReaderStatusReading && ! audioEncodingIsFinished) - { - CMSampleBufferRef audioSampleBufferRef = [readerAudioTrackOutput copyNextSampleBuffer]; - if (audioSampleBufferRef) - { - //NSLog(@"read an audio frame: %@", CFBridgingRelease(CMTimeCopyDescription(kCFAllocatorDefault, CMSampleBufferGetOutputPresentationTimeStamp(audioSampleBufferRef)))); - [self.audioEncodingTarget processAudioBuffer:audioSampleBufferRef]; - CFRelease(audioSampleBufferRef); - return YES; - } - else - { - if (!keepLooping) { - audioEncodingIsFinished = YES; - if( videoEncodingIsFinished && audioEncodingIsFinished ) - [self endProcessing]; - } - } - } - else if (synchronizedMovieWriter != nil) - { - if (reader.status == AVAssetReaderStatusCompleted || reader.status == AVAssetReaderStatusFailed || - reader.status == AVAssetReaderStatusCancelled) - { - [self endProcessing]; - } - } - return NO; -} - -- (void)processMovieFrame:(CMSampleBufferRef)movieSampleBuffer; -{ -// CMTimeGetSeconds -// CMTimeSubtract - - CMTime currentSampleTime = CMSampleBufferGetOutputPresentationTimeStamp(movieSampleBuffer); - CVImageBufferRef movieFrame = CMSampleBufferGetImageBuffer(movieSampleBuffer); - - processingFrameTime = currentSampleTime; - [self processMovieFrame:movieFrame withSampleTime:currentSampleTime]; -} - -- (float)progress -{ - if ( AVAssetReaderStatusReading == reader.status ) - { - float current = processingFrameTime.value * 1.0f / processingFrameTime.timescale; - float duration = self.asset.duration.value * 1.0f / self.asset.duration.timescale; - return current / duration; - } - else if ( AVAssetReaderStatusCompleted == reader.status ) - { - return 1.f; - } - else - { - return 0.f; - } -} - -- (void)processMovieFrame:(CVPixelBufferRef)movieFrame withSampleTime:(CMTime)currentSampleTime -{ - int bufferHeight = (int) CVPixelBufferGetHeight(movieFrame); - int bufferWidth = (int) CVPixelBufferGetWidth(movieFrame); - - CFTypeRef colorAttachments = CVBufferGetAttachment(movieFrame, kCVImageBufferYCbCrMatrixKey, NULL); - if (colorAttachments != NULL) - { - if(CFStringCompare(colorAttachments, kCVImageBufferYCbCrMatrix_ITU_R_601_4, 0) == kCFCompareEqualTo) - { - if (isFullYUVRange) - { - _preferredConversion = kColorConversion601FullRange; - } - else - { - _preferredConversion = kColorConversion601; - } - } - else - { - _preferredConversion = kColorConversion709; - } - } - else - { - if (isFullYUVRange) - { - _preferredConversion = kColorConversion601FullRange; - } - else - { - _preferredConversion = kColorConversion601; - } - - } - - CFAbsoluteTime startTime = CFAbsoluteTimeGetCurrent(); - - // Fix issue 1580 - [GPUImageContext useImageProcessingContext]; - - if ([GPUImageContext supportsFastTextureUpload]) - { - CVOpenGLESTextureRef luminanceTextureRef = NULL; - CVOpenGLESTextureRef chrominanceTextureRef = NULL; - - // if (captureAsYUV && [GPUImageContext deviceSupportsRedTextures]) - if (CVPixelBufferGetPlaneCount(movieFrame) > 0) // Check for YUV planar inputs to do RGB conversion - { - - if ( (imageBufferWidth != bufferWidth) && (imageBufferHeight != bufferHeight) ) - { - imageBufferWidth = bufferWidth; - imageBufferHeight = bufferHeight; - } - - CVReturn err; - // Y-plane - glActiveTexture(GL_TEXTURE4); - if ([GPUImageContext deviceSupportsRedTextures]) - { - err = CVOpenGLESTextureCacheCreateTextureFromImage(kCFAllocatorDefault, [[GPUImageContext sharedImageProcessingContext] coreVideoTextureCache], movieFrame, NULL, GL_TEXTURE_2D, GL_LUMINANCE, bufferWidth, bufferHeight, GL_LUMINANCE, GL_UNSIGNED_BYTE, 0, &luminanceTextureRef); - } - else - { - err = CVOpenGLESTextureCacheCreateTextureFromImage(kCFAllocatorDefault, [[GPUImageContext sharedImageProcessingContext] coreVideoTextureCache], movieFrame, NULL, GL_TEXTURE_2D, GL_LUMINANCE, bufferWidth, bufferHeight, GL_LUMINANCE, GL_UNSIGNED_BYTE, 0, &luminanceTextureRef); - } - if (err) - { - NSLog(@"Error at CVOpenGLESTextureCacheCreateTextureFromImage %d", err); - } - - luminanceTexture = CVOpenGLESTextureGetName(luminanceTextureRef); - glBindTexture(GL_TEXTURE_2D, luminanceTexture); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - - // UV-plane - glActiveTexture(GL_TEXTURE5); - if ([GPUImageContext deviceSupportsRedTextures]) - { - err = CVOpenGLESTextureCacheCreateTextureFromImage(kCFAllocatorDefault, [[GPUImageContext sharedImageProcessingContext] coreVideoTextureCache], movieFrame, NULL, GL_TEXTURE_2D, GL_LUMINANCE_ALPHA, bufferWidth/2, bufferHeight/2, GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, 1, &chrominanceTextureRef); - } - else - { - err = CVOpenGLESTextureCacheCreateTextureFromImage(kCFAllocatorDefault, [[GPUImageContext sharedImageProcessingContext] coreVideoTextureCache], movieFrame, NULL, GL_TEXTURE_2D, GL_LUMINANCE_ALPHA, bufferWidth/2, bufferHeight/2, GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, 1, &chrominanceTextureRef); - } - if (err) - { - NSLog(@"Error at CVOpenGLESTextureCacheCreateTextureFromImage %d", err); - } - - chrominanceTexture = CVOpenGLESTextureGetName(chrominanceTextureRef); - glBindTexture(GL_TEXTURE_2D, chrominanceTexture); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - -// if (!allTargetsWantMonochromeData) -// { - [self convertYUVToRGBOutput]; -// } - - for (id currentTarget in targets) - { - NSInteger indexOfObject = [targets indexOfObject:currentTarget]; - NSInteger targetTextureIndex = [[targetTextureIndices objectAtIndex:indexOfObject] integerValue]; - [currentTarget setInputSize:CGSizeMake(bufferWidth, bufferHeight) atIndex:targetTextureIndex]; - [currentTarget setInputFramebuffer:outputFramebuffer atIndex:targetTextureIndex]; - } - - [outputFramebuffer unlock]; - - for (id currentTarget in targets) - { - NSInteger indexOfObject = [targets indexOfObject:currentTarget]; - NSInteger targetTextureIndex = [[targetTextureIndices objectAtIndex:indexOfObject] integerValue]; - [currentTarget newFrameReadyAtTime:currentSampleTime atIndex:targetTextureIndex]; - } - - CVPixelBufferUnlockBaseAddress(movieFrame, 0); - CFRelease(luminanceTextureRef); - CFRelease(chrominanceTextureRef); - } - else - { - // TODO: Mesh this with the new framebuffer cache -// CVPixelBufferLockBaseAddress(movieFrame, 0); -// -// CVReturn err = CVOpenGLESTextureCacheCreateTextureFromImage(kCFAllocatorDefault, coreVideoTextureCache, movieFrame, NULL, GL_TEXTURE_2D, GL_RGBA, bufferWidth, bufferHeight, GL_BGRA, GL_UNSIGNED_BYTE, 0, &texture); -// -// if (!texture || err) { -// NSLog(@"Movie CVOpenGLESTextureCacheCreateTextureFromImage failed (error: %d)", err); -// NSAssert(NO, @"Camera failure"); -// return; -// } -// -// outputTexture = CVOpenGLESTextureGetName(texture); -// // glBindTexture(CVOpenGLESTextureGetTarget(texture), outputTexture); -// glBindTexture(GL_TEXTURE_2D, outputTexture); -// glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); -// glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); -// glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); -// glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); -// -// for (id currentTarget in targets) -// { -// NSInteger indexOfObject = [targets indexOfObject:currentTarget]; -// NSInteger targetTextureIndex = [[targetTextureIndices objectAtIndex:indexOfObject] integerValue]; -// -// [currentTarget setInputSize:CGSizeMake(bufferWidth, bufferHeight) atIndex:targetTextureIndex]; -// [currentTarget setInputTexture:outputTexture atIndex:targetTextureIndex]; -// -// [currentTarget newFrameReadyAtTime:currentSampleTime atIndex:targetTextureIndex]; -// } -// -// CVPixelBufferUnlockBaseAddress(movieFrame, 0); -// CVOpenGLESTextureCacheFlush(coreVideoTextureCache, 0); -// CFRelease(texture); -// -// outputTexture = 0; - } - } - else - { - // Upload to texture - CVPixelBufferLockBaseAddress(movieFrame, 0); - - outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:CGSizeMake(bufferWidth, bufferHeight) textureOptions:self.outputTextureOptions onlyTexture:YES]; - - glBindTexture(GL_TEXTURE_2D, [outputFramebuffer texture]); - // Using BGRA extension to pull in video frame data directly - glTexImage2D(GL_TEXTURE_2D, - 0, - self.outputTextureOptions.internalFormat, - bufferWidth, - bufferHeight, - 0, - self.outputTextureOptions.format, - self.outputTextureOptions.type, - CVPixelBufferGetBaseAddress(movieFrame)); - - for (id currentTarget in targets) - { - NSInteger indexOfObject = [targets indexOfObject:currentTarget]; - NSInteger targetTextureIndex = [[targetTextureIndices objectAtIndex:indexOfObject] integerValue]; - [currentTarget setInputSize:CGSizeMake(bufferWidth, bufferHeight) atIndex:targetTextureIndex]; - [currentTarget setInputFramebuffer:outputFramebuffer atIndex:targetTextureIndex]; - } - - [outputFramebuffer unlock]; - - for (id currentTarget in targets) - { - NSInteger indexOfObject = [targets indexOfObject:currentTarget]; - NSInteger targetTextureIndex = [[targetTextureIndices objectAtIndex:indexOfObject] integerValue]; - [currentTarget newFrameReadyAtTime:currentSampleTime atIndex:targetTextureIndex]; - } - CVPixelBufferUnlockBaseAddress(movieFrame, 0); - } - - if (_runBenchmark) - { - CFAbsoluteTime currentFrameTime = (CFAbsoluteTimeGetCurrent() - startTime); - NSLog(@"Current frame time : %f ms", 1000.0 * currentFrameTime); - } -} - -- (void)endProcessing; -{ - keepLooping = NO; - [displayLink setPaused:YES]; - - for (id currentTarget in targets) - { - [currentTarget endProcessing]; - } - - if (synchronizedMovieWriter != nil) - { - [synchronizedMovieWriter setVideoInputReadyCallback:^{return NO;}]; - [synchronizedMovieWriter setAudioInputReadyCallback:^{return NO;}]; - } - - if (self.playerItem && (displayLink != nil)) - { - [displayLink invalidate]; // remove from all run loops - displayLink = nil; - } - - if ([self.delegate respondsToSelector:@selector(didCompletePlayingMovie)]) { - [self.delegate didCompletePlayingMovie]; - } - self.delegate = nil; -} - -- (void)cancelProcessing -{ - if (reader) { - [reader cancelReading]; - } - [self endProcessing]; -} - -- (void)convertYUVToRGBOutput; -{ - [GPUImageContext setActiveShaderProgram:yuvConversionProgram]; - outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:CGSizeMake(imageBufferWidth, imageBufferHeight) onlyTexture:NO]; - [outputFramebuffer activateFramebuffer]; - - glClearColor(0.0f, 0.0f, 0.0f, 1.0f); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - static const GLfloat squareVertices[] = { - -1.0f, -1.0f, - 1.0f, -1.0f, - -1.0f, 1.0f, - 1.0f, 1.0f, - }; - - static const GLfloat textureCoordinates[] = { - 0.0f, 0.0f, - 1.0f, 0.0f, - 0.0f, 1.0f, - 1.0f, 1.0f, - }; - - glActiveTexture(GL_TEXTURE4); - glBindTexture(GL_TEXTURE_2D, luminanceTexture); - glUniform1i(yuvConversionLuminanceTextureUniform, 4); - - glActiveTexture(GL_TEXTURE5); - glBindTexture(GL_TEXTURE_2D, chrominanceTexture); - glUniform1i(yuvConversionChrominanceTextureUniform, 5); - - glUniformMatrix3fv(yuvConversionMatrixUniform, 1, GL_FALSE, _preferredConversion); - - glVertexAttribPointer(yuvConversionPositionAttribute, 2, GL_FLOAT, 0, 0, squareVertices); - glVertexAttribPointer(yuvConversionTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, textureCoordinates); - - glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); -} - -- (AVAssetReader*)assetReader { - return reader; -} - -- (BOOL)audioEncodingIsFinished { - return audioEncodingIsFinished; -} - -- (BOOL)videoEncodingIsFinished { - return videoEncodingIsFinished; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageMovieComposition.h b/Example/Pods/GPUImage/framework/Source/GPUImageMovieComposition.h deleted file mode 100644 index 00e4381..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageMovieComposition.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// GPUImageMovieComposition.h -// Givit -// -// Created by Sean Meiners on 2013/01/25. -// -// - -#import "GPUImageMovie.h" - -@interface GPUImageMovieComposition : GPUImageMovie - -@property (readwrite, retain) AVComposition *compositon; -@property (readwrite, retain) AVVideoComposition *videoComposition; -@property (readwrite, retain) AVAudioMix *audioMix; - -- (id)initWithComposition:(AVComposition*)compositon - andVideoComposition:(AVVideoComposition*)videoComposition - andAudioMix:(AVAudioMix*)audioMix; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageMovieComposition.m b/Example/Pods/GPUImage/framework/Source/GPUImageMovieComposition.m deleted file mode 100644 index 6138fff..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageMovieComposition.m +++ /dev/null @@ -1,70 +0,0 @@ -// -// GPUImageMovieComposition.m -// Givit -// -// Created by Sean Meiners on 2013/01/25. -// -// - -#import "GPUImageMovieComposition.h" -#import "GPUImageMovieWriter.h" - -@implementation GPUImageMovieComposition - -@synthesize compositon = _compositon; -@synthesize videoComposition = _videoComposition; -@synthesize audioMix = _audioMix; - -- (id)initWithComposition:(AVComposition*)compositon - andVideoComposition:(AVVideoComposition*)videoComposition - andAudioMix:(AVAudioMix*)audioMix { - if (!(self = [super init])) - { - return nil; - } - - [self yuvConversionSetup]; - - self.compositon = compositon; - self.videoComposition = videoComposition; - self.audioMix = audioMix; - - return self; -} - -- (AVAssetReader*)createAssetReader - { - //NSLog(@"creating reader from composition: %@, video: %@, audio: %@ with duration: %@", _compositon, _videoComposition, _audioMix, CFBridgingRelease(CMTimeCopyDescription(kCFAllocatorDefault, _compositon.duration))); - - NSError *error = nil; - AVAssetReader *assetReader = [AVAssetReader assetReaderWithAsset:self.compositon error:&error]; - - NSDictionary *outputSettings = @{(id)kCVPixelBufferPixelFormatTypeKey: @(kCVPixelFormatType_420YpCbCr8BiPlanarFullRange)}; - AVAssetReaderVideoCompositionOutput *readerVideoOutput = [AVAssetReaderVideoCompositionOutput assetReaderVideoCompositionOutputWithVideoTracks:[_compositon tracksWithMediaType:AVMediaTypeVideo] - videoSettings:outputSettings]; -#if ! TARGET_IPHONE_SIMULATOR - if( [_videoComposition isKindOfClass:[AVMutableVideoComposition class]] ) - [(AVMutableVideoComposition*)_videoComposition setRenderScale:1.0]; -#endif - readerVideoOutput.videoComposition = self.videoComposition; - readerVideoOutput.alwaysCopiesSampleData = NO; - [assetReader addOutput:readerVideoOutput]; - - NSArray *audioTracks = [_compositon tracksWithMediaType:AVMediaTypeAudio]; - BOOL shouldRecordAudioTrack = (([audioTracks count] > 0) && (self.audioEncodingTarget != nil) ); - AVAssetReaderAudioMixOutput *readerAudioOutput = nil; - - if (shouldRecordAudioTrack) - { - [self.audioEncodingTarget setShouldInvalidateAudioSampleWhenDone:YES]; - - readerAudioOutput = [AVAssetReaderAudioMixOutput assetReaderAudioMixOutputWithAudioTracks:audioTracks audioSettings:nil]; - readerAudioOutput.audioMix = self.audioMix; - readerAudioOutput.alwaysCopiesSampleData = NO; - [assetReader addOutput:readerAudioOutput]; - } - - return assetReader; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageMultiplyBlendFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageMultiplyBlendFilter.h deleted file mode 100755 index 5ebc28b..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageMultiplyBlendFilter.h +++ /dev/null @@ -1,7 +0,0 @@ -#import "GPUImageTwoInputFilter.h" - -@interface GPUImageMultiplyBlendFilter : GPUImageTwoInputFilter -{ -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageMultiplyBlendFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageMultiplyBlendFilter.m deleted file mode 100755 index ed64707..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageMultiplyBlendFilter.m +++ /dev/null @@ -1,52 +0,0 @@ -#import "GPUImageMultiplyBlendFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageMultiplyBlendFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - varying highp vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - lowp vec4 base = texture2D(inputImageTexture, textureCoordinate); - lowp vec4 overlayer = texture2D(inputImageTexture2, textureCoordinate2); - - gl_FragColor = overlayer * base + overlayer * (1.0 - base.a) + base * (1.0 - overlayer.a); - } -); -#else -NSString *const kGPUImageMultiplyBlendFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - vec4 base = texture2D(inputImageTexture, textureCoordinate); - vec4 overlayer = texture2D(inputImageTexture2, textureCoordinate2); - - gl_FragColor = overlayer * base + overlayer * (1.0 - base.a) + base * (1.0 - overlayer.a); - } -); -#endif - -@implementation GPUImageMultiplyBlendFilter - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageMultiplyBlendFragmentShaderString])) - { - return nil; - } - - return self; -} - -@end - diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageNobleCornerDetectionFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageNobleCornerDetectionFilter.h deleted file mode 100644 index 963fd66..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageNobleCornerDetectionFilter.h +++ /dev/null @@ -1,12 +0,0 @@ -#import "GPUImageHarrisCornerDetectionFilter.h" - -/** Noble corner detector - - This is the Noble variant on the Harris detector, from - Alison Noble, "Descriptions of Image Surfaces", PhD thesis, Department of Engineering Science, Oxford University 1989, p45. -*/ - - -@interface GPUImageNobleCornerDetectionFilter : GPUImageHarrisCornerDetectionFilter - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageNobleCornerDetectionFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageNobleCornerDetectionFilter.m deleted file mode 100644 index aa6b304..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageNobleCornerDetectionFilter.m +++ /dev/null @@ -1,74 +0,0 @@ -#import "GPUImageNobleCornerDetectionFilter.h" - -@implementation GPUImageNobleCornerDetectionFilter - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageNobleCornerDetectionFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform lowp float sensitivity; - - void main() - { - mediump vec3 derivativeElements = texture2D(inputImageTexture, textureCoordinate).rgb; - - mediump float derivativeSum = derivativeElements.x + derivativeElements.y; - - // R = (Ix^2 * Iy^2 - Ixy * Ixy) / (Ix^2 + Iy^2) - mediump float zElement = (derivativeElements.z * 2.0) - 1.0; - // mediump float harrisIntensity = (derivativeElements.x * derivativeElements.y - (derivativeElements.z * derivativeElements.z)) / (derivativeSum); - mediump float cornerness = (derivativeElements.x * derivativeElements.y - (zElement * zElement)) / (derivativeSum); - - // Original Harris detector - // R = Ix^2 * Iy^2 - Ixy * Ixy - k * (Ix^2 + Iy^2)^2 - // highp float harrisIntensity = derivativeElements.x * derivativeElements.y - (derivativeElements.z * derivativeElements.z) - harrisConstant * derivativeSum * derivativeSum; - - // gl_FragColor = vec4(vec3(harrisIntensity * 7.0), 1.0); - gl_FragColor = vec4(vec3(cornerness * sensitivity), 1.0); - } -); -#else -NSString *const kGPUImageNobleCornerDetectionFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform float sensitivity; - - void main() - { - vec3 derivativeElements = texture2D(inputImageTexture, textureCoordinate).rgb; - - float derivativeSum = derivativeElements.x + derivativeElements.y; - - // R = (Ix^2 * Iy^2 - Ixy * Ixy) / (Ix^2 + Iy^2) - float zElement = (derivativeElements.z * 2.0) - 1.0; - // mediump float harrisIntensity = (derivativeElements.x * derivativeElements.y - (derivativeElements.z * derivativeElements.z)) / (derivativeSum); - float cornerness = (derivativeElements.x * derivativeElements.y - (zElement * zElement)) / (derivativeSum); - - // Original Harris detector - // R = Ix^2 * Iy^2 - Ixy * Ixy - k * (Ix^2 + Iy^2)^2 - // highp float harrisIntensity = derivativeElements.x * derivativeElements.y - (derivativeElements.z * derivativeElements.z) - harrisConstant * derivativeSum * derivativeSum; - - // gl_FragColor = vec4(vec3(harrisIntensity * 7.0), 1.0); - gl_FragColor = vec4(vec3(cornerness * sensitivity), 1.0); - } -); -#endif - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [self initWithCornerDetectionFragmentShader:kGPUImageNobleCornerDetectionFragmentShaderString])) - { - return nil; - } - - return self; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageNonMaximumSuppressionFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageNonMaximumSuppressionFilter.h deleted file mode 100644 index fd8fe6d..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageNonMaximumSuppressionFilter.h +++ /dev/null @@ -1,5 +0,0 @@ -#import "GPUImage3x3TextureSamplingFilter.h" - -@interface GPUImageNonMaximumSuppressionFilter : GPUImage3x3TextureSamplingFilter - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageNonMaximumSuppressionFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageNonMaximumSuppressionFilter.m deleted file mode 100644 index eaf7ce5..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageNonMaximumSuppressionFilter.m +++ /dev/null @@ -1,107 +0,0 @@ -#import "GPUImageNonMaximumSuppressionFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageNonMaximumSuppressionFragmentShaderString = SHADER_STRING -( - uniform sampler2D inputImageTexture; - - varying highp vec2 textureCoordinate; - varying highp vec2 leftTextureCoordinate; - varying highp vec2 rightTextureCoordinate; - - varying highp vec2 topTextureCoordinate; - varying highp vec2 topLeftTextureCoordinate; - varying highp vec2 topRightTextureCoordinate; - - varying highp vec2 bottomTextureCoordinate; - varying highp vec2 bottomLeftTextureCoordinate; - varying highp vec2 bottomRightTextureCoordinate; - - void main() - { - lowp float bottomColor = texture2D(inputImageTexture, bottomTextureCoordinate).r; - lowp float bottomLeftColor = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; - lowp float bottomRightColor = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; - lowp vec4 centerColor = texture2D(inputImageTexture, textureCoordinate); - lowp float leftColor = texture2D(inputImageTexture, leftTextureCoordinate).r; - lowp float rightColor = texture2D(inputImageTexture, rightTextureCoordinate).r; - lowp float topColor = texture2D(inputImageTexture, topTextureCoordinate).r; - lowp float topRightColor = texture2D(inputImageTexture, topRightTextureCoordinate).r; - lowp float topLeftColor = texture2D(inputImageTexture, topLeftTextureCoordinate).r; - - // Use a tiebreaker for pixels to the left and immediately above this one - lowp float multiplier = 1.0 - step(centerColor.r, topColor); - multiplier = multiplier * (1.0 - step(centerColor.r, topLeftColor)); - multiplier = multiplier * (1.0 - step(centerColor.r, leftColor)); - multiplier = multiplier * (1.0 - step(centerColor.r, bottomLeftColor)); - - lowp float maxValue = max(centerColor.r, bottomColor); - maxValue = max(maxValue, bottomRightColor); - maxValue = max(maxValue, rightColor); - maxValue = max(maxValue, topRightColor); - - gl_FragColor = vec4((centerColor.rgb * step(maxValue, centerColor.r) * multiplier), 1.0); - } -); -#else -NSString *const kGPUImageNonMaximumSuppressionFragmentShaderString = SHADER_STRING -( - uniform sampler2D inputImageTexture; - - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - void main() - { - float bottomColor = texture2D(inputImageTexture, bottomTextureCoordinate).r; - float bottomLeftColor = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; - float bottomRightColor = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; - vec4 centerColor = texture2D(inputImageTexture, textureCoordinate); - float leftColor = texture2D(inputImageTexture, leftTextureCoordinate).r; - float rightColor = texture2D(inputImageTexture, rightTextureCoordinate).r; - float topColor = texture2D(inputImageTexture, topTextureCoordinate).r; - float topRightColor = texture2D(inputImageTexture, topRightTextureCoordinate).r; - float topLeftColor = texture2D(inputImageTexture, topLeftTextureCoordinate).r; - - // Use a tiebreaker for pixels to the left and immediately above this one - float multiplier = 1.0 - step(centerColor.r, topColor); - multiplier = multiplier * (1.0 - step(centerColor.r, topLeftColor)); - multiplier = multiplier * (1.0 - step(centerColor.r, leftColor)); - multiplier = multiplier * (1.0 - step(centerColor.r, bottomLeftColor)); - - float maxValue = max(centerColor.r, bottomColor); - maxValue = max(maxValue, bottomRightColor); - maxValue = max(maxValue, rightColor); - maxValue = max(maxValue, topRightColor); - - gl_FragColor = vec4((centerColor.rgb * step(maxValue, centerColor.r) * multiplier), 1.0); - } -); -#endif - -@implementation GPUImageNonMaximumSuppressionFilter - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageNonMaximumSuppressionFragmentShaderString])) - { - return nil; - } - - return self; -} - -@end - diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageNormalBlendFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageNormalBlendFilter.h deleted file mode 100644 index ce5e22b..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageNormalBlendFilter.h +++ /dev/null @@ -1,8 +0,0 @@ -// Created by Jorge Garcia on 9/5/12. -// - -#import "GPUImageTwoInputFilter.h" - -@interface GPUImageNormalBlendFilter : GPUImageTwoInputFilter - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageNormalBlendFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageNormalBlendFilter.m deleted file mode 100644 index f5b5069..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageNormalBlendFilter.m +++ /dev/null @@ -1,96 +0,0 @@ -// Created by Jorge Garcia on 9/5/12. - -#import "GPUImageNormalBlendFilter.h" -/* - This equation is a simplification of the general blending equation. It assumes the destination color is opaque, and therefore drops the destination color's alpha term. - - D = C1 * C1a + C2 * C2a * (1 - C1a) - where D is the resultant color, C1 is the color of the first element, C1a is the alpha of the first element, C2 is the second element color, C2a is the alpha of the second element. The destination alpha is calculated with: - - Da = C1a + C2a * (1 - C1a) - The resultant color is premultiplied with the alpha. To restore the color to the unmultiplied values, just divide by Da, the resultant alpha. - - http://stackoverflow.com/questions/1724946/blend-mode-on-a-transparent-and-semi-transparent-background - - For some reason Photoshop behaves - D = C1 + C2 * C2a * (1 - C1a) - */ -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageNormalBlendFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - varying highp vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - lowp vec4 c2 = texture2D(inputImageTexture, textureCoordinate); - lowp vec4 c1 = texture2D(inputImageTexture2, textureCoordinate2); - - lowp vec4 outputColor; - -// outputColor.r = c1.r + c2.r * c2.a * (1.0 - c1.a); -// outputColor.g = c1.g + c2.g * c2.a * (1.0 - c1.a); -// outputColor.b = c1.b + c2.b * c2.a * (1.0 - c1.a); -// outputColor.a = c1.a + c2.a * (1.0 - c1.a); - - lowp float a = c1.a + c2.a * (1.0 - c1.a); - lowp float alphaDivisor = a + step(a, 0.0); // Protect against a divide-by-zero blacking out things in the output - - outputColor.r = (c1.r * c1.a + c2.r * c2.a * (1.0 - c1.a))/alphaDivisor; - outputColor.g = (c1.g * c1.a + c2.g * c2.a * (1.0 - c1.a))/alphaDivisor; - outputColor.b = (c1.b * c1.a + c2.b * c2.a * (1.0 - c1.a))/alphaDivisor; - outputColor.a = a; - - gl_FragColor = outputColor; - } -); -#else -NSString *const kGPUImageNormalBlendFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - vec4 c2 = texture2D(inputImageTexture, textureCoordinate); - vec4 c1 = texture2D(inputImageTexture2, textureCoordinate2); - - vec4 outputColor; - - // outputColor.r = c1.r + c2.r * c2.a * (1.0 - c1.a); - // outputColor.g = c1.g + c2.g * c2.a * (1.0 - c1.a); - // outputColor.b = c1.b + c2.b * c2.a * (1.0 - c1.a); - // outputColor.a = c1.a + c2.a * (1.0 - c1.a); - - float a = c1.a + c2.a * (1.0 - c1.a); - float alphaDivisor = a + step(a, 0.0); // Protect against a divide-by-zero blacking out things in the output - - outputColor.r = (c1.r * c1.a + c2.r * c2.a * (1.0 - c1.a))/alphaDivisor; - outputColor.g = (c1.g * c1.a + c2.g * c2.a * (1.0 - c1.a))/alphaDivisor; - outputColor.b = (c1.b * c1.a + c2.b * c2.a * (1.0 - c1.a))/alphaDivisor; - outputColor.a = a; - - gl_FragColor = outputColor; - } -); -#endif - -@implementation GPUImageNormalBlendFilter - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageNormalBlendFragmentShaderString])) - { - return nil; - } - - return self; -} - -@end \ No newline at end of file diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageOpacityFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageOpacityFilter.h deleted file mode 100644 index 826749f..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageOpacityFilter.h +++ /dev/null @@ -1,11 +0,0 @@ -#import "GPUImageFilter.h" - -@interface GPUImageOpacityFilter : GPUImageFilter -{ - GLint opacityUniform; -} - -// Opacity ranges from 0.0 to 1.0, with 1.0 as the normal setting -@property(readwrite, nonatomic) CGFloat opacity; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageOpacityFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageOpacityFilter.m deleted file mode 100644 index b74acb6..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageOpacityFilter.m +++ /dev/null @@ -1,65 +0,0 @@ -#import "GPUImageOpacityFilter.h" - -@implementation GPUImageOpacityFilter - -@synthesize opacity = _opacity; - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageOpacityFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform lowp float opacity; - - void main() - { - lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - - gl_FragColor = vec4(textureColor.rgb, textureColor.a * opacity); - } -); -#else -NSString *const kGPUImageOpacityFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform float opacity; - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - - gl_FragColor = vec4(textureColor.rgb, textureColor.a * opacity); - } -); -#endif - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageOpacityFragmentShaderString])) - { - return nil; - } - - opacityUniform = [filterProgram uniformIndex:@"opacity"]; - self.opacity = 1.0; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setOpacity:(CGFloat)newValue; -{ - _opacity = newValue; - - [self setFloat:_opacity forUniform:opacityUniform program:filterProgram]; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageOpeningFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageOpeningFilter.h deleted file mode 100644 index 3e4f754..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageOpeningFilter.h +++ /dev/null @@ -1,19 +0,0 @@ -#import "GPUImageFilterGroup.h" - -@class GPUImageErosionFilter; -@class GPUImageDilationFilter; - -// A filter that first performs an erosion on the red channel of an image, followed by a dilation of the same radius. -// This helps to filter out smaller bright elements. - -@interface GPUImageOpeningFilter : GPUImageFilterGroup -{ - GPUImageErosionFilter *erosionFilter; - GPUImageDilationFilter *dilationFilter; -} - -@property(readwrite, nonatomic) CGFloat verticalTexelSpacing, horizontalTexelSpacing; - -- (id)initWithRadius:(NSUInteger)radius; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageOpeningFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageOpeningFilter.m deleted file mode 100644 index 4e7a565..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageOpeningFilter.m +++ /dev/null @@ -1,57 +0,0 @@ -#import "GPUImageOpeningFilter.h" -#import "GPUImageErosionFilter.h" -#import "GPUImageDilationFilter.h" - -@implementation GPUImageOpeningFilter - -@synthesize verticalTexelSpacing = _verticalTexelSpacing; -@synthesize horizontalTexelSpacing = _horizontalTexelSpacing; - -- (id)init; -{ - if (!(self = [self initWithRadius:1])) - { - return nil; - } - - return self; -} - -- (id)initWithRadius:(NSUInteger)radius; -{ - if (!(self = [super init])) - { - return nil; - } - - // First pass: erosion - erosionFilter = [[GPUImageErosionFilter alloc] initWithRadius:radius]; - [self addFilter:erosionFilter]; - - // Second pass: dilation - dilationFilter = [[GPUImageDilationFilter alloc] initWithRadius:radius]; - [self addFilter:dilationFilter]; - - [erosionFilter addTarget:dilationFilter]; - - self.initialFilters = [NSArray arrayWithObjects:erosionFilter, nil]; - self.terminalFilter = dilationFilter; - - return self; -} - -- (void)setVerticalTexelSpacing:(CGFloat)newValue; -{ - _verticalTexelSpacing = newValue; - erosionFilter.verticalTexelSpacing = newValue; - dilationFilter.verticalTexelSpacing = newValue; -} - -- (void)setHorizontalTexelSpacing:(CGFloat)newValue; -{ - _horizontalTexelSpacing = newValue; - erosionFilter.horizontalTexelSpacing = newValue; - dilationFilter.horizontalTexelSpacing = newValue; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageOutput.h b/Example/Pods/GPUImage/framework/Source/GPUImageOutput.h deleted file mode 100755 index a1af54d..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageOutput.h +++ /dev/null @@ -1,127 +0,0 @@ -#import "GPUImageContext.h" -#import "GPUImageFramebuffer.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -#import -#else -// For now, just redefine this on the Mac -typedef NS_ENUM(NSInteger, UIImageOrientation) { - UIImageOrientationUp, // default orientation - UIImageOrientationDown, // 180 deg rotation - UIImageOrientationLeft, // 90 deg CCW - UIImageOrientationRight, // 90 deg CW - UIImageOrientationUpMirrored, // as above but image mirrored along other axis. horizontal flip - UIImageOrientationDownMirrored, // horizontal flip - UIImageOrientationLeftMirrored, // vertical flip - UIImageOrientationRightMirrored, // vertical flip -}; -#endif - -void runOnMainQueueWithoutDeadlocking(void (^block)(void)); -void runSynchronouslyOnVideoProcessingQueue(void (^block)(void)); -void runAsynchronouslyOnVideoProcessingQueue(void (^block)(void)); -void runSynchronouslyOnContextQueue(GPUImageContext *context, void (^block)(void)); -void runAsynchronouslyOnContextQueue(GPUImageContext *context, void (^block)(void)); -void reportAvailableMemoryForGPUImage(NSString *tag); - -@class GPUImageMovieWriter; - -/** GPUImage's base source object - - Images or frames of video are uploaded from source objects, which are subclasses of GPUImageOutput. These include: - - - GPUImageVideoCamera (for live video from an iOS camera) - - GPUImageStillCamera (for taking photos with the camera) - - GPUImagePicture (for still images) - - GPUImageMovie (for movies) - - Source objects upload still image frames to OpenGL ES as textures, then hand those textures off to the next objects in the processing chain. - */ -@interface GPUImageOutput : NSObject -{ - GPUImageFramebuffer *outputFramebuffer; - - NSMutableArray *targets, *targetTextureIndices; - - CGSize inputTextureSize, cachedMaximumOutputSize, forcedMaximumSize; - - BOOL overrideInputSize; - - BOOL allTargetsWantMonochromeData; - BOOL usingNextFrameForImageCapture; -} - -@property(readwrite, nonatomic) BOOL shouldSmoothlyScaleOutput; -@property(readwrite, nonatomic) BOOL shouldIgnoreUpdatesToThisTarget; -@property(readwrite, nonatomic, retain) GPUImageMovieWriter *audioEncodingTarget; -@property(readwrite, nonatomic, unsafe_unretained) id targetToIgnoreForUpdates; -@property(nonatomic, copy) void(^frameProcessingCompletionBlock)(GPUImageOutput*, CMTime); -@property(nonatomic) BOOL enabled; -@property(readwrite, nonatomic) GPUTextureOptions outputTextureOptions; - -/// @name Managing targets -- (void)setInputFramebufferForTarget:(id)target atIndex:(NSInteger)inputTextureIndex; -- (GPUImageFramebuffer *)framebufferForOutput; -- (void)removeOutputFramebuffer; -- (void)notifyTargetsAboutNewOutputTexture; - -/** Returns an array of the current targets. - */ -- (NSArray*)targets; - -/** Adds a target to receive notifications when new frames are available. - - The target will be asked for its next available texture. - - See [GPUImageInput newFrameReadyAtTime:] - - @param newTarget Target to be added - */ -- (void)addTarget:(id)newTarget; - -/** Adds a target to receive notifications when new frames are available. - - See [GPUImageInput newFrameReadyAtTime:] - - @param newTarget Target to be added - */ -- (void)addTarget:(id)newTarget atTextureLocation:(NSInteger)textureLocation; - -/** Removes a target. The target will no longer receive notifications when new frames are available. - - @param targetToRemove Target to be removed - */ -- (void)removeTarget:(id)targetToRemove; - -/** Removes all targets. - */ -- (void)removeAllTargets; - -/// @name Manage the output texture - -- (void)forceProcessingAtSize:(CGSize)frameSize; -- (void)forceProcessingAtSizeRespectingAspectRatio:(CGSize)frameSize; - -/// @name Still image processing - -- (void)useNextFrameForImageCapture; -- (CGImageRef)newCGImageFromCurrentlyProcessedOutput; -- (CGImageRef)newCGImageByFilteringCGImage:(CGImageRef)imageToFilter; - -// Platform-specific image output methods -// If you're trying to use these methods, remember that you need to set -useNextFrameForImageCapture before running -processImage or running video and calling any of these methods, or you will get a nil image -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -- (UIImage *)imageFromCurrentFramebuffer; -- (UIImage *)imageFromCurrentFramebufferWithOrientation:(UIImageOrientation)imageOrientation; -- (UIImage *)imageByFilteringImage:(UIImage *)imageToFilter; -- (CGImageRef)newCGImageByFilteringImage:(UIImage *)imageToFilter; -#else -- (NSImage *)imageFromCurrentFramebuffer; -- (NSImage *)imageFromCurrentFramebufferWithOrientation:(UIImageOrientation)imageOrientation; -- (NSImage *)imageByFilteringImage:(NSImage *)imageToFilter; -- (CGImageRef)newCGImageByFilteringImage:(NSImage *)imageToFilter; -#endif - -- (BOOL)providesMonochromeOutput; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageOutput.m b/Example/Pods/GPUImage/framework/Source/GPUImageOutput.m deleted file mode 100755 index 2817a44..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageOutput.m +++ /dev/null @@ -1,428 +0,0 @@ -#import "GPUImageOutput.h" -#import "GPUImageMovieWriter.h" -#import "GPUImagePicture.h" -#import - -void runOnMainQueueWithoutDeadlocking(void (^block)(void)) -{ - if ([NSThread isMainThread]) - { - block(); - } - else - { - dispatch_sync(dispatch_get_main_queue(), block); - } -} - -void runSynchronouslyOnVideoProcessingQueue(void (^block)(void)) -{ - dispatch_queue_t videoProcessingQueue = [GPUImageContext sharedContextQueue]; -#if !OS_OBJECT_USE_OBJC -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - if (dispatch_get_current_queue() == videoProcessingQueue) -#pragma clang diagnostic pop -#else - if (dispatch_get_specific([GPUImageContext contextKey])) -#endif - { - block(); - }else - { - dispatch_sync(videoProcessingQueue, block); - } -} - -void runAsynchronouslyOnVideoProcessingQueue(void (^block)(void)) -{ - dispatch_queue_t videoProcessingQueue = [GPUImageContext sharedContextQueue]; - -#if !OS_OBJECT_USE_OBJC -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - if (dispatch_get_current_queue() == videoProcessingQueue) -#pragma clang diagnostic pop -#else - if (dispatch_get_specific([GPUImageContext contextKey])) -#endif - { - block(); - }else - { - dispatch_async(videoProcessingQueue, block); - } -} - -void runSynchronouslyOnContextQueue(GPUImageContext *context, void (^block)(void)) -{ - dispatch_queue_t videoProcessingQueue = [context contextQueue]; -#if !OS_OBJECT_USE_OBJC -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - if (dispatch_get_current_queue() == videoProcessingQueue) -#pragma clang diagnostic pop -#else - if (dispatch_get_specific([GPUImageContext contextKey])) -#endif - { - block(); - }else - { - dispatch_sync(videoProcessingQueue, block); - } -} - -void runAsynchronouslyOnContextQueue(GPUImageContext *context, void (^block)(void)) -{ - dispatch_queue_t videoProcessingQueue = [context contextQueue]; - -#if !OS_OBJECT_USE_OBJC -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - if (dispatch_get_current_queue() == videoProcessingQueue) -#pragma clang diagnostic pop -#else - if (dispatch_get_specific([GPUImageContext contextKey])) -#endif - { - block(); - }else - { - dispatch_async(videoProcessingQueue, block); - } -} - -void reportAvailableMemoryForGPUImage(NSString *tag) -{ - if (!tag) - tag = @"Default"; - - struct task_basic_info info; - - mach_msg_type_number_t size = sizeof(info); - - kern_return_t kerr = task_info(mach_task_self(), - - TASK_BASIC_INFO, - - (task_info_t)&info, - - &size); - if( kerr == KERN_SUCCESS ) { - NSLog(@"%@ - Memory used: %u", tag, (unsigned int)info.resident_size); //in bytes - } else { - NSLog(@"%@ - Error: %s", tag, mach_error_string(kerr)); - } -} - -@implementation GPUImageOutput - -@synthesize shouldSmoothlyScaleOutput = _shouldSmoothlyScaleOutput; -@synthesize shouldIgnoreUpdatesToThisTarget = _shouldIgnoreUpdatesToThisTarget; -@synthesize audioEncodingTarget = _audioEncodingTarget; -@synthesize targetToIgnoreForUpdates = _targetToIgnoreForUpdates; -@synthesize frameProcessingCompletionBlock = _frameProcessingCompletionBlock; -@synthesize enabled = _enabled; -@synthesize outputTextureOptions = _outputTextureOptions; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super init])) - { - return nil; - } - - targets = [[NSMutableArray alloc] init]; - targetTextureIndices = [[NSMutableArray alloc] init]; - _enabled = YES; - allTargetsWantMonochromeData = YES; - usingNextFrameForImageCapture = NO; - - // set default texture options - _outputTextureOptions.minFilter = GL_LINEAR; - _outputTextureOptions.magFilter = GL_LINEAR; - _outputTextureOptions.wrapS = GL_CLAMP_TO_EDGE; - _outputTextureOptions.wrapT = GL_CLAMP_TO_EDGE; - _outputTextureOptions.internalFormat = GL_RGBA; - _outputTextureOptions.format = GL_BGRA; - _outputTextureOptions.type = GL_UNSIGNED_BYTE; - - return self; -} - -- (void)dealloc -{ - [self removeAllTargets]; -} - -#pragma mark - -#pragma mark Managing targets - -- (void)setInputFramebufferForTarget:(id)target atIndex:(NSInteger)inputTextureIndex; -{ - [target setInputFramebuffer:[self framebufferForOutput] atIndex:inputTextureIndex]; -} - -- (GPUImageFramebuffer *)framebufferForOutput; -{ - return outputFramebuffer; -} - -- (void)removeOutputFramebuffer; -{ - outputFramebuffer = nil; -} - -- (void)notifyTargetsAboutNewOutputTexture; -{ - for (id currentTarget in targets) - { - NSInteger indexOfObject = [targets indexOfObject:currentTarget]; - NSInteger textureIndex = [[targetTextureIndices objectAtIndex:indexOfObject] integerValue]; - - [self setInputFramebufferForTarget:currentTarget atIndex:textureIndex]; - } -} - -- (NSArray*)targets; -{ - return [NSArray arrayWithArray:targets]; -} - -- (void)addTarget:(id)newTarget; -{ - NSInteger nextAvailableTextureIndex = [newTarget nextAvailableTextureIndex]; - [self addTarget:newTarget atTextureLocation:nextAvailableTextureIndex]; - - if ([newTarget shouldIgnoreUpdatesToThisTarget]) - { - _targetToIgnoreForUpdates = newTarget; - } -} - -- (void)addTarget:(id)newTarget atTextureLocation:(NSInteger)textureLocation; -{ - if([targets containsObject:newTarget]) - { - return; - } - - cachedMaximumOutputSize = CGSizeZero; - runSynchronouslyOnVideoProcessingQueue(^{ - [self setInputFramebufferForTarget:newTarget atIndex:textureLocation]; - [targets addObject:newTarget]; - [targetTextureIndices addObject:[NSNumber numberWithInteger:textureLocation]]; - - allTargetsWantMonochromeData = allTargetsWantMonochromeData && [newTarget wantsMonochromeInput]; - }); -} - -- (void)removeTarget:(id)targetToRemove; -{ - if(![targets containsObject:targetToRemove]) - { - return; - } - - if (_targetToIgnoreForUpdates == targetToRemove) - { - _targetToIgnoreForUpdates = nil; - } - - cachedMaximumOutputSize = CGSizeZero; - - NSInteger indexOfObject = [targets indexOfObject:targetToRemove]; - NSInteger textureIndexOfTarget = [[targetTextureIndices objectAtIndex:indexOfObject] integerValue]; - - runSynchronouslyOnVideoProcessingQueue(^{ - [targetToRemove setInputSize:CGSizeZero atIndex:textureIndexOfTarget]; - [targetToRemove setInputRotation:kGPUImageNoRotation atIndex:textureIndexOfTarget]; - - [targetTextureIndices removeObjectAtIndex:indexOfObject]; - [targets removeObject:targetToRemove]; - [targetToRemove endProcessing]; - }); -} - -- (void)removeAllTargets; -{ - cachedMaximumOutputSize = CGSizeZero; - runSynchronouslyOnVideoProcessingQueue(^{ - for (id targetToRemove in targets) - { - NSInteger indexOfObject = [targets indexOfObject:targetToRemove]; - NSInteger textureIndexOfTarget = [[targetTextureIndices objectAtIndex:indexOfObject] integerValue]; - - [targetToRemove setInputSize:CGSizeZero atIndex:textureIndexOfTarget]; - [targetToRemove setInputRotation:kGPUImageNoRotation atIndex:textureIndexOfTarget]; - } - [targets removeAllObjects]; - [targetTextureIndices removeAllObjects]; - - allTargetsWantMonochromeData = YES; - }); -} - -#pragma mark - -#pragma mark Manage the output texture - -- (void)forceProcessingAtSize:(CGSize)frameSize; -{ - -} - -- (void)forceProcessingAtSizeRespectingAspectRatio:(CGSize)frameSize; -{ -} - -#pragma mark - -#pragma mark Still image processing - -- (void)useNextFrameForImageCapture; -{ - -} - -- (CGImageRef)newCGImageFromCurrentlyProcessedOutput; -{ - return nil; -} - -- (CGImageRef)newCGImageByFilteringCGImage:(CGImageRef)imageToFilter; -{ - GPUImagePicture *stillImageSource = [[GPUImagePicture alloc] initWithCGImage:imageToFilter]; - - [self useNextFrameForImageCapture]; - [stillImageSource addTarget:(id)self]; - [stillImageSource processImage]; - - CGImageRef processedImage = [self newCGImageFromCurrentlyProcessedOutput]; - - [stillImageSource removeTarget:(id)self]; - return processedImage; -} - -- (BOOL)providesMonochromeOutput; -{ - return NO; -} - -#pragma mark - -#pragma mark Platform-specific image output methods - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - -- (UIImage *)imageFromCurrentFramebuffer; -{ - UIDeviceOrientation deviceOrientation = [[UIDevice currentDevice] orientation]; - UIImageOrientation imageOrientation = UIImageOrientationLeft; - switch (deviceOrientation) - { - case UIDeviceOrientationPortrait: - imageOrientation = UIImageOrientationUp; - break; - case UIDeviceOrientationPortraitUpsideDown: - imageOrientation = UIImageOrientationDown; - break; - case UIDeviceOrientationLandscapeLeft: - imageOrientation = UIImageOrientationLeft; - break; - case UIDeviceOrientationLandscapeRight: - imageOrientation = UIImageOrientationRight; - break; - default: - imageOrientation = UIImageOrientationUp; - break; - } - - return [self imageFromCurrentFramebufferWithOrientation:imageOrientation]; -} - -- (UIImage *)imageFromCurrentFramebufferWithOrientation:(UIImageOrientation)imageOrientation; -{ - CGImageRef cgImageFromBytes = [self newCGImageFromCurrentlyProcessedOutput]; - UIImage *finalImage = [UIImage imageWithCGImage:cgImageFromBytes scale:1.0 orientation:imageOrientation]; - CGImageRelease(cgImageFromBytes); - - return finalImage; -} - -- (UIImage *)imageByFilteringImage:(UIImage *)imageToFilter; -{ - CGImageRef image = [self newCGImageByFilteringCGImage:[imageToFilter CGImage]]; - UIImage *processedImage = [UIImage imageWithCGImage:image scale:[imageToFilter scale] orientation:[imageToFilter imageOrientation]]; - CGImageRelease(image); - return processedImage; -} - -- (CGImageRef)newCGImageByFilteringImage:(UIImage *)imageToFilter -{ - return [self newCGImageByFilteringCGImage:[imageToFilter CGImage]]; -} - -#else - -- (NSImage *)imageFromCurrentFramebuffer; -{ - return [self imageFromCurrentFramebufferWithOrientation:UIImageOrientationLeft]; -} - -- (NSImage *)imageFromCurrentFramebufferWithOrientation:(UIImageOrientation)imageOrientation; -{ - CGImageRef cgImageFromBytes = [self newCGImageFromCurrentlyProcessedOutput]; - NSImage *finalImage = [[NSImage alloc] initWithCGImage:cgImageFromBytes size:NSZeroSize]; - CGImageRelease(cgImageFromBytes); - - return finalImage; -} - -- (NSImage *)imageByFilteringImage:(NSImage *)imageToFilter; -{ - CGImageRef image = [self newCGImageByFilteringCGImage:[imageToFilter CGImageForProposedRect:NULL context:[NSGraphicsContext currentContext] hints:nil]]; - NSImage *processedImage = [[NSImage alloc] initWithCGImage:image size:NSZeroSize]; - CGImageRelease(image); - return processedImage; -} - -- (CGImageRef)newCGImageByFilteringImage:(NSImage *)imageToFilter -{ - return [self newCGImageByFilteringCGImage:[imageToFilter CGImageForProposedRect:NULL context:[NSGraphicsContext currentContext] hints:nil]]; -} - -#endif - -#pragma mark - -#pragma mark Accessors - -- (void)setAudioEncodingTarget:(GPUImageMovieWriter *)newValue; -{ - _audioEncodingTarget = newValue; - if( ! _audioEncodingTarget.hasAudioTrack ) - { - _audioEncodingTarget.hasAudioTrack = YES; - } -} - --(void)setOutputTextureOptions:(GPUTextureOptions)outputTextureOptions -{ - _outputTextureOptions = outputTextureOptions; - - if( outputFramebuffer.texture ) - { - glBindTexture(GL_TEXTURE_2D, outputFramebuffer.texture); - //_outputTextureOptions.format - //_outputTextureOptions.internalFormat - //_outputTextureOptions.magFilter - //_outputTextureOptions.minFilter - //_outputTextureOptions.type - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, _outputTextureOptions.wrapS); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, _outputTextureOptions.wrapT); - glBindTexture(GL_TEXTURE_2D, 0); - } -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageOverlayBlendFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageOverlayBlendFilter.h deleted file mode 100755 index 57eb840..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageOverlayBlendFilter.h +++ /dev/null @@ -1,5 +0,0 @@ -#import "GPUImageTwoInputFilter.h" - -@interface GPUImageOverlayBlendFilter : GPUImageTwoInputFilter - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageOverlayBlendFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageOverlayBlendFilter.m deleted file mode 100755 index c8c5185..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageOverlayBlendFilter.m +++ /dev/null @@ -1,94 +0,0 @@ -#import "GPUImageOverlayBlendFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageOverlayBlendFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - varying highp vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - mediump vec4 base = texture2D(inputImageTexture, textureCoordinate); - mediump vec4 overlay = texture2D(inputImageTexture2, textureCoordinate2); - - mediump float ra; - if (2.0 * base.r < base.a) { - ra = 2.0 * overlay.r * base.r + overlay.r * (1.0 - base.a) + base.r * (1.0 - overlay.a); - } else { - ra = overlay.a * base.a - 2.0 * (base.a - base.r) * (overlay.a - overlay.r) + overlay.r * (1.0 - base.a) + base.r * (1.0 - overlay.a); - } - - mediump float ga; - if (2.0 * base.g < base.a) { - ga = 2.0 * overlay.g * base.g + overlay.g * (1.0 - base.a) + base.g * (1.0 - overlay.a); - } else { - ga = overlay.a * base.a - 2.0 * (base.a - base.g) * (overlay.a - overlay.g) + overlay.g * (1.0 - base.a) + base.g * (1.0 - overlay.a); - } - - mediump float ba; - if (2.0 * base.b < base.a) { - ba = 2.0 * overlay.b * base.b + overlay.b * (1.0 - base.a) + base.b * (1.0 - overlay.a); - } else { - ba = overlay.a * base.a - 2.0 * (base.a - base.b) * (overlay.a - overlay.b) + overlay.b * (1.0 - base.a) + base.b * (1.0 - overlay.a); - } - - gl_FragColor = vec4(ra, ga, ba, 1.0); - } -); -#else -NSString *const kGPUImageOverlayBlendFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - vec4 base = texture2D(inputImageTexture, textureCoordinate); - vec4 overlay = texture2D(inputImageTexture2, textureCoordinate2); - - float ra; - if (2.0 * base.r < base.a) { - ra = 2.0 * overlay.r * base.r + overlay.r * (1.0 - base.a) + base.r * (1.0 - overlay.a); - } else { - ra = overlay.a * base.a - 2.0 * (base.a - base.r) * (overlay.a - overlay.r) + overlay.r * (1.0 - base.a) + base.r * (1.0 - overlay.a); - } - - float ga; - if (2.0 * base.g < base.a) { - ga = 2.0 * overlay.g * base.g + overlay.g * (1.0 - base.a) + base.g * (1.0 - overlay.a); - } else { - ga = overlay.a * base.a - 2.0 * (base.a - base.g) * (overlay.a - overlay.g) + overlay.g * (1.0 - base.a) + base.g * (1.0 - overlay.a); - } - - float ba; - if (2.0 * base.b < base.a) { - ba = 2.0 * overlay.b * base.b + overlay.b * (1.0 - base.a) + base.b * (1.0 - overlay.a); - } else { - ba = overlay.a * base.a - 2.0 * (base.a - base.b) * (overlay.a - overlay.b) + overlay.b * (1.0 - base.a) + base.b * (1.0 - overlay.a); - } - - gl_FragColor = vec4(ra, ga, ba, 1.0); - } -); -#endif - -@implementation GPUImageOverlayBlendFilter - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageOverlayBlendFragmentShaderString])) - { - return nil; - } - - return self; -} - -@end - diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageParallelCoordinateLineTransformFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageParallelCoordinateLineTransformFilter.h deleted file mode 100644 index aa8f3f4..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageParallelCoordinateLineTransformFilter.h +++ /dev/null @@ -1,16 +0,0 @@ -#import "GPUImageFilter.h" - -// This is an accumulator that uses a Hough transform in parallel coordinate space to identify probable lines in a scene. -// -// It is entirely based on the work of the Graph@FIT research group at the Brno University of Technology and their publications: -// M. Dubská, J. Havel, and A. Herout. Real-Time Detection of Lines using Parallel Coordinates and OpenGL. Proceedings of SCCG 2011, Bratislava, SK, p. 7. -// M. Dubská, J. Havel, and A. Herout. PClines — Line detection using parallel coordinates. 2011 IEEE Conference on Computer Vision and Pattern Recognition (CVPR), p. 1489- 1494. - -@interface GPUImageParallelCoordinateLineTransformFilter : GPUImageFilter -{ - GLubyte *rawImagePixels; - GLfloat *lineCoordinates; - unsigned int maxLinePairsToRender, linePairsToRender; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageParallelCoordinateLineTransformFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageParallelCoordinateLineTransformFilter.m deleted file mode 100644 index 0a2f6e4..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageParallelCoordinateLineTransformFilter.m +++ /dev/null @@ -1,266 +0,0 @@ -#import "GPUImageParallelCoordinateLineTransformFilter.h" - -NSString *const kGPUImageHoughAccumulationVertexShaderString = SHADER_STRING -( - attribute vec4 position; - - void main() - { - gl_Position = position; - } -); - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageHoughAccumulationFragmentShaderString = SHADER_STRING -( - const lowp float scalingFactor = 1.0 / 256.0; - - void main() - { - gl_FragColor = vec4(0.004, 0.004, 0.004, 1.0); - } -); - -// highp - 16-bit, floating point range: -2^62 to 2^62, integer range: -2^16 to 2^16 -// NOTE: See below for where I'm tacking on the required extension as a prefix -NSString *const kGPUImageHoughAccumulationFBOReadFragmentShaderString = SHADER_STRING -( - const lowp float scalingFactor = 0.004; -// const lowp float scalingFactor = 0.1; - - void main() - { - mediump vec4 fragmentData = gl_LastFragData[0]; - - fragmentData.r = fragmentData.r + scalingFactor; - fragmentData.g = scalingFactor * floor(fragmentData.r) + fragmentData.g; - fragmentData.b = scalingFactor * floor(fragmentData.g) + fragmentData.b; - fragmentData.a = scalingFactor * floor(fragmentData.b) + fragmentData.a; - - fragmentData = fract(fragmentData); - - gl_FragColor = vec4(fragmentData.rgb, 1.0); - } -); - -#else -NSString *const kGPUImageHoughAccumulationFragmentShaderString = SHADER_STRING -( - const float scalingFactor = 1.0 / 256.0; - - void main() - { - gl_FragColor = vec4(0.004, 0.004, 0.004, 1.0); - } -); - -NSString *const kGPUImageHoughAccumulationFBOReadFragmentShaderString = SHADER_STRING -( - const float scalingFactor = 1.0 / 256.0; - - void main() - { - // gl_FragColor = vec4(scalingFactor, scalingFactor, scalingFactor, 1.0); - gl_FragColor = vec4(0.004, 0.004, 0.004, 1.0); - } -); -#endif - -@interface GPUImageParallelCoordinateLineTransformFilter() -// Rendering -- (void)generateLineCoordinates; - -@end - -@implementation GPUImageParallelCoordinateLineTransformFilter - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - NSString *fragmentShaderToUse = nil; - - if ([GPUImageContext deviceSupportsFramebufferReads]) - { - fragmentShaderToUse = [NSString stringWithFormat:@"#extension GL_EXT_shader_framebuffer_fetch : require\n %@",kGPUImageHoughAccumulationFBOReadFragmentShaderString]; - } - else - { - fragmentShaderToUse = kGPUImageHoughAccumulationFragmentShaderString; - } - - if (!(self = [super initWithVertexShaderFromString:kGPUImageHoughAccumulationVertexShaderString fragmentShaderFromString:fragmentShaderToUse])) - { - return nil; - } - - - return self; -} - -// TODO: have this be regenerated on change of image size -- (void)dealloc; -{ - free(rawImagePixels); - free(lineCoordinates); -} - -- (void)initializeAttributes; -{ - [filterProgram addAttribute:@"position"]; -} - -#pragma mark - -#pragma mark Rendering - -#define MAXLINESCALINGFACTOR 4 - -- (void)generateLineCoordinates; -{ - unsigned int imageByteSize = inputTextureSize.width * inputTextureSize.height * 4; - rawImagePixels = (GLubyte *)malloc(imageByteSize); - - maxLinePairsToRender = (inputTextureSize.width * inputTextureSize.height) / MAXLINESCALINGFACTOR; - lineCoordinates = calloc(maxLinePairsToRender * 8, sizeof(GLfloat)); -} - -- (void)newFrameReadyAtTime:(CMTime)frameTime atIndex:(NSInteger)textureIndex; -{ - if (lineCoordinates == NULL) - { - [self generateLineCoordinates]; - } - - [self renderToTextureWithVertices:NULL textureCoordinates:NULL]; - - [self informTargetsAboutNewFrameAtTime:frameTime]; -} - -- (void)renderToTextureWithVertices:(const GLfloat *)vertices textureCoordinates:(const GLfloat *)textureCoordinates; -{ - // we need a normal color texture for this filter - NSAssert(self.outputTextureOptions.internalFormat == GL_RGBA, @"The output texture format for this filter must be GL_RGBA."); - NSAssert(self.outputTextureOptions.type == GL_UNSIGNED_BYTE, @"The type of the output texture of this filter must be GL_UNSIGNED_BYTE."); - - if (self.preventRendering) - { - [firstInputFramebuffer unlock]; - return; - } - - // Grab the edge points from the previous frame and create the parallel coordinate lines for them - // This would be a great place to have a working histogram pyramid implementation - - [GPUImageContext useImageProcessingContext]; - [firstInputFramebuffer activateFramebuffer]; - - glFinish(); - glReadPixels(0, 0, inputTextureSize.width, inputTextureSize.height, GL_RGBA, GL_UNSIGNED_BYTE, rawImagePixels); - - CGFloat xAspectMultiplier = 1.0, yAspectMultiplier = 1.0; - -// if (inputTextureSize.width > inputTextureSize.height) -// { -// yAspectMultiplier = inputTextureSize.height / inputTextureSize.width; -// } -// else -// { -// xAspectMultiplier = inputTextureSize.width / inputTextureSize.height; -// } - -// CFAbsoluteTime startTime = CFAbsoluteTimeGetCurrent(); - - unsigned int imageByteSize = inputTextureSize.width * inputTextureSize.height * 4; - unsigned int imageWidth = inputTextureSize.width * 4; - - linePairsToRender = 0; - unsigned int currentByte = 0; - unsigned int lineStorageIndex = 0; - unsigned int maxLineStorageIndex = maxLinePairsToRender * 8 - 8; - - GLfloat minY = 100, maxY = -100, minX = 100, maxX = -100; - while (currentByte < imageByteSize) - { - GLubyte colorByte = rawImagePixels[currentByte]; - - if (colorByte > 0) - { - unsigned int xCoordinate = currentByte % imageWidth; - unsigned int yCoordinate = currentByte / imageWidth; - - CGFloat normalizedXCoordinate = (-1.0 + 2.0 * (CGFloat)(xCoordinate / 4) / inputTextureSize.width) * xAspectMultiplier; - CGFloat normalizedYCoordinate = (-1.0 + 2.0 * (CGFloat)(yCoordinate) / inputTextureSize.height) * yAspectMultiplier; - - minY = MIN(minY, normalizedYCoordinate); - maxY = MAX(maxY, normalizedYCoordinate); - minX = MIN(minX, normalizedXCoordinate); - maxX = MAX(maxX, normalizedXCoordinate); - -// NSLog(@"Parallel line coordinates: (%f, %f) - (%f, %f) - (%f, %f)", -1.0, -normalizedYCoordinate, 0.0, normalizedXCoordinate, 1.0, normalizedYCoordinate); - // T space coordinates, (-d, -y) to (0, x) - lineCoordinates[lineStorageIndex++] = -1.0; - lineCoordinates[lineStorageIndex++] = -normalizedYCoordinate; - lineCoordinates[lineStorageIndex++] = 0.0; - lineCoordinates[lineStorageIndex++] = normalizedXCoordinate; - - // S space coordinates, (0, x) to (d, y) - lineCoordinates[lineStorageIndex++] = 0.0; - lineCoordinates[lineStorageIndex++] = normalizedXCoordinate; - lineCoordinates[lineStorageIndex++] = 1.0; - lineCoordinates[lineStorageIndex++] = normalizedYCoordinate; - - linePairsToRender++; - - linePairsToRender = MIN(linePairsToRender, maxLinePairsToRender); - lineStorageIndex = MIN(lineStorageIndex, maxLineStorageIndex); - } - currentByte +=8; - } - -// NSLog(@"Line pairs to render: %d out of max: %d", linePairsToRender, maxLinePairsToRender); - -// CFAbsoluteTime currentFrameTime = (CFAbsoluteTimeGetCurrent() - startTime); -// NSLog(@"Line generation processing time : %f ms", 1000.0 * currentFrameTime); - - outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:[self sizeOfFBO] textureOptions:self.outputTextureOptions onlyTexture:NO]; - [outputFramebuffer activateFramebuffer]; - - if (usingNextFrameForImageCapture) - { - [outputFramebuffer lock]; - } - - [GPUImageContext setActiveShaderProgram:filterProgram]; - [self setUniformsForProgramAtIndex:0]; - - glClearColor(0.0, 0.0, 0.0, 1.0); - glClear(GL_COLOR_BUFFER_BIT); - - if (![GPUImageContext deviceSupportsFramebufferReads]) - { - glBlendEquation(GL_FUNC_ADD); - glBlendFunc(GL_ONE, GL_ONE); - glEnable(GL_BLEND); - } - else - { - } - - glLineWidth(1); - - glVertexAttribPointer(filterPositionAttribute, 2, GL_FLOAT, 0, 0, lineCoordinates); - glDrawArrays(GL_LINES, 0, (linePairsToRender * 4)); - - if (![GPUImageContext deviceSupportsFramebufferReads]) - { - glDisable(GL_BLEND); - } - [firstInputFramebuffer unlock]; - if (usingNextFrameForImageCapture) - { - dispatch_semaphore_signal(imageCaptureSemaphore); - } -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImagePerlinNoiseFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImagePerlinNoiseFilter.h deleted file mode 100644 index 922f4d3..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImagePerlinNoiseFilter.h +++ /dev/null @@ -1,13 +0,0 @@ -#import "GPUImageFilter.h" - -@interface GPUImagePerlinNoiseFilter : GPUImageFilter -{ - GLint scaleUniform, colorStartUniform, colorFinishUniform; -} - -@property (readwrite, nonatomic) GPUVector4 colorStart; -@property (readwrite, nonatomic) GPUVector4 colorFinish; - -@property (readwrite, nonatomic) float scale; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImagePerlinNoiseFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImagePerlinNoiseFilter.m deleted file mode 100644 index 9ca7cba..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImagePerlinNoiseFilter.m +++ /dev/null @@ -1,239 +0,0 @@ -#import "GPUImagePerlinNoiseFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImagePerlinNoiseFragmentShaderString = SHADER_STRING -( - precision highp float; - varying highp vec2 textureCoordinate; - uniform float scale; - - uniform vec4 colorStart; - uniform vec4 colorFinish; - - // - // Description : Array and textureless GLSL 2D/3D/4D simplex - // noise functions. - // Author : Ian McEwan, Ashima Arts. - // Maintainer : ijm - // Lastmod : 20110822 (ijm) - // License : Copyright (C) 2011 Ashima Arts. All rights reserved. - // Distributed under the MIT License. See LICENSE file. - // https://github.com/ashima/webgl-noise - // - - vec4 mod289(vec4 x) -{ - return x - floor(x * (1.0 / 289.0)) * 289.0; -} - - vec4 permute(vec4 x) -{ - return mod289(((x*34.0)+1.0)*x); -} - - vec4 taylorInvSqrt(vec4 r) -{ - return 1.79284291400159 - 0.85373472095314 * r; -} - - vec2 fade(vec2 t) { - return t*t*t*(t*(t*6.0-15.0)+10.0); - } - - // Classic Perlin noise - float cnoise(vec2 P) -{ - vec4 Pi = floor(P.xyxy) + vec4(0.0, 0.0, 1.0, 1.0); - vec4 Pf = fract(P.xyxy) - vec4(0.0, 0.0, 1.0, 1.0); - Pi = mod289(Pi); // To avoid truncation effects in permutation - vec4 ix = Pi.xzxz; - vec4 iy = Pi.yyww; - vec4 fx = Pf.xzxz; - vec4 fy = Pf.yyww; - - vec4 i = permute(permute(ix) + iy); - - vec4 gx = fract(i * (1.0 / 41.0)) * 2.0 - 1.0 ; - vec4 gy = abs(gx) - 0.5 ; - vec4 tx = floor(gx + 0.5); - gx = gx - tx; - - vec2 g00 = vec2(gx.x,gy.x); - vec2 g10 = vec2(gx.y,gy.y); - vec2 g01 = vec2(gx.z,gy.z); - vec2 g11 = vec2(gx.w,gy.w); - - vec4 norm = taylorInvSqrt(vec4(dot(g00, g00), dot(g01, g01), dot(g10, g10), dot(g11, g11))); - g00 *= norm.x; - g01 *= norm.y; - g10 *= norm.z; - g11 *= norm.w; - - float n00 = dot(g00, vec2(fx.x, fy.x)); - float n10 = dot(g10, vec2(fx.y, fy.y)); - float n01 = dot(g01, vec2(fx.z, fy.z)); - float n11 = dot(g11, vec2(fx.w, fy.w)); - - vec2 fade_xy = fade(Pf.xy); - vec2 n_x = mix(vec2(n00, n01), vec2(n10, n11), fade_xy.x); - float n_xy = mix(n_x.x, n_x.y, fade_xy.y); - return 2.3 * n_xy; -} - - - void main() - { - - float n1 = (cnoise(textureCoordinate * scale) + 1.0) / 2.0; - - vec4 colorDiff = colorFinish - colorStart; - vec4 color = colorStart + colorDiff * n1; - - gl_FragColor = color; - } -); -#else -NSString *const kGPUImagePerlinNoiseFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - uniform float scale; - - uniform vec4 colorStart; - uniform vec4 colorFinish; - - // - // Description : Array and textureless GLSL 2D/3D/4D simplex - // noise functions. - // Author : Ian McEwan, Ashima Arts. - // Maintainer : ijm - // Lastmod : 20110822 (ijm) - // License : Copyright (C) 2011 Ashima Arts. All rights reserved. - // Distributed under the MIT License. See LICENSE file. - // https://github.com/ashima/webgl-noise - // - - vec4 mod289(vec4 x) -{ - return x - floor(x * (1.0 / 289.0)) * 289.0; -} - - vec4 permute(vec4 x) -{ - return mod289(((x*34.0)+1.0)*x); -} - - vec4 taylorInvSqrt(vec4 r) -{ - return 1.79284291400159 - 0.85373472095314 * r; -} - - vec2 fade(vec2 t) { - return t*t*t*(t*(t*6.0-15.0)+10.0); - } - - // Classic Perlin noise - float cnoise(vec2 P) -{ - vec4 Pi = floor(P.xyxy) + vec4(0.0, 0.0, 1.0, 1.0); - vec4 Pf = fract(P.xyxy) - vec4(0.0, 0.0, 1.0, 1.0); - Pi = mod289(Pi); // To avoid truncation effects in permutation - vec4 ix = Pi.xzxz; - vec4 iy = Pi.yyww; - vec4 fx = Pf.xzxz; - vec4 fy = Pf.yyww; - - vec4 i = permute(permute(ix) + iy); - - vec4 gx = fract(i * (1.0 / 41.0)) * 2.0 - 1.0 ; - vec4 gy = abs(gx) - 0.5 ; - vec4 tx = floor(gx + 0.5); - gx = gx - tx; - - vec2 g00 = vec2(gx.x,gy.x); - vec2 g10 = vec2(gx.y,gy.y); - vec2 g01 = vec2(gx.z,gy.z); - vec2 g11 = vec2(gx.w,gy.w); - - vec4 norm = taylorInvSqrt(vec4(dot(g00, g00), dot(g01, g01), dot(g10, g10), dot(g11, g11))); - g00 *= norm.x; - g01 *= norm.y; - g10 *= norm.z; - g11 *= norm.w; - - float n00 = dot(g00, vec2(fx.x, fy.x)); - float n10 = dot(g10, vec2(fx.y, fy.y)); - float n01 = dot(g01, vec2(fx.z, fy.z)); - float n11 = dot(g11, vec2(fx.w, fy.w)); - - vec2 fade_xy = fade(Pf.xy); - vec2 n_x = mix(vec2(n00, n01), vec2(n10, n11), fade_xy.x); - float n_xy = mix(n_x.x, n_x.y, fade_xy.y); - return 2.3 * n_xy; - } - - void main() - { - - float n1 = (cnoise(textureCoordinate * scale) + 1.0) / 2.0; - - vec4 colorDiff = colorFinish - colorStart; - vec4 color = colorStart + colorDiff * n1; - - gl_FragColor = color; - } -); -#endif - - -@implementation GPUImagePerlinNoiseFilter - -@synthesize scale = _scale, colorStart = _colorStart, colorFinish = _colorFinish; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImagePerlinNoiseFragmentShaderString])) - { - return nil; - } - - scaleUniform = [filterProgram uniformIndex:@"scale"]; - - colorStartUniform = [filterProgram uniformIndex:@"colorStart"]; - colorFinishUniform = [filterProgram uniformIndex:@"colorFinish"]; - - [self setScale:8.0]; - - [self setColorStart:(GPUVector4){0.0, 0.0, 0.0, 1.0}]; - [self setColorFinish:(GPUVector4){1.0, 1.0, 1.0, 1.0}]; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setScale:(float)scale -{ - _scale = scale; - - [self setFloat:_scale forUniform:scaleUniform program:filterProgram]; -} - -- (void)setColorStart:(GPUVector4)colorStart -{ - _colorStart = colorStart; - - [self setVec4:_colorStart forUniform:colorStartUniform program:filterProgram]; -} - -- (void)setColorFinish:(GPUVector4)colorFinish -{ - _colorFinish = colorFinish; - - [self setVec4:_colorFinish forUniform:colorFinishUniform program:filterProgram]; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImagePinchDistortionFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImagePinchDistortionFilter.h deleted file mode 100755 index 994774f..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImagePinchDistortionFilter.h +++ /dev/null @@ -1,20 +0,0 @@ -#import "GPUImageFilter.h" - -/** Creates a pinch distortion of the image - */ -@interface GPUImagePinchDistortionFilter : GPUImageFilter -{ - GLint aspectRatioUniform, radiusUniform, centerUniform, scaleUniform; -} - -/** The center about which to apply the distortion, with a default of (0.5, 0.5) - */ -@property(readwrite, nonatomic) CGPoint center; -/** The radius of the distortion, ranging from 0.0 to 2.0, with a default of 1.0 - */ -@property(readwrite, nonatomic) CGFloat radius; -/** The amount of distortion to apply, from -2.0 to 2.0, with a default of 0.5 - */ -@property(readwrite, nonatomic) CGFloat scale; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImagePinchDistortionFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImagePinchDistortionFilter.m deleted file mode 100755 index 76d7909..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImagePinchDistortionFilter.m +++ /dev/null @@ -1,176 +0,0 @@ -#import "GPUImagePinchDistortionFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImagePinchDistortionFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform highp float aspectRatio; - uniform highp vec2 center; - uniform highp float radius; - uniform highp float scale; - - void main() - { - highp vec2 textureCoordinateToUse = vec2(textureCoordinate.x, (textureCoordinate.y * aspectRatio + 0.5 - 0.5 * aspectRatio)); - highp float dist = distance(center, textureCoordinateToUse); - textureCoordinateToUse = textureCoordinate; - - if (dist < radius) - { - textureCoordinateToUse -= center; - highp float percent = 1.0 + ((0.5 - dist) / 0.5) * scale; - textureCoordinateToUse = textureCoordinateToUse * percent; - textureCoordinateToUse += center; - - gl_FragColor = texture2D(inputImageTexture, textureCoordinateToUse ); - } - else - { - gl_FragColor = texture2D(inputImageTexture, textureCoordinate ); - } - } -); -#else -NSString *const kGPUImagePinchDistortionFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform float aspectRatio; - uniform vec2 center; - uniform float radius; - uniform float scale; - - void main() - { - vec2 textureCoordinateToUse = vec2(textureCoordinate.x, (textureCoordinate.y * aspectRatio + 0.5 - 0.5 * aspectRatio)); - float dist = distance(center, textureCoordinateToUse); - textureCoordinateToUse = textureCoordinate; - - if (dist < radius) - { - textureCoordinateToUse -= center; - float percent = 1.0 + ((0.5 - dist) / 0.5) * scale; - textureCoordinateToUse = textureCoordinateToUse * percent; - textureCoordinateToUse += center; - - gl_FragColor = texture2D(inputImageTexture, textureCoordinateToUse ); - } - else - { - gl_FragColor = texture2D(inputImageTexture, textureCoordinate ); - } - } -); -#endif - -@interface GPUImagePinchDistortionFilter () - -- (void)adjustAspectRatio; - -@property (readwrite, nonatomic) CGFloat aspectRatio; - -@end - -@implementation GPUImagePinchDistortionFilter - -@synthesize aspectRatio = _aspectRatio; -@synthesize center = _center; -@synthesize radius = _radius; -@synthesize scale = _scale; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImagePinchDistortionFragmentShaderString])) - { - return nil; - } - - aspectRatioUniform = [filterProgram uniformIndex:@"aspectRatio"]; - radiusUniform = [filterProgram uniformIndex:@"radius"]; - scaleUniform = [filterProgram uniformIndex:@"scale"]; - centerUniform = [filterProgram uniformIndex:@"center"]; - - self.radius = 1.0; - self.scale = 0.5; - self.center = CGPointMake(0.5, 0.5); - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)adjustAspectRatio; -{ - if (GPUImageRotationSwapsWidthAndHeight(inputRotation)) - { - [self setAspectRatio:(inputTextureSize.width / inputTextureSize.height)]; - } - else - { - [self setAspectRatio:(inputTextureSize.height / inputTextureSize.width)]; - } -} - -- (void)forceProcessingAtSize:(CGSize)frameSize; -{ - [super forceProcessingAtSize:frameSize]; - [self adjustAspectRatio]; -} - -- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex; -{ - CGSize oldInputSize = inputTextureSize; - [super setInputSize:newSize atIndex:textureIndex]; - - if ( (!CGSizeEqualToSize(oldInputSize, inputTextureSize)) && (!CGSizeEqualToSize(newSize, CGSizeZero)) ) - { - [self adjustAspectRatio]; - } -} - -- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; -{ - [super setInputRotation:newInputRotation atIndex:textureIndex]; - [self setCenter:self.center]; - [self adjustAspectRatio]; -} - -- (void)setAspectRatio:(CGFloat)newValue; -{ - _aspectRatio = newValue; - - [self setFloat:_aspectRatio forUniform:aspectRatioUniform program:filterProgram]; -} - -- (void)setRadius:(CGFloat)newValue; -{ - _radius = newValue; - - [self setFloat:_radius forUniform:radiusUniform program:filterProgram]; -} - -- (void)setScale:(CGFloat)newValue; -{ - _scale = newValue; - - [self setFloat:_scale forUniform:scaleUniform program:filterProgram]; -} - -- (void)setCenter:(CGPoint)newValue; -{ - _center = newValue; - - CGPoint rotatedPoint = [self rotatedPoint:_center forRotation:inputRotation]; - [self setPoint:rotatedPoint forUniform:centerUniform program:filterProgram]; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImagePixellateFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImagePixellateFilter.h deleted file mode 100755 index d0f6ae0..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImagePixellateFilter.h +++ /dev/null @@ -1,12 +0,0 @@ -#import "GPUImageFilter.h" - -@interface GPUImagePixellateFilter : GPUImageFilter -{ - GLint fractionalWidthOfAPixelUniform, aspectRatioUniform; -} - -// The fractional width of the image to use as a size for the pixels in the resulting image. Values below one pixel width in the source image are ignored. -@property(readwrite, nonatomic) CGFloat fractionalWidthOfAPixel; - - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImagePixellateFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImagePixellateFilter.m deleted file mode 100755 index 88430d0..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImagePixellateFilter.m +++ /dev/null @@ -1,151 +0,0 @@ -#import "GPUImagePixellateFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImagePixellationFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform highp float fractionalWidthOfPixel; - uniform highp float aspectRatio; - - void main() - { - highp vec2 sampleDivisor = vec2(fractionalWidthOfPixel, fractionalWidthOfPixel / aspectRatio); - - highp vec2 samplePos = textureCoordinate - mod(textureCoordinate, sampleDivisor) + 0.5 * sampleDivisor; - gl_FragColor = texture2D(inputImageTexture, samplePos ); - } -); -#else -NSString *const kGPUImagePixellationFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform float fractionalWidthOfPixel; - uniform float aspectRatio; - - void main() - { - vec2 sampleDivisor = vec2(fractionalWidthOfPixel, fractionalWidthOfPixel / aspectRatio); - - vec2 samplePos = textureCoordinate - mod(textureCoordinate, sampleDivisor) + 0.5 * sampleDivisor; - gl_FragColor = texture2D(inputImageTexture, samplePos ); - } -); -#endif - -@interface GPUImagePixellateFilter () - -@property (readwrite, nonatomic) CGFloat aspectRatio; - -- (void)adjustAspectRatio; - -@end - -@implementation GPUImagePixellateFilter - -@synthesize fractionalWidthOfAPixel = _fractionalWidthOfAPixel; -@synthesize aspectRatio = _aspectRatio; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [self initWithFragmentShaderFromString:kGPUImagePixellationFragmentShaderString])) - { - return nil; - } - - return self; -} - -- (id)initWithFragmentShaderFromString:(NSString *)fragmentShaderString; -{ - if (!(self = [super initWithFragmentShaderFromString:fragmentShaderString])) - { - return nil; - } - - fractionalWidthOfAPixelUniform = [filterProgram uniformIndex:@"fractionalWidthOfPixel"]; - aspectRatioUniform = [filterProgram uniformIndex:@"aspectRatio"]; - - self.fractionalWidthOfAPixel = 0.05; - - return self; -} - -- (void)adjustAspectRatio; -{ - if (GPUImageRotationSwapsWidthAndHeight(inputRotation)) - { - [self setAspectRatio:(inputTextureSize.width / inputTextureSize.height)]; - } - else - { - [self setAspectRatio:(inputTextureSize.height / inputTextureSize.width)]; - } -} - -- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; -{ - [super setInputRotation:newInputRotation atIndex:textureIndex]; - [self adjustAspectRatio]; -} - -- (void)forceProcessingAtSize:(CGSize)frameSize; -{ - [super forceProcessingAtSize:frameSize]; - [self adjustAspectRatio]; -} - -- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex; -{ - CGSize oldInputSize = inputTextureSize; - [super setInputSize:newSize atIndex:textureIndex]; - - if ( (!CGSizeEqualToSize(oldInputSize, inputTextureSize)) && (!CGSizeEqualToSize(newSize, CGSizeZero)) ) - { - [self adjustAspectRatio]; - } -} - -#pragma mark - -#pragma mark Accessors - -- (void)setFractionalWidthOfAPixel:(CGFloat)newValue; -{ - CGFloat singlePixelSpacing; - if (inputTextureSize.width != 0.0) - { - singlePixelSpacing = 1.0 / inputTextureSize.width; - } - else - { - singlePixelSpacing = 1.0 / 2048.0; - } - - if (newValue < singlePixelSpacing) - { - _fractionalWidthOfAPixel = singlePixelSpacing; - } - else - { - _fractionalWidthOfAPixel = newValue; - } - - [self setFloat:_fractionalWidthOfAPixel forUniform:fractionalWidthOfAPixelUniform program:filterProgram]; -} - -- (void)setAspectRatio:(CGFloat)newValue; -{ - _aspectRatio = newValue; - - [self setFloat:_aspectRatio forUniform:aspectRatioUniform program:filterProgram]; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImagePixellatePositionFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImagePixellatePositionFilter.h deleted file mode 100755 index 9d304c9..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImagePixellatePositionFilter.h +++ /dev/null @@ -1,17 +0,0 @@ -#import "GPUImageFilter.h" - -@interface GPUImagePixellatePositionFilter : GPUImageFilter -{ - GLint fractionalWidthOfAPixelUniform, aspectRatioUniform, centerUniform, radiusUniform; -} - -// The fractional width of the image to use as a size for the pixels in the resulting image. Values below one pixel width in the source image are ignored. -@property(readwrite, nonatomic) CGFloat fractionalWidthOfAPixel; - -// the center point to start pixelation in texture coordinates, default 0.5, 0.5 -@property(readwrite, nonatomic) CGPoint center; - -// the radius (0.0 - 1.0) in which to pixelate, default 1.0 -@property(readwrite, nonatomic) CGFloat radius; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImagePixellatePositionFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImagePixellatePositionFilter.m deleted file mode 100755 index f1bd09c..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImagePixellatePositionFilter.m +++ /dev/null @@ -1,194 +0,0 @@ -#import "GPUImagePixellatePositionFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImagePixellationPositionFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform highp float fractionalWidthOfPixel; - uniform highp float aspectRatio; - uniform lowp vec2 pixelateCenter; - uniform highp float pixelateRadius; - - void main() - { - highp vec2 textureCoordinateToUse = vec2(textureCoordinate.x, (textureCoordinate.y * aspectRatio + 0.5 - 0.5 * aspectRatio)); - highp float dist = distance(pixelateCenter, textureCoordinateToUse); - - if (dist < pixelateRadius) - { - highp vec2 sampleDivisor = vec2(fractionalWidthOfPixel, fractionalWidthOfPixel / aspectRatio); - highp vec2 samplePos = textureCoordinate - mod(textureCoordinate, sampleDivisor) + 0.5 * sampleDivisor; - gl_FragColor = texture2D(inputImageTexture, samplePos ); - } - else - { - gl_FragColor = texture2D(inputImageTexture, textureCoordinate ); - } - } -); -#else -NSString *const kGPUImagePixellationPositionFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform float fractionalWidthOfPixel; - uniform float aspectRatio; - uniform vec2 pixelateCenter; - uniform float pixelateRadius; - - void main() - { - vec2 textureCoordinateToUse = vec2(textureCoordinate.x, (textureCoordinate.y * aspectRatio + 0.5 - 0.5 * aspectRatio)); - float dist = distance(pixelateCenter, textureCoordinateToUse); - - if (dist < pixelateRadius) - { - vec2 sampleDivisor = vec2(fractionalWidthOfPixel, fractionalWidthOfPixel / aspectRatio); - vec2 samplePos = textureCoordinate - mod(textureCoordinate, sampleDivisor) + 0.5 * sampleDivisor; - gl_FragColor = texture2D(inputImageTexture, samplePos ); - } - else - { - gl_FragColor = texture2D(inputImageTexture, textureCoordinate ); - } - } -); -#endif - -@interface GPUImagePixellatePositionFilter () - -- (void)adjustAspectRatio; - -@property (readwrite, nonatomic) CGFloat aspectRatio; - -@end - -@implementation GPUImagePixellatePositionFilter - -@synthesize fractionalWidthOfAPixel = _fractionalWidthOfAPixel; -@synthesize aspectRatio = _aspectRatio; -@synthesize center = _center; -@synthesize radius = _radius; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [self initWithFragmentShaderFromString:kGPUImagePixellationPositionFragmentShaderString])) - { - return nil; - } - - return self; -} - -- (id)initWithFragmentShaderFromString:(NSString *)fragmentShaderString; -{ - if (!(self = [super initWithFragmentShaderFromString:fragmentShaderString])) - { - return nil; - } - - fractionalWidthOfAPixelUniform = [filterProgram uniformIndex:@"fractionalWidthOfPixel"]; - aspectRatioUniform = [filterProgram uniformIndex:@"aspectRatio"]; - centerUniform = [filterProgram uniformIndex:@"pixelateCenter"]; - radiusUniform = [filterProgram uniformIndex:@"pixelateRadius"]; - - self.fractionalWidthOfAPixel = 0.05; - self.center = CGPointMake(0.5f, 0.5f); - self.radius = 0.25f; - - return self; -} - -- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex; -{ - CGSize oldInputSize = inputTextureSize; - [super setInputSize:newSize atIndex:textureIndex]; - - if ( (!CGSizeEqualToSize(oldInputSize, inputTextureSize)) && (!CGSizeEqualToSize(newSize, CGSizeZero)) ) - { - [self adjustAspectRatio]; - } -} - -#pragma mark - -#pragma mark Accessors - -- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; -{ - [super setInputRotation:newInputRotation atIndex:textureIndex]; - [self setCenter:self.center]; - [self adjustAspectRatio]; -} - -- (void)adjustAspectRatio; -{ - if (GPUImageRotationSwapsWidthAndHeight(inputRotation)) - { - [self setAspectRatio:(inputTextureSize.width / inputTextureSize.height)]; - } - else - { - [self setAspectRatio:(inputTextureSize.height / inputTextureSize.width)]; - } -} - -- (void)forceProcessingAtSize:(CGSize)frameSize; -{ - [super forceProcessingAtSize:frameSize]; - [self adjustAspectRatio]; -} - -- (void)setFractionalWidthOfAPixel:(CGFloat)newValue; -{ - CGFloat singlePixelSpacing; - if (inputTextureSize.width != 0.0) - { - singlePixelSpacing = 1.0 / inputTextureSize.width; - } - else - { - singlePixelSpacing = 1.0 / 2048.0; - } - - if (newValue < singlePixelSpacing) - { - _fractionalWidthOfAPixel = singlePixelSpacing; - } - else - { - _fractionalWidthOfAPixel = newValue; - } - - [self setFloat:_fractionalWidthOfAPixel forUniform:fractionalWidthOfAPixelUniform program:filterProgram]; -} - -- (void)setAspectRatio:(CGFloat)newValue; -{ - _aspectRatio = newValue; - - [self setFloat:_aspectRatio forUniform:aspectRatioUniform program:filterProgram]; -} - -- (void)setCenter:(CGPoint)center -{ - _center = center; - CGPoint rotatedPoint = [self rotatedPoint:center forRotation:inputRotation]; - [self setPoint:rotatedPoint forUniform:centerUniform program:filterProgram]; -} - -- (void)setRadius:(CGFloat)radius -{ - _radius = radius; - - [self setFloat:_radius forUniform:radiusUniform program:filterProgram]; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImagePoissonBlendFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImagePoissonBlendFilter.h deleted file mode 100644 index 58eff22..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImagePoissonBlendFilter.h +++ /dev/null @@ -1,18 +0,0 @@ -#import "GPUImageTwoInputCrossTextureSamplingFilter.h" -#import "GPUImageFilterGroup.h" - -@interface GPUImagePoissonBlendFilter : GPUImageTwoInputCrossTextureSamplingFilter -{ - GLint mixUniform; - - GPUImageFramebuffer *secondOutputFramebuffer; -} - -// Mix ranges from 0.0 (only image 1) to 1.0 (only image 2 gradients), with 1.0 as the normal level -@property(readwrite, nonatomic) CGFloat mix; - -// The number of times to propagate the gradients. -// Crank this up to 100 or even 1000 if you want to get anywhere near convergence. Yes, this will be slow. -@property(readwrite, nonatomic) NSUInteger numIterations; - -@end \ No newline at end of file diff --git a/Example/Pods/GPUImage/framework/Source/GPUImagePoissonBlendFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImagePoissonBlendFilter.m deleted file mode 100644 index 0167e02..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImagePoissonBlendFilter.m +++ /dev/null @@ -1,175 +0,0 @@ -#import "GPUImagePoissonBlendFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImagePoissonBlendFragmentShaderString = SHADER_STRING -( - precision mediump float; - - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - varying vec2 topTextureCoordinate; - varying vec2 bottomTextureCoordinate; - - varying vec2 textureCoordinate2; - varying vec2 leftTextureCoordinate2; - varying vec2 rightTextureCoordinate2; - varying vec2 topTextureCoordinate2; - varying vec2 bottomTextureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - uniform lowp float mixturePercent; - - void main() - { - vec4 centerColor = texture2D(inputImageTexture, textureCoordinate); - vec3 bottomColor = texture2D(inputImageTexture, bottomTextureCoordinate).rgb; - vec3 leftColor = texture2D(inputImageTexture, leftTextureCoordinate).rgb; - vec3 rightColor = texture2D(inputImageTexture, rightTextureCoordinate).rgb; - vec3 topColor = texture2D(inputImageTexture, topTextureCoordinate).rgb; - - vec4 centerColor2 = texture2D(inputImageTexture2, textureCoordinate2); - vec3 bottomColor2 = texture2D(inputImageTexture2, bottomTextureCoordinate2).rgb; - vec3 leftColor2 = texture2D(inputImageTexture2, leftTextureCoordinate2).rgb; - vec3 rightColor2 = texture2D(inputImageTexture2, rightTextureCoordinate2).rgb; - vec3 topColor2 = texture2D(inputImageTexture2, topTextureCoordinate2).rgb; - - vec3 meanColor = (bottomColor + leftColor + rightColor + topColor) / 4.0; - vec3 diffColor = centerColor.rgb - meanColor; - - vec3 meanColor2 = (bottomColor2 + leftColor2 + rightColor2 + topColor2) / 4.0; - vec3 diffColor2 = centerColor2.rgb - meanColor2; - - vec3 gradColor = (meanColor + diffColor2); - - gl_FragColor = vec4(mix(centerColor.rgb, gradColor, centerColor2.a * mixturePercent), centerColor.a); - } -); -#else -NSString *const kGPUImagePoissonBlendFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - varying vec2 topTextureCoordinate; - varying vec2 bottomTextureCoordinate; - - varying vec2 textureCoordinate2; - varying vec2 leftTextureCoordinate2; - varying vec2 rightTextureCoordinate2; - varying vec2 topTextureCoordinate2; - varying vec2 bottomTextureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - uniform float mixturePercent; - - void main() - { - vec4 centerColor = texture2D(inputImageTexture, textureCoordinate); - vec3 bottomColor = texture2D(inputImageTexture, bottomTextureCoordinate).rgb; - vec3 leftColor = texture2D(inputImageTexture, leftTextureCoordinate).rgb; - vec3 rightColor = texture2D(inputImageTexture, rightTextureCoordinate).rgb; - vec3 topColor = texture2D(inputImageTexture, topTextureCoordinate).rgb; - - vec4 centerColor2 = texture2D(inputImageTexture2, textureCoordinate2); - vec3 bottomColor2 = texture2D(inputImageTexture2, bottomTextureCoordinate2).rgb; - vec3 leftColor2 = texture2D(inputImageTexture2, leftTextureCoordinate2).rgb; - vec3 rightColor2 = texture2D(inputImageTexture2, rightTextureCoordinate2).rgb; - vec3 topColor2 = texture2D(inputImageTexture2, topTextureCoordinate2).rgb; - - vec3 meanColor = (bottomColor + leftColor + rightColor + topColor) / 4.0; - vec3 diffColor = centerColor.rgb - meanColor; - - vec3 meanColor2 = (bottomColor2 + leftColor2 + rightColor2 + topColor2) / 4.0; - vec3 diffColor2 = centerColor2.rgb - meanColor2; - - vec3 gradColor = (meanColor + diffColor2); - - gl_FragColor = vec4(mix(centerColor.rgb, gradColor, centerColor2.a * mixturePercent), centerColor.a); - } -); -#endif - -@implementation GPUImagePoissonBlendFilter - -@synthesize mix = _mix; -@synthesize numIterations = _numIterations; - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImagePoissonBlendFragmentShaderString])) - { - return nil; - } - - mixUniform = [filterProgram uniformIndex:@"mixturePercent"]; - self.mix = 0.5; - - self.numIterations = 10; - - return self; -} - -- (void)setMix:(CGFloat)newValue; -{ - _mix = newValue; - - [self setFloat:_mix forUniform:mixUniform program:filterProgram]; -} - -//- (void)setOutputFBO; -//{ -// if (self.numIterations % 2 == 1) { -// [self setSecondFilterFBO]; -// } else { -// [self setFilterFBO]; -// } -//} - -- (void)renderToTextureWithVertices:(const GLfloat *)vertices textureCoordinates:(const GLfloat *)textureCoordinates; -{ - // Run the first stage of the two-pass filter - [GPUImageContext setActiveShaderProgram:filterProgram]; - - [super renderToTextureWithVertices:vertices textureCoordinates:textureCoordinates]; - - for (int pass = 1; pass < self.numIterations; pass++) { - - if (pass % 2 == 0) { - - [GPUImageContext setActiveShaderProgram:filterProgram]; - - // TODO: This will over-unlock the incoming framebuffer - [super renderToTextureWithVertices:vertices textureCoordinates:[[self class] textureCoordinatesForRotation:kGPUImageNoRotation]]; - } else { - // Run the second stage of the two-pass filter - secondOutputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:[self sizeOfFBO] textureOptions:self.outputTextureOptions onlyTexture:NO]; - [secondOutputFramebuffer activateFramebuffer]; - - [GPUImageContext setActiveShaderProgram:filterProgram]; - - glClearColor(backgroundColorRed, backgroundColorGreen, backgroundColorBlue, backgroundColorAlpha); - glClear(GL_COLOR_BUFFER_BIT); - - glActiveTexture(GL_TEXTURE2); - glBindTexture(GL_TEXTURE_2D, [outputFramebuffer texture]); - glUniform1i(filterInputTextureUniform, 2); - - glActiveTexture(GL_TEXTURE3); - glBindTexture(GL_TEXTURE_2D, [secondInputFramebuffer texture]); - glUniform1i(filterInputTextureUniform2, 3); - - glVertexAttribPointer(filterPositionAttribute, 2, GL_FLOAT, 0, 0, vertices); - glVertexAttribPointer(filterTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, [[self class] textureCoordinatesForRotation:kGPUImageNoRotation]); - glVertexAttribPointer(filterSecondTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, [[self class] textureCoordinatesForRotation:inputRotation2]); - - glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); - } - } -} - -@end \ No newline at end of file diff --git a/Example/Pods/GPUImage/framework/Source/GPUImagePolarPixellateFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImagePolarPixellateFilter.h deleted file mode 100755 index 3de6a4d..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImagePolarPixellateFilter.h +++ /dev/null @@ -1,13 +0,0 @@ -#import "GPUImageFilter.h" - -@interface GPUImagePolarPixellateFilter : GPUImageFilter { - GLint centerUniform, pixelSizeUniform; -} - -// The center about which to apply the distortion, with a default of (0.5, 0.5) -@property(readwrite, nonatomic) CGPoint center; -// The amount of distortion to apply, from (-2.0, -2.0) to (2.0, 2.0), with a default of (0.05, 0.05) -@property(readwrite, nonatomic) CGSize pixelSize; - - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImagePolarPixellateFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImagePolarPixellateFilter.m deleted file mode 100755 index 5677db4..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImagePolarPixellateFilter.m +++ /dev/null @@ -1,128 +0,0 @@ -#import "GPUImagePolarPixellateFilter.h" - -// @fattjake based on vid by toneburst - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImagePolarPixellateFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform highp vec2 center; - uniform highp vec2 pixelSize; - - - void main() - { - highp vec2 normCoord = 2.0 * textureCoordinate - 1.0; - highp vec2 normCenter = 2.0 * center - 1.0; - - normCoord -= normCenter; - - highp float r = length(normCoord); // to polar coords - highp float phi = atan(normCoord.y, normCoord.x); // to polar coords - - r = r - mod(r, pixelSize.x) + 0.03; - phi = phi - mod(phi, pixelSize.y); - - normCoord.x = r * cos(phi); - normCoord.y = r * sin(phi); - - normCoord += normCenter; - - mediump vec2 textureCoordinateToUse = normCoord / 2.0 + 0.5; - - gl_FragColor = texture2D(inputImageTexture, textureCoordinateToUse ); - - } -); -#else -NSString *const kGPUImagePolarPixellateFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform vec2 center; - uniform vec2 pixelSize; - - - void main() - { - vec2 normCoord = 2.0 * textureCoordinate - 1.0; - vec2 normCenter = 2.0 * center - 1.0; - - normCoord -= normCenter; - - float r = length(normCoord); // to polar coords - float phi = atan(normCoord.y, normCoord.x); // to polar coords - - r = r - mod(r, pixelSize.x) + 0.03; - phi = phi - mod(phi, pixelSize.y); - - normCoord.x = r * cos(phi); - normCoord.y = r * sin(phi); - - normCoord += normCenter; - - vec2 textureCoordinateToUse = normCoord / 2.0 + 0.5; - - gl_FragColor = texture2D(inputImageTexture, textureCoordinateToUse ); - - } -); -#endif - - -@implementation GPUImagePolarPixellateFilter - -@synthesize center = _center; - -@synthesize pixelSize = _pixelSize; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImagePolarPixellateFragmentShaderString])) - { - return nil; - } - - pixelSizeUniform = [filterProgram uniformIndex:@"pixelSize"]; - centerUniform = [filterProgram uniformIndex:@"center"]; - - - self.pixelSize = CGSizeMake(0.05, 0.05); - self.center = CGPointMake(0.5, 0.5); - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; -{ - [super setInputRotation:newInputRotation atIndex:textureIndex]; - [self setCenter:self.center]; -} - -- (void)setPixelSize:(CGSize)pixelSize -{ - _pixelSize = pixelSize; - - [self setSize:_pixelSize forUniform:pixelSizeUniform program:filterProgram]; -} - -- (void)setCenter:(CGPoint)newValue; -{ - _center = newValue; - - CGPoint rotatedPoint = [self rotatedPoint:_center forRotation:inputRotation]; - [self setPoint:rotatedPoint forUniform:centerUniform program:filterProgram]; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImagePolkaDotFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImagePolkaDotFilter.h deleted file mode 100644 index 369b773..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImagePolkaDotFilter.h +++ /dev/null @@ -1,10 +0,0 @@ -#import "GPUImagePixellateFilter.h" - -@interface GPUImagePolkaDotFilter : GPUImagePixellateFilter -{ - GLint dotScalingUniform; -} - -@property(readwrite, nonatomic) CGFloat dotScaling; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImagePolkaDotFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImagePolkaDotFilter.m deleted file mode 100644 index a439a04..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImagePolkaDotFilter.m +++ /dev/null @@ -1,85 +0,0 @@ -#import "GPUImagePolkaDotFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImagePolkaDotFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform highp float fractionalWidthOfPixel; - uniform highp float aspectRatio; - uniform highp float dotScaling; - - void main() - { - highp vec2 sampleDivisor = vec2(fractionalWidthOfPixel, fractionalWidthOfPixel / aspectRatio); - - highp vec2 samplePos = textureCoordinate - mod(textureCoordinate, sampleDivisor) + 0.5 * sampleDivisor; - highp vec2 textureCoordinateToUse = vec2(textureCoordinate.x, (textureCoordinate.y * aspectRatio + 0.5 - 0.5 * aspectRatio)); - highp vec2 adjustedSamplePos = vec2(samplePos.x, (samplePos.y * aspectRatio + 0.5 - 0.5 * aspectRatio)); - highp float distanceFromSamplePoint = distance(adjustedSamplePos, textureCoordinateToUse); - lowp float checkForPresenceWithinDot = step(distanceFromSamplePoint, (fractionalWidthOfPixel * 0.5) * dotScaling); - - lowp vec4 inputColor = texture2D(inputImageTexture, samplePos); - - gl_FragColor = vec4(inputColor.rgb * checkForPresenceWithinDot, inputColor.a); - } -); -#else -NSString *const kGPUImagePolkaDotFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform float fractionalWidthOfPixel; - uniform float aspectRatio; - uniform float dotScaling; - - void main() - { - vec2 sampleDivisor = vec2(fractionalWidthOfPixel, fractionalWidthOfPixel / aspectRatio); - - vec2 samplePos = textureCoordinate - mod(textureCoordinate, sampleDivisor) + 0.5 * sampleDivisor; - vec2 textureCoordinateToUse = vec2(textureCoordinate.x, (textureCoordinate.y * aspectRatio + 0.5 - 0.5 * aspectRatio)); - vec2 adjustedSamplePos = vec2(samplePos.x, (samplePos.y * aspectRatio + 0.5 - 0.5 * aspectRatio)); - float distanceFromSamplePoint = distance(adjustedSamplePos, textureCoordinateToUse); - float checkForPresenceWithinDot = step(distanceFromSamplePoint, (fractionalWidthOfPixel * 0.5) * dotScaling); - - vec4 inputColor = texture2D(inputImageTexture, samplePos); - - gl_FragColor = vec4(inputColor.rgb * checkForPresenceWithinDot, inputColor.a); - } -); -#endif - -@implementation GPUImagePolkaDotFilter - -@synthesize dotScaling = _dotScaling; - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImagePolkaDotFragmentShaderString])) - { - return nil; - } - - dotScalingUniform = [filterProgram uniformIndex:@"dotScaling"]; - - self.dotScaling = 0.90; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setDotScaling:(CGFloat)newValue; -{ - _dotScaling = newValue; - - [self setFloat:_dotScaling forUniform:dotScalingUniform program:filterProgram]; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImagePosterizeFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImagePosterizeFilter.h deleted file mode 100755 index 6f655b3..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImagePosterizeFilter.h +++ /dev/null @@ -1,14 +0,0 @@ -#import "GPUImageFilter.h" - -/** This reduces the color dynamic range into the number of steps specified, leading to a cartoon-like simple shading of the image. - */ -@interface GPUImagePosterizeFilter : GPUImageFilter -{ - GLint colorLevelsUniform; -} - -/** The number of color levels to reduce the image space to. This ranges from 1 to 256, with a default of 10. - */ -@property(readwrite, nonatomic) NSUInteger colorLevels; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImagePosterizeFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImagePosterizeFilter.m deleted file mode 100755 index a438cea..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImagePosterizeFilter.m +++ /dev/null @@ -1,66 +0,0 @@ -#import "GPUImagePosterizeFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImagePosterizeFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform highp float colorLevels; - - void main() - { - highp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - - gl_FragColor = floor((textureColor * colorLevels) + vec4(0.5)) / colorLevels; - } -); -#else -NSString *const kGPUImagePosterizeFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform float colorLevels; - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - - gl_FragColor = floor((textureColor * colorLevels) + vec4(0.5)) / colorLevels; - } -); -#endif - -@implementation GPUImagePosterizeFilter - -@synthesize colorLevels = _colorLevels; - -#pragma mark - -#pragma mark Initialization - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImagePosterizeFragmentShaderString])) - { - return nil; - } - - colorLevelsUniform = [filterProgram uniformIndex:@"colorLevels"]; - self.colorLevels = 10; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setColorLevels:(NSUInteger)newValue; -{ - _colorLevels = newValue; - - [self setFloat:_colorLevels forUniform:colorLevelsUniform program:filterProgram]; -} - -@end - diff --git a/Example/Pods/GPUImage/framework/Source/GPUImagePrewittEdgeDetectionFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImagePrewittEdgeDetectionFilter.h deleted file mode 100755 index 141f8c5..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImagePrewittEdgeDetectionFilter.h +++ /dev/null @@ -1,5 +0,0 @@ -#import "GPUImageSobelEdgeDetectionFilter.h" - -@interface GPUImagePrewittEdgeDetectionFilter : GPUImageSobelEdgeDetectionFilter - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImagePrewittEdgeDetectionFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImagePrewittEdgeDetectionFilter.m deleted file mode 100755 index a990693..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImagePrewittEdgeDetectionFilter.m +++ /dev/null @@ -1,97 +0,0 @@ -#import "GPUImagePrewittEdgeDetectionFilter.h" - -@implementation GPUImagePrewittEdgeDetectionFilter - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImagePrewittFragmentShaderString = SHADER_STRING -( - precision highp float; - - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - uniform sampler2D inputImageTexture; - uniform float edgeStrength; - - void main() - { - float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; - float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r; - float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r; - float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; - float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r; - float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r; - float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r; - float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r; - float h = -topLeftIntensity - topIntensity - topRightIntensity + bottomLeftIntensity + bottomIntensity + bottomRightIntensity; - float v = -bottomLeftIntensity - leftIntensity - topLeftIntensity + bottomRightIntensity + rightIntensity + topRightIntensity; - - float mag = length(vec2(h, v)) * edgeStrength; - - gl_FragColor = vec4(vec3(mag), 1.0); - } -); -#else -NSString *const kGPUImagePrewittFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - uniform sampler2D inputImageTexture; - uniform float edgeStrength; - - void main() - { - float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; - float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r; - float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r; - float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; - float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r; - float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r; - float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r; - float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r; - float h = -topLeftIntensity - topIntensity - topRightIntensity + bottomLeftIntensity + bottomIntensity + bottomRightIntensity; - float v = -bottomLeftIntensity - leftIntensity - topLeftIntensity + bottomRightIntensity + rightIntensity + topRightIntensity; - - float mag = length(vec2(h, v)) * edgeStrength; - - gl_FragColor = vec4(vec3(mag), 1.0); - } -); -#endif - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [self initWithFragmentShaderFromString:kGPUImagePrewittFragmentShaderString])) - { - return nil; - } - - self.edgeStrength = 1.0; - - return self; -} - - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageRGBClosingFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageRGBClosingFilter.h deleted file mode 100644 index 08d13f8..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageRGBClosingFilter.h +++ /dev/null @@ -1,18 +0,0 @@ -#import "GPUImageFilterGroup.h" - -@class GPUImageRGBErosionFilter; -@class GPUImageRGBDilationFilter; - -// A filter that first performs a dilation on each color channel of an image, followed by an erosion of the same radius. -// This helps to filter out smaller dark elements. - -@interface GPUImageRGBClosingFilter : GPUImageFilterGroup -{ - GPUImageRGBErosionFilter *erosionFilter; - GPUImageRGBDilationFilter *dilationFilter; -} - -- (id)initWithRadius:(NSUInteger)radius; - - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageRGBClosingFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageRGBClosingFilter.m deleted file mode 100644 index c5bb1c8..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageRGBClosingFilter.m +++ /dev/null @@ -1,41 +0,0 @@ -#import "GPUImageRGBClosingFilter.h" -#import "GPUImageRGBErosionFilter.h" -#import "GPUImageRGBDilationFilter.h" - -@implementation GPUImageRGBClosingFilter - -- (id)init; -{ - if (!(self = [self initWithRadius:1])) - { - return nil; - } - - return self; -} - -- (id)initWithRadius:(NSUInteger)radius; -{ - if (!(self = [super init])) - { - return nil; - } - - // First pass: dilation - dilationFilter = [[GPUImageRGBDilationFilter alloc] initWithRadius:radius]; - [self addFilter:dilationFilter]; - - // Second pass: erosion - erosionFilter = [[GPUImageRGBErosionFilter alloc] initWithRadius:radius]; - [self addFilter:erosionFilter]; - - [dilationFilter addTarget:erosionFilter]; - - self.initialFilters = [NSArray arrayWithObjects:dilationFilter, nil]; - self.terminalFilter = erosionFilter; - - return self; -} - - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageRGBDilationFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageRGBDilationFilter.h deleted file mode 100644 index 68276f8..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageRGBDilationFilter.h +++ /dev/null @@ -1,11 +0,0 @@ -#import "GPUImageTwoPassTextureSamplingFilter.h" - -// For each pixel, this sets it to the maximum value of each color channel in a rectangular neighborhood extending out dilationRadius pixels from the center. -// This extends out brighter colors, and can be used for abstraction of color images. - -@interface GPUImageRGBDilationFilter : GPUImageTwoPassTextureSamplingFilter - -// Acceptable values for dilationRadius, which sets the distance in pixels to sample out from the center, are 1, 2, 3, and 4. -- (id)initWithRadius:(NSUInteger)dilationRadius; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageRGBDilationFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageRGBDilationFilter.m deleted file mode 100644 index 9702c78..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageRGBDilationFilter.m +++ /dev/null @@ -1,306 +0,0 @@ -#import "GPUImageRGBDilationFilter.h" -#import "GPUImageDilationFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageRGBDilationRadiusOneFragmentShaderString = SHADER_STRING -( - precision highp float; - - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - lowp vec4 centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate); - lowp vec4 oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate); - lowp vec4 oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate); - - lowp vec4 maxValue = max(centerIntensity, oneStepPositiveIntensity); - - gl_FragColor = max(maxValue, oneStepNegativeIntensity); - } -); - -NSString *const kGPUImageRGBDilationRadiusTwoFragmentShaderString = SHADER_STRING -( - precision highp float; - - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - varying vec2 twoStepsPositiveTextureCoordinate; - varying vec2 twoStepsNegativeTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - lowp vec4 centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate); - lowp vec4 oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate); - lowp vec4 oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate); - lowp vec4 twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate); - lowp vec4 twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate); - - lowp vec4 maxValue = max(centerIntensity, oneStepPositiveIntensity); - maxValue = max(maxValue, oneStepNegativeIntensity); - maxValue = max(maxValue, twoStepsPositiveIntensity); - maxValue = max(maxValue, twoStepsNegativeIntensity); - - gl_FragColor = max(maxValue, twoStepsNegativeIntensity); - } -); - -NSString *const kGPUImageRGBDilationRadiusThreeFragmentShaderString = SHADER_STRING -( - precision highp float; - - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - varying vec2 twoStepsPositiveTextureCoordinate; - varying vec2 twoStepsNegativeTextureCoordinate; - varying vec2 threeStepsPositiveTextureCoordinate; - varying vec2 threeStepsNegativeTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - lowp vec4 centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate); - lowp vec4 oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate); - lowp vec4 oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate); - lowp vec4 twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate); - lowp vec4 twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate); - lowp vec4 threeStepsPositiveIntensity = texture2D(inputImageTexture, threeStepsPositiveTextureCoordinate); - lowp vec4 threeStepsNegativeIntensity = texture2D(inputImageTexture, threeStepsNegativeTextureCoordinate); - - lowp vec4 maxValue = max(centerIntensity, oneStepPositiveIntensity); - maxValue = max(maxValue, oneStepNegativeIntensity); - maxValue = max(maxValue, twoStepsPositiveIntensity); - maxValue = max(maxValue, twoStepsNegativeIntensity); - maxValue = max(maxValue, threeStepsPositiveIntensity); - - gl_FragColor = max(maxValue, threeStepsNegativeIntensity); - } -); - -NSString *const kGPUImageRGBDilationRadiusFourFragmentShaderString = SHADER_STRING -( - precision highp float; - - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - varying vec2 twoStepsPositiveTextureCoordinate; - varying vec2 twoStepsNegativeTextureCoordinate; - varying vec2 threeStepsPositiveTextureCoordinate; - varying vec2 threeStepsNegativeTextureCoordinate; - varying vec2 fourStepsPositiveTextureCoordinate; - varying vec2 fourStepsNegativeTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - lowp vec4 centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate); - lowp vec4 oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate); - lowp vec4 oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate); - lowp vec4 twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate); - lowp vec4 twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate); - lowp vec4 threeStepsPositiveIntensity = texture2D(inputImageTexture, threeStepsPositiveTextureCoordinate); - lowp vec4 threeStepsNegativeIntensity = texture2D(inputImageTexture, threeStepsNegativeTextureCoordinate); - lowp vec4 fourStepsPositiveIntensity = texture2D(inputImageTexture, fourStepsPositiveTextureCoordinate); - lowp vec4 fourStepsNegativeIntensity = texture2D(inputImageTexture, fourStepsNegativeTextureCoordinate); - - lowp vec4 maxValue = max(centerIntensity, oneStepPositiveIntensity); - maxValue = max(maxValue, oneStepNegativeIntensity); - maxValue = max(maxValue, twoStepsPositiveIntensity); - maxValue = max(maxValue, twoStepsNegativeIntensity); - maxValue = max(maxValue, threeStepsPositiveIntensity); - maxValue = max(maxValue, threeStepsNegativeIntensity); - maxValue = max(maxValue, fourStepsPositiveIntensity); - - gl_FragColor = max(maxValue, fourStepsNegativeIntensity); - } -); -#else -NSString *const kGPUImageRGBDilationRadiusOneFragmentShaderString = SHADER_STRING -( - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - vec4 centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate); - vec4 oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate); - vec4 oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate); - - vec4 maxValue = max(centerIntensity, oneStepPositiveIntensity); - - gl_FragColor = max(maxValue, oneStepNegativeIntensity); - } - ); - -NSString *const kGPUImageRGBDilationRadiusTwoFragmentShaderString = SHADER_STRING -( - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - varying vec2 twoStepsPositiveTextureCoordinate; - varying vec2 twoStepsNegativeTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - vec4 centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate); - vec4 oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate); - vec4 oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate); - vec4 twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate); - vec4 twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate); - - vec4 maxValue = max(centerIntensity, oneStepPositiveIntensity); - maxValue = max(maxValue, oneStepNegativeIntensity); - maxValue = max(maxValue, twoStepsPositiveIntensity); - maxValue = max(maxValue, twoStepsNegativeIntensity); - - gl_FragColor = max(maxValue, twoStepsNegativeIntensity); - } - ); - -NSString *const kGPUImageRGBDilationRadiusThreeFragmentShaderString = SHADER_STRING -( - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - varying vec2 twoStepsPositiveTextureCoordinate; - varying vec2 twoStepsNegativeTextureCoordinate; - varying vec2 threeStepsPositiveTextureCoordinate; - varying vec2 threeStepsNegativeTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - vec4 centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate); - vec4 oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate); - vec4 oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate); - vec4 twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate); - vec4 twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate); - vec4 threeStepsPositiveIntensity = texture2D(inputImageTexture, threeStepsPositiveTextureCoordinate); - vec4 threeStepsNegativeIntensity = texture2D(inputImageTexture, threeStepsNegativeTextureCoordinate); - - vec4 maxValue = max(centerIntensity, oneStepPositiveIntensity); - maxValue = max(maxValue, oneStepNegativeIntensity); - maxValue = max(maxValue, twoStepsPositiveIntensity); - maxValue = max(maxValue, twoStepsNegativeIntensity); - maxValue = max(maxValue, threeStepsPositiveIntensity); - - gl_FragColor = max(maxValue, threeStepsNegativeIntensity); - } -); - -NSString *const kGPUImageRGBDilationRadiusFourFragmentShaderString = SHADER_STRING -( - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - varying vec2 twoStepsPositiveTextureCoordinate; - varying vec2 twoStepsNegativeTextureCoordinate; - varying vec2 threeStepsPositiveTextureCoordinate; - varying vec2 threeStepsNegativeTextureCoordinate; - varying vec2 fourStepsPositiveTextureCoordinate; - varying vec2 fourStepsNegativeTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - vec4 centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate); - vec4 oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate); - vec4 oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate); - vec4 twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate); - vec4 twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate); - vec4 threeStepsPositiveIntensity = texture2D(inputImageTexture, threeStepsPositiveTextureCoordinate); - vec4 threeStepsNegativeIntensity = texture2D(inputImageTexture, threeStepsNegativeTextureCoordinate); - vec4 fourStepsPositiveIntensity = texture2D(inputImageTexture, fourStepsPositiveTextureCoordinate); - vec4 fourStepsNegativeIntensity = texture2D(inputImageTexture, fourStepsNegativeTextureCoordinate); - - vec4 maxValue = max(centerIntensity, oneStepPositiveIntensity); - maxValue = max(maxValue, oneStepNegativeIntensity); - maxValue = max(maxValue, twoStepsPositiveIntensity); - maxValue = max(maxValue, twoStepsNegativeIntensity); - maxValue = max(maxValue, threeStepsPositiveIntensity); - maxValue = max(maxValue, threeStepsNegativeIntensity); - maxValue = max(maxValue, fourStepsPositiveIntensity); - - gl_FragColor = max(maxValue, fourStepsNegativeIntensity); - } -); -#endif - -@implementation GPUImageRGBDilationFilter - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)initWithRadius:(NSUInteger)dilationRadius; -{ - NSString *fragmentShaderForThisRadius = nil; - NSString *vertexShaderForThisRadius = nil; - - switch (dilationRadius) - { - case 0: - case 1: - { - vertexShaderForThisRadius = kGPUImageDilationRadiusOneVertexShaderString; - fragmentShaderForThisRadius = kGPUImageRGBDilationRadiusOneFragmentShaderString; - }; break; - case 2: - { - vertexShaderForThisRadius = kGPUImageDilationRadiusTwoVertexShaderString; - fragmentShaderForThisRadius = kGPUImageRGBDilationRadiusTwoFragmentShaderString; - }; break; - case 3: - { - vertexShaderForThisRadius = kGPUImageDilationRadiusThreeVertexShaderString; - fragmentShaderForThisRadius = kGPUImageRGBDilationRadiusThreeFragmentShaderString; - }; break; - case 4: - { - vertexShaderForThisRadius = kGPUImageDilationRadiusFourVertexShaderString; - fragmentShaderForThisRadius = kGPUImageRGBDilationRadiusFourFragmentShaderString; - }; break; - default: - { - vertexShaderForThisRadius = kGPUImageDilationRadiusFourVertexShaderString; - fragmentShaderForThisRadius = kGPUImageRGBDilationRadiusFourFragmentShaderString; - }; break; - } - - if (!(self = [super initWithFirstStageVertexShaderFromString:vertexShaderForThisRadius firstStageFragmentShaderFromString:fragmentShaderForThisRadius secondStageVertexShaderFromString:vertexShaderForThisRadius secondStageFragmentShaderFromString:fragmentShaderForThisRadius])) - { - return nil; - } - - return self; -} - -- (id)init; -{ - if (!(self = [self initWithRadius:1])) - { - return nil; - } - - return self; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageRGBErosionFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageRGBErosionFilter.h deleted file mode 100644 index 5979cb7..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageRGBErosionFilter.h +++ /dev/null @@ -1,11 +0,0 @@ -#import "GPUImageTwoPassTextureSamplingFilter.h" - -// For each pixel, this sets it to the minimum value of each color channel in a rectangular neighborhood extending out dilationRadius pixels from the center. -// This extends out dark features, and can be used for abstraction of color images. - -@interface GPUImageRGBErosionFilter : GPUImageTwoPassTextureSamplingFilter - -// Acceptable values for erosionRadius, which sets the distance in pixels to sample out from the center, are 1, 2, 3, and 4. -- (id)initWithRadius:(NSUInteger)erosionRadius; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageRGBErosionFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageRGBErosionFilter.m deleted file mode 100644 index 91e5f33..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageRGBErosionFilter.m +++ /dev/null @@ -1,304 +0,0 @@ -#import "GPUImageRGBErosionFilter.h" -#import "GPUImageDilationFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageRGBErosionRadiusOneFragmentShaderString = SHADER_STRING -( - precision highp float; - - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - lowp vec4 centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate); - lowp vec4 oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate); - lowp vec4 oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate); - - lowp vec4 minValue = min(centerIntensity, oneStepPositiveIntensity); - - gl_FragColor = min(minValue, oneStepNegativeIntensity); - } -); - -NSString *const kGPUImageRGBErosionRadiusTwoFragmentShaderString = SHADER_STRING -( - precision highp float; - - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - varying vec2 twoStepsPositiveTextureCoordinate; - varying vec2 twoStepsNegativeTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - lowp vec4 centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate); - lowp vec4 oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate); - lowp vec4 oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate); - lowp vec4 twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate); - lowp vec4 twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate); - - lowp vec4 minValue = min(centerIntensity, oneStepPositiveIntensity); - minValue = min(minValue, oneStepNegativeIntensity); - minValue = min(minValue, twoStepsPositiveIntensity); - - gl_FragColor = min(minValue, twoStepsNegativeIntensity); - } - ); - -NSString *const kGPUImageRGBErosionRadiusThreeFragmentShaderString = SHADER_STRING -( - precision highp float; - - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - varying vec2 twoStepsPositiveTextureCoordinate; - varying vec2 twoStepsNegativeTextureCoordinate; - varying vec2 threeStepsPositiveTextureCoordinate; - varying vec2 threeStepsNegativeTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - lowp vec4 centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate); - lowp vec4 oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate); - lowp vec4 oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate); - lowp vec4 twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate); - lowp vec4 twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate); - lowp vec4 threeStepsPositiveIntensity = texture2D(inputImageTexture, threeStepsPositiveTextureCoordinate); - lowp vec4 threeStepsNegativeIntensity = texture2D(inputImageTexture, threeStepsNegativeTextureCoordinate); - - lowp vec4 minValue = min(centerIntensity, oneStepPositiveIntensity); - minValue = min(minValue, oneStepNegativeIntensity); - minValue = min(minValue, twoStepsPositiveIntensity); - minValue = min(minValue, twoStepsNegativeIntensity); - minValue = min(minValue, threeStepsPositiveIntensity); - - gl_FragColor = min(minValue, threeStepsNegativeIntensity); - } - ); - -NSString *const kGPUImageRGBErosionRadiusFourFragmentShaderString = SHADER_STRING -( - precision highp float; - - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - varying vec2 twoStepsPositiveTextureCoordinate; - varying vec2 twoStepsNegativeTextureCoordinate; - varying vec2 threeStepsPositiveTextureCoordinate; - varying vec2 threeStepsNegativeTextureCoordinate; - varying vec2 fourStepsPositiveTextureCoordinate; - varying vec2 fourStepsNegativeTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - lowp vec4 centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate); - lowp vec4 oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate); - lowp vec4 oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate); - lowp vec4 twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate); - lowp vec4 twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate); - lowp vec4 threeStepsPositiveIntensity = texture2D(inputImageTexture, threeStepsPositiveTextureCoordinate); - lowp vec4 threeStepsNegativeIntensity = texture2D(inputImageTexture, threeStepsNegativeTextureCoordinate); - lowp vec4 fourStepsPositiveIntensity = texture2D(inputImageTexture, fourStepsPositiveTextureCoordinate); - lowp vec4 fourStepsNegativeIntensity = texture2D(inputImageTexture, fourStepsNegativeTextureCoordinate); - - lowp vec4 minValue = min(centerIntensity, oneStepPositiveIntensity); - minValue = min(minValue, oneStepNegativeIntensity); - minValue = min(minValue, twoStepsPositiveIntensity); - minValue = min(minValue, twoStepsNegativeIntensity); - minValue = min(minValue, threeStepsPositiveIntensity); - minValue = min(minValue, threeStepsNegativeIntensity); - minValue = min(minValue, fourStepsPositiveIntensity); - - gl_FragColor = min(minValue, fourStepsNegativeIntensity); - } -); -#else -NSString *const kGPUImageRGBErosionRadiusOneFragmentShaderString = SHADER_STRING -( - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - vec4 centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate); - vec4 oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate); - vec4 oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate); - - vec4 minValue = min(centerIntensity, oneStepPositiveIntensity); - - gl_FragColor = min(minValue, oneStepNegativeIntensity); - } -); - -NSString *const kGPUImageRGBErosionRadiusTwoFragmentShaderString = SHADER_STRING -( - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - varying vec2 twoStepsPositiveTextureCoordinate; - varying vec2 twoStepsNegativeTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - vec4 centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate); - vec4 oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate); - vec4 oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate); - vec4 twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate); - vec4 twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate); - - vec4 minValue = min(centerIntensity, oneStepPositiveIntensity); - minValue = min(minValue, oneStepNegativeIntensity); - minValue = min(minValue, twoStepsPositiveIntensity); - - gl_FragColor = min(minValue, twoStepsNegativeIntensity); - } -); - -NSString *const kGPUImageRGBErosionRadiusThreeFragmentShaderString = SHADER_STRING -( - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - varying vec2 twoStepsPositiveTextureCoordinate; - varying vec2 twoStepsNegativeTextureCoordinate; - varying vec2 threeStepsPositiveTextureCoordinate; - varying vec2 threeStepsNegativeTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - vec4 centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate); - vec4 oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate); - vec4 oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate); - vec4 twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate); - vec4 twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate); - vec4 threeStepsPositiveIntensity = texture2D(inputImageTexture, threeStepsPositiveTextureCoordinate); - vec4 threeStepsNegativeIntensity = texture2D(inputImageTexture, threeStepsNegativeTextureCoordinate); - - vec4 minValue = min(centerIntensity, oneStepPositiveIntensity); - minValue = min(minValue, oneStepNegativeIntensity); - minValue = min(minValue, twoStepsPositiveIntensity); - minValue = min(minValue, twoStepsNegativeIntensity); - minValue = min(minValue, threeStepsPositiveIntensity); - - gl_FragColor = min(minValue, threeStepsNegativeIntensity); - } -); - -NSString *const kGPUImageRGBErosionRadiusFourFragmentShaderString = SHADER_STRING -( - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - varying vec2 twoStepsPositiveTextureCoordinate; - varying vec2 twoStepsNegativeTextureCoordinate; - varying vec2 threeStepsPositiveTextureCoordinate; - varying vec2 threeStepsNegativeTextureCoordinate; - varying vec2 fourStepsPositiveTextureCoordinate; - varying vec2 fourStepsNegativeTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - vec4 centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate); - vec4 oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate); - vec4 oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate); - vec4 twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate); - vec4 twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate); - vec4 threeStepsPositiveIntensity = texture2D(inputImageTexture, threeStepsPositiveTextureCoordinate); - vec4 threeStepsNegativeIntensity = texture2D(inputImageTexture, threeStepsNegativeTextureCoordinate); - vec4 fourStepsPositiveIntensity = texture2D(inputImageTexture, fourStepsPositiveTextureCoordinate); - vec4 fourStepsNegativeIntensity = texture2D(inputImageTexture, fourStepsNegativeTextureCoordinate); - - vec4 minValue = min(centerIntensity, oneStepPositiveIntensity); - minValue = min(minValue, oneStepNegativeIntensity); - minValue = min(minValue, twoStepsPositiveIntensity); - minValue = min(minValue, twoStepsNegativeIntensity); - minValue = min(minValue, threeStepsPositiveIntensity); - minValue = min(minValue, threeStepsNegativeIntensity); - minValue = min(minValue, fourStepsPositiveIntensity); - - gl_FragColor = min(minValue, fourStepsNegativeIntensity); - } -); -#endif - -@implementation GPUImageRGBErosionFilter - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)initWithRadius:(NSUInteger)erosionRadius; -{ - NSString *fragmentShaderForThisRadius = nil; - NSString *vertexShaderForThisRadius = nil; - - switch (erosionRadius) - { - case 0: - case 1: - { - vertexShaderForThisRadius = kGPUImageDilationRadiusOneVertexShaderString; - fragmentShaderForThisRadius = kGPUImageRGBErosionRadiusOneFragmentShaderString; - }; break; - case 2: - { - vertexShaderForThisRadius = kGPUImageDilationRadiusTwoVertexShaderString; - fragmentShaderForThisRadius = kGPUImageRGBErosionRadiusTwoFragmentShaderString; - }; break; - case 3: - { - vertexShaderForThisRadius = kGPUImageDilationRadiusThreeVertexShaderString; - fragmentShaderForThisRadius = kGPUImageRGBErosionRadiusThreeFragmentShaderString; - }; break; - case 4: - { - vertexShaderForThisRadius = kGPUImageDilationRadiusFourVertexShaderString; - fragmentShaderForThisRadius = kGPUImageRGBErosionRadiusFourFragmentShaderString; - }; break; - default: - { - vertexShaderForThisRadius = kGPUImageDilationRadiusFourVertexShaderString; - fragmentShaderForThisRadius = kGPUImageRGBErosionRadiusFourFragmentShaderString; - }; break; - } - - if (!(self = [super initWithFirstStageVertexShaderFromString:vertexShaderForThisRadius firstStageFragmentShaderFromString:fragmentShaderForThisRadius secondStageVertexShaderFromString:vertexShaderForThisRadius secondStageFragmentShaderFromString:fragmentShaderForThisRadius])) - { - return nil; - } - - return self; -} - -- (id)init; -{ - if (!(self = [self initWithRadius:1])) - { - return nil; - } - - return self; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageRGBFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageRGBFilter.h deleted file mode 100755 index 18966b1..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageRGBFilter.h +++ /dev/null @@ -1,15 +0,0 @@ -#import "GPUImageFilter.h" - -@interface GPUImageRGBFilter : GPUImageFilter -{ - GLint redUniform; - GLint greenUniform; - GLint blueUniform; -} - -// Normalized values by which each color channel is multiplied. The range is from 0.0 up, with 1.0 as the default. -@property (readwrite, nonatomic) CGFloat red; -@property (readwrite, nonatomic) CGFloat green; -@property (readwrite, nonatomic) CGFloat blue; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageRGBFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageRGBFilter.m deleted file mode 100755 index 7a2e568..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageRGBFilter.m +++ /dev/null @@ -1,89 +0,0 @@ -#import "GPUImageRGBFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageRGBFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform highp float redAdjustment; - uniform highp float greenAdjustment; - uniform highp float blueAdjustment; - - void main() - { - highp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - - gl_FragColor = vec4(textureColor.r * redAdjustment, textureColor.g * greenAdjustment, textureColor.b * blueAdjustment, textureColor.a); - } -); -#else -NSString *const kGPUImageRGBFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform float redAdjustment; - uniform float greenAdjustment; - uniform float blueAdjustment; - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - - gl_FragColor = vec4(textureColor.r * redAdjustment, textureColor.g * greenAdjustment, textureColor.b * blueAdjustment, textureColor.a); - } - ); -#endif - -@implementation GPUImageRGBFilter - -@synthesize red = _red, blue = _blue, green = _green; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageRGBFragmentShaderString])) - { - return nil; - } - - redUniform = [filterProgram uniformIndex:@"redAdjustment"]; - self.red = 1.0; - - greenUniform = [filterProgram uniformIndex:@"greenAdjustment"]; - self.green = 1.0; - - blueUniform = [filterProgram uniformIndex:@"blueAdjustment"]; - self.blue = 1.0; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setRed:(CGFloat)newValue; -{ - _red = newValue; - - [self setFloat:_red forUniform:redUniform program:filterProgram]; -} - -- (void)setGreen:(CGFloat)newValue; -{ - _green = newValue; - - [self setFloat:_green forUniform:greenUniform program:filterProgram]; -} - -- (void)setBlue:(CGFloat)newValue; -{ - _blue = newValue; - - [self setFloat:_blue forUniform:blueUniform program:filterProgram]; -} - -@end \ No newline at end of file diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageRGBOpeningFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageRGBOpeningFilter.h deleted file mode 100644 index dbec75f..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageRGBOpeningFilter.h +++ /dev/null @@ -1,17 +0,0 @@ -#import "GPUImageFilterGroup.h" - -@class GPUImageRGBErosionFilter; -@class GPUImageRGBDilationFilter; - -// A filter that first performs an erosion on each color channel of an image, followed by a dilation of the same radius. -// This helps to filter out smaller bright elements. - -@interface GPUImageRGBOpeningFilter : GPUImageFilterGroup -{ - GPUImageRGBErosionFilter *erosionFilter; - GPUImageRGBDilationFilter *dilationFilter; -} - -- (id)initWithRadius:(NSUInteger)radius; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageRGBOpeningFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageRGBOpeningFilter.m deleted file mode 100644 index 9d53021..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageRGBOpeningFilter.m +++ /dev/null @@ -1,41 +0,0 @@ -#import "GPUImageRGBOpeningFilter.h" -#import "GPUImageRGBErosionFilter.h" -#import "GPUImageRGBDilationFilter.h" - -@implementation GPUImageRGBOpeningFilter - -- (id)init; -{ - if (!(self = [self initWithRadius:1])) - { - return nil; - } - - return self; -} - -- (id)initWithRadius:(NSUInteger)radius; -{ - if (!(self = [super init])) - { - return nil; - } - - // First pass: erosion - erosionFilter = [[GPUImageRGBErosionFilter alloc] initWithRadius:radius]; - [self addFilter:erosionFilter]; - - // Second pass: dilation - dilationFilter = [[GPUImageRGBDilationFilter alloc] initWithRadius:radius]; - [self addFilter:dilationFilter]; - - [erosionFilter addTarget:dilationFilter]; - - self.initialFilters = [NSArray arrayWithObjects:erosionFilter, nil]; - self.terminalFilter = dilationFilter; - - return self; -} - - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageRawDataInput.h b/Example/Pods/GPUImage/framework/Source/GPUImageRawDataInput.h deleted file mode 100644 index 6ec4720..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageRawDataInput.h +++ /dev/null @@ -1,43 +0,0 @@ -#import "GPUImageOutput.h" - -// The bytes passed into this input are not copied or retained, but you are free to deallocate them after they are used by this filter. -// The bytes are uploaded and stored within a texture, so nothing is kept locally. -// The default format for input bytes is GPUPixelFormatBGRA, unless specified with pixelFormat: -// The default type for input bytes is GPUPixelTypeUByte, unless specified with pixelType: - -typedef enum { - GPUPixelFormatBGRA = GL_BGRA, - GPUPixelFormatRGBA = GL_RGBA, - GPUPixelFormatRGB = GL_RGB, - GPUPixelFormatLuminance = GL_LUMINANCE -} GPUPixelFormat; - -typedef enum { - GPUPixelTypeUByte = GL_UNSIGNED_BYTE, - GPUPixelTypeFloat = GL_FLOAT -} GPUPixelType; - -@interface GPUImageRawDataInput : GPUImageOutput -{ - CGSize uploadedImageSize; - - dispatch_semaphore_t dataUpdateSemaphore; -} - -// Initialization and teardown -- (id)initWithBytes:(GLubyte *)bytesToUpload size:(CGSize)imageSize; -- (id)initWithBytes:(GLubyte *)bytesToUpload size:(CGSize)imageSize pixelFormat:(GPUPixelFormat)pixelFormat; -- (id)initWithBytes:(GLubyte *)bytesToUpload size:(CGSize)imageSize pixelFormat:(GPUPixelFormat)pixelFormat type:(GPUPixelType)pixelType; - -/** Input data pixel format - */ -@property (readwrite, nonatomic) GPUPixelFormat pixelFormat; -@property (readwrite, nonatomic) GPUPixelType pixelType; - -// Image rendering -- (void)updateDataFromBytes:(GLubyte *)bytesToUpload size:(CGSize)imageSize; -- (void)processData; -- (void)processDataForTimestamp:(CMTime)frameTime; -- (CGSize)outputImageSize; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageRawDataInput.m b/Example/Pods/GPUImage/framework/Source/GPUImageRawDataInput.m deleted file mode 100644 index 4b6bfa7..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageRawDataInput.m +++ /dev/null @@ -1,139 +0,0 @@ -#import "GPUImageRawDataInput.h" - -@interface GPUImageRawDataInput() -- (void)uploadBytes:(GLubyte *)bytesToUpload; -@end - -@implementation GPUImageRawDataInput - -@synthesize pixelFormat = _pixelFormat; -@synthesize pixelType = _pixelType; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)initWithBytes:(GLubyte *)bytesToUpload size:(CGSize)imageSize; -{ - if (!(self = [self initWithBytes:bytesToUpload size:imageSize pixelFormat:GPUPixelFormatBGRA type:GPUPixelTypeUByte])) - { - return nil; - } - - return self; -} - -- (id)initWithBytes:(GLubyte *)bytesToUpload size:(CGSize)imageSize pixelFormat:(GPUPixelFormat)pixelFormat; -{ - if (!(self = [self initWithBytes:bytesToUpload size:imageSize pixelFormat:pixelFormat type:GPUPixelTypeUByte])) - { - return nil; - } - - return self; -} - -- (id)initWithBytes:(GLubyte *)bytesToUpload size:(CGSize)imageSize pixelFormat:(GPUPixelFormat)pixelFormat type:(GPUPixelType)pixelType; -{ - if (!(self = [super init])) - { - return nil; - } - - dataUpdateSemaphore = dispatch_semaphore_create(1); - - uploadedImageSize = imageSize; - self.pixelFormat = pixelFormat; - self.pixelType = pixelType; - - [self uploadBytes:bytesToUpload]; - - return self; -} - -// ARC forbids explicit message send of 'release'; since iOS 6 even for dispatch_release() calls: stripping it out in that case is required. -- (void)dealloc; -{ -#if !OS_OBJECT_USE_OBJC - if (dataUpdateSemaphore != NULL) - { - dispatch_release(dataUpdateSemaphore); - } -#endif -} - -#pragma mark - -#pragma mark Image rendering - -- (void)uploadBytes:(GLubyte *)bytesToUpload; -{ - [GPUImageContext useImageProcessingContext]; - - // TODO: This probably isn't right, and will need to be corrected - outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:uploadedImageSize textureOptions:self.outputTextureOptions onlyTexture:YES]; - - glBindTexture(GL_TEXTURE_2D, [outputFramebuffer texture]); - glTexImage2D(GL_TEXTURE_2D, 0, _pixelFormat==GPUPixelFormatRGB ? GL_RGB : GL_RGBA, (int)uploadedImageSize.width, (int)uploadedImageSize.height, 0, (GLint)_pixelFormat, (GLenum)_pixelType, bytesToUpload); -} - -- (void)updateDataFromBytes:(GLubyte *)bytesToUpload size:(CGSize)imageSize; -{ - uploadedImageSize = imageSize; - - [self uploadBytes:bytesToUpload]; -} - -- (void)processData; -{ - if (dispatch_semaphore_wait(dataUpdateSemaphore, DISPATCH_TIME_NOW) != 0) - { - return; - } - - runAsynchronouslyOnVideoProcessingQueue(^{ - - CGSize pixelSizeOfImage = [self outputImageSize]; - - for (id currentTarget in targets) - { - NSInteger indexOfObject = [targets indexOfObject:currentTarget]; - NSInteger textureIndexOfTarget = [[targetTextureIndices objectAtIndex:indexOfObject] integerValue]; - - [currentTarget setInputSize:pixelSizeOfImage atIndex:textureIndexOfTarget]; - [currentTarget setInputFramebuffer:outputFramebuffer atIndex:textureIndexOfTarget]; - [currentTarget newFrameReadyAtTime:kCMTimeInvalid atIndex:textureIndexOfTarget]; - } - - dispatch_semaphore_signal(dataUpdateSemaphore); - }); -} - -- (void)processDataForTimestamp:(CMTime)frameTime; -{ - if (dispatch_semaphore_wait(dataUpdateSemaphore, DISPATCH_TIME_NOW) != 0) - { - return; - } - - runAsynchronouslyOnVideoProcessingQueue(^{ - - CGSize pixelSizeOfImage = [self outputImageSize]; - - for (id currentTarget in targets) - { - NSInteger indexOfObject = [targets indexOfObject:currentTarget]; - NSInteger textureIndexOfTarget = [[targetTextureIndices objectAtIndex:indexOfObject] integerValue]; - - [currentTarget setInputSize:pixelSizeOfImage atIndex:textureIndexOfTarget]; - [currentTarget newFrameReadyAtTime:frameTime atIndex:textureIndexOfTarget]; - } - - dispatch_semaphore_signal(dataUpdateSemaphore); - }); -} - -- (CGSize)outputImageSize; -{ - return uploadedImageSize; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageRawDataOutput.h b/Example/Pods/GPUImage/framework/Source/GPUImageRawDataOutput.h deleted file mode 100755 index 5a4538c..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageRawDataOutput.h +++ /dev/null @@ -1,44 +0,0 @@ -#import -#import "GPUImageContext.h" - -struct GPUByteColorVector { - GLubyte red; - GLubyte green; - GLubyte blue; - GLubyte alpha; -}; -typedef struct GPUByteColorVector GPUByteColorVector; - -@protocol GPUImageRawDataProcessor; - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -@interface GPUImageRawDataOutput : NSObject { - CGSize imageSize; - GPUImageRotationMode inputRotation; - BOOL outputBGRA; -} -#else -@interface GPUImageRawDataOutput : NSObject { - CGSize imageSize; - GPUImageRotationMode inputRotation; - BOOL outputBGRA; -} -#endif - -@property(readonly) GLubyte *rawBytesForImage; -@property(nonatomic, copy) void(^newFrameAvailableBlock)(void); -@property(nonatomic) BOOL enabled; - -// Initialization and teardown -- (id)initWithImageSize:(CGSize)newImageSize resultsInBGRAFormat:(BOOL)resultsInBGRAFormat; - -// Data access -- (GPUByteColorVector)colorAtLocation:(CGPoint)locationInImage; -- (NSUInteger)bytesPerRowInOutput; - -- (void)setImageSize:(CGSize)newImageSize; - -- (void)lockFramebufferForReading; -- (void)unlockFramebufferAfterReading; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageRawDataOutput.m b/Example/Pods/GPUImage/framework/Source/GPUImageRawDataOutput.m deleted file mode 100755 index 18101e2..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageRawDataOutput.m +++ /dev/null @@ -1,307 +0,0 @@ -#import "GPUImageRawDataOutput.h" - -#import "GPUImageContext.h" -#import "GLProgram.h" -#import "GPUImageFilter.h" -#import "GPUImageMovieWriter.h" - -@interface GPUImageRawDataOutput () -{ - GPUImageFramebuffer *firstInputFramebuffer, *outputFramebuffer, *retainedFramebuffer; - - BOOL hasReadFromTheCurrentFrame; - - GLProgram *dataProgram; - GLint dataPositionAttribute, dataTextureCoordinateAttribute; - GLint dataInputTextureUniform; - - GLubyte *_rawBytesForImage; - - BOOL lockNextFramebuffer; -} - -// Frame rendering -- (void)renderAtInternalSize; - -@end - -@implementation GPUImageRawDataOutput - -@synthesize rawBytesForImage = _rawBytesForImage; -@synthesize newFrameAvailableBlock = _newFrameAvailableBlock; -@synthesize enabled; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)initWithImageSize:(CGSize)newImageSize resultsInBGRAFormat:(BOOL)resultsInBGRAFormat; -{ - if (!(self = [super init])) - { - return nil; - } - - self.enabled = YES; - lockNextFramebuffer = NO; - outputBGRA = resultsInBGRAFormat; - imageSize = newImageSize; - hasReadFromTheCurrentFrame = NO; - _rawBytesForImage = NULL; - inputRotation = kGPUImageNoRotation; - - [GPUImageContext useImageProcessingContext]; - if ( (outputBGRA && ![GPUImageContext supportsFastTextureUpload]) || (!outputBGRA && [GPUImageContext supportsFastTextureUpload]) ) - { - dataProgram = [[GPUImageContext sharedImageProcessingContext] programForVertexShaderString:kGPUImageVertexShaderString fragmentShaderString:kGPUImageColorSwizzlingFragmentShaderString]; - } - else - { - dataProgram = [[GPUImageContext sharedImageProcessingContext] programForVertexShaderString:kGPUImageVertexShaderString fragmentShaderString:kGPUImagePassthroughFragmentShaderString]; - } - - if (!dataProgram.initialized) - { - [dataProgram addAttribute:@"position"]; - [dataProgram addAttribute:@"inputTextureCoordinate"]; - - if (![dataProgram link]) - { - NSString *progLog = [dataProgram programLog]; - NSLog(@"Program link log: %@", progLog); - NSString *fragLog = [dataProgram fragmentShaderLog]; - NSLog(@"Fragment shader compile log: %@", fragLog); - NSString *vertLog = [dataProgram vertexShaderLog]; - NSLog(@"Vertex shader compile log: %@", vertLog); - dataProgram = nil; - NSAssert(NO, @"Filter shader link failed"); - } - } - - dataPositionAttribute = [dataProgram attributeIndex:@"position"]; - dataTextureCoordinateAttribute = [dataProgram attributeIndex:@"inputTextureCoordinate"]; - dataInputTextureUniform = [dataProgram uniformIndex:@"inputImageTexture"]; - - return self; -} - -- (void)dealloc -{ - if (_rawBytesForImage != NULL && (![GPUImageContext supportsFastTextureUpload])) - { - free(_rawBytesForImage); - _rawBytesForImage = NULL; - } -} - -#pragma mark - -#pragma mark Data access - -- (void)renderAtInternalSize; -{ - [GPUImageContext setActiveShaderProgram:dataProgram]; - - outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:imageSize onlyTexture:NO]; - [outputFramebuffer activateFramebuffer]; - - if(lockNextFramebuffer) - { - retainedFramebuffer = outputFramebuffer; - [retainedFramebuffer lock]; - [retainedFramebuffer lockForReading]; - lockNextFramebuffer = NO; - } - - glClearColor(0.0f, 0.0f, 0.0f, 1.0f); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - static const GLfloat squareVertices[] = { - -1.0f, -1.0f, - 1.0f, -1.0f, - -1.0f, 1.0f, - 1.0f, 1.0f, - }; - - static const GLfloat textureCoordinates[] = { - 0.0f, 0.0f, - 1.0f, 0.0f, - 0.0f, 1.0f, - 1.0f, 1.0f, - }; - - glActiveTexture(GL_TEXTURE4); - glBindTexture(GL_TEXTURE_2D, [firstInputFramebuffer texture]); - glUniform1i(dataInputTextureUniform, 4); - - glVertexAttribPointer(dataPositionAttribute, 2, GL_FLOAT, 0, 0, squareVertices); - glVertexAttribPointer(dataTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, textureCoordinates); - - glEnableVertexAttribArray(dataPositionAttribute); - glEnableVertexAttribArray(dataTextureCoordinateAttribute); - - glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); - [firstInputFramebuffer unlock]; -} - -- (GPUByteColorVector)colorAtLocation:(CGPoint)locationInImage; -{ - GPUByteColorVector *imageColorBytes = (GPUByteColorVector *)self.rawBytesForImage; -// NSLog(@"Row start"); -// for (unsigned int currentXPosition = 0; currentXPosition < (imageSize.width * 2.0); currentXPosition++) -// { -// GPUByteColorVector byteAtPosition = imageColorBytes[currentXPosition]; -// NSLog(@"%d - %d, %d, %d", currentXPosition, byteAtPosition.red, byteAtPosition.green, byteAtPosition.blue); -// } -// NSLog(@"Row end"); - -// GPUByteColorVector byteAtOne = imageColorBytes[1]; -// GPUByteColorVector byteAtWidth = imageColorBytes[(int)imageSize.width - 3]; -// GPUByteColorVector byteAtHeight = imageColorBytes[(int)(imageSize.height - 1) * (int)imageSize.width]; -// NSLog(@"Byte 1: %d, %d, %d, byte 2: %d, %d, %d, byte 3: %d, %d, %d", byteAtOne.red, byteAtOne.green, byteAtOne.blue, byteAtWidth.red, byteAtWidth.green, byteAtWidth.blue, byteAtHeight.red, byteAtHeight.green, byteAtHeight.blue); - - CGPoint locationToPickFrom = CGPointZero; - locationToPickFrom.x = MIN(MAX(locationInImage.x, 0.0), (imageSize.width - 1.0)); - locationToPickFrom.y = MIN(MAX((imageSize.height - locationInImage.y), 0.0), (imageSize.height - 1.0)); - - if (outputBGRA) - { - GPUByteColorVector flippedColor = imageColorBytes[(int)(round((locationToPickFrom.y * imageSize.width) + locationToPickFrom.x))]; - GLubyte temporaryRed = flippedColor.red; - - flippedColor.red = flippedColor.blue; - flippedColor.blue = temporaryRed; - - return flippedColor; - } - else - { - return imageColorBytes[(int)(round((locationToPickFrom.y * imageSize.width) + locationToPickFrom.x))]; - } -} - -#pragma mark - -#pragma mark GPUImageInput protocol - -- (void)newFrameReadyAtTime:(CMTime)frameTime atIndex:(NSInteger)textureIndex; -{ - hasReadFromTheCurrentFrame = NO; - - if (_newFrameAvailableBlock != NULL) - { - _newFrameAvailableBlock(); - } -} - -- (NSInteger)nextAvailableTextureIndex; -{ - return 0; -} - -- (void)setInputFramebuffer:(GPUImageFramebuffer *)newInputFramebuffer atIndex:(NSInteger)textureIndex; -{ - firstInputFramebuffer = newInputFramebuffer; - [firstInputFramebuffer lock]; -} - -- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; -{ - inputRotation = newInputRotation; -} - -- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex; -{ -} - -- (CGSize)maximumOutputSize; -{ - return imageSize; -} - -- (void)endProcessing; -{ -} - -- (BOOL)shouldIgnoreUpdatesToThisTarget; -{ - return NO; -} - -- (BOOL)wantsMonochromeInput; -{ - return NO; -} - -- (void)setCurrentlyReceivingMonochromeInput:(BOOL)newValue; -{ - -} - -#pragma mark - -#pragma mark Accessors - -- (GLubyte *)rawBytesForImage; -{ - if ( (_rawBytesForImage == NULL) && (![GPUImageContext supportsFastTextureUpload]) ) - { - _rawBytesForImage = (GLubyte *) calloc(imageSize.width * imageSize.height * 4, sizeof(GLubyte)); - hasReadFromTheCurrentFrame = NO; - } - - if (hasReadFromTheCurrentFrame) - { - return _rawBytesForImage; - } - else - { - runSynchronouslyOnVideoProcessingQueue(^{ - // Note: the fast texture caches speed up 640x480 frame reads from 9.6 ms to 3.1 ms on iPhone 4S - - [GPUImageContext useImageProcessingContext]; - [self renderAtInternalSize]; - - if ([GPUImageContext supportsFastTextureUpload]) - { - glFinish(); - _rawBytesForImage = [outputFramebuffer byteBuffer]; - } - else - { - glReadPixels(0, 0, imageSize.width, imageSize.height, GL_RGBA, GL_UNSIGNED_BYTE, _rawBytesForImage); - // GL_EXT_read_format_bgra - // glReadPixels(0, 0, imageSize.width, imageSize.height, GL_BGRA_EXT, GL_UNSIGNED_BYTE, _rawBytesForImage); - } - - hasReadFromTheCurrentFrame = YES; - - }); - - return _rawBytesForImage; - } -} - -- (NSUInteger)bytesPerRowInOutput; -{ - return [retainedFramebuffer bytesPerRow]; -} - -- (void)setImageSize:(CGSize)newImageSize { - imageSize = newImageSize; - if (_rawBytesForImage != NULL && (![GPUImageContext supportsFastTextureUpload])) - { - free(_rawBytesForImage); - _rawBytesForImage = NULL; - } -} - -- (void)lockFramebufferForReading; -{ - lockNextFramebuffer = YES; -} - -- (void)unlockFramebufferAfterReading; -{ - [retainedFramebuffer unlockAfterReading]; - [retainedFramebuffer unlock]; - retainedFramebuffer = nil; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageSaturationBlendFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageSaturationBlendFilter.h deleted file mode 100644 index 767892a..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageSaturationBlendFilter.h +++ /dev/null @@ -1,5 +0,0 @@ -#import "GPUImageTwoInputFilter.h" - -@interface GPUImageSaturationBlendFilter : GPUImageTwoInputFilter - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageSaturationBlendFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageSaturationBlendFilter.m deleted file mode 100644 index da37f6a..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageSaturationBlendFilter.m +++ /dev/null @@ -1,213 +0,0 @@ -#import "GPUImageSaturationBlendFilter.h" - -/** - * Saturation blend mode based upon pseudo code from the PDF specification. - */ -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageSaturationBlendFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - varying highp vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - highp float lum(lowp vec3 c) { - return dot(c, vec3(0.3, 0.59, 0.11)); - } - - lowp vec3 clipcolor(lowp vec3 c) { - highp float l = lum(c); - lowp float n = min(min(c.r, c.g), c.b); - lowp float x = max(max(c.r, c.g), c.b); - - if (n < 0.0) { - c.r = l + ((c.r - l) * l) / (l - n); - c.g = l + ((c.g - l) * l) / (l - n); - c.b = l + ((c.b - l) * l) / (l - n); - } - if (x > 1.0) { - c.r = l + ((c.r - l) * (1.0 - l)) / (x - l); - c.g = l + ((c.g - l) * (1.0 - l)) / (x - l); - c.b = l + ((c.b - l) * (1.0 - l)) / (x - l); - } - - return c; - } - - lowp vec3 setlum(lowp vec3 c, highp float l) { - highp float d = l - lum(c); - c = c + vec3(d); - return clipcolor(c); - } - - highp float sat(lowp vec3 c) { - lowp float n = min(min(c.r, c.g), c.b); - lowp float x = max(max(c.r, c.g), c.b); - return x - n; - } - - lowp float mid(lowp float cmin, lowp float cmid, lowp float cmax, highp float s) { - return ((cmid - cmin) * s) / (cmax - cmin); - } - - lowp vec3 setsat(lowp vec3 c, highp float s) { - if (c.r > c.g) { - if (c.r > c.b) { - if (c.g > c.b) { - /* g is mid, b is min */ - c.g = mid(c.b, c.g, c.r, s); - c.b = 0.0; - } else { - /* b is mid, g is min */ - c.b = mid(c.g, c.b, c.r, s); - c.g = 0.0; - } - c.r = s; - } else { - /* b is max, r is mid, g is min */ - c.r = mid(c.g, c.r, c.b, s); - c.b = s; - c.r = 0.0; - } - } else if (c.r > c.b) { - /* g is max, r is mid, b is min */ - c.r = mid(c.b, c.r, c.g, s); - c.g = s; - c.b = 0.0; - } else if (c.g > c.b) { - /* g is max, b is mid, r is min */ - c.b = mid(c.r, c.b, c.g, s); - c.g = s; - c.r = 0.0; - } else if (c.b > c.g) { - /* b is max, g is mid, r is min */ - c.g = mid(c.r, c.g, c.b, s); - c.b = s; - c.r = 0.0; - } else { - c = vec3(0.0); - } - return c; - } - - void main() - { - highp vec4 baseColor = texture2D(inputImageTexture, textureCoordinate); - highp vec4 overlayColor = texture2D(inputImageTexture2, textureCoordinate2); - - gl_FragColor = vec4(baseColor.rgb * (1.0 - overlayColor.a) + setlum(setsat(baseColor.rgb, sat(overlayColor.rgb)), lum(baseColor.rgb)) * overlayColor.a, baseColor.a); - } -); -#else -NSString *const kGPUImageSaturationBlendFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - float lum(vec3 c) { - return dot(c, vec3(0.3, 0.59, 0.11)); - } - - vec3 clipcolor(vec3 c) { - float l = lum(c); - float n = min(min(c.r, c.g), c.b); - float x = max(max(c.r, c.g), c.b); - - if (n < 0.0) { - c.r = l + ((c.r - l) * l) / (l - n); - c.g = l + ((c.g - l) * l) / (l - n); - c.b = l + ((c.b - l) * l) / (l - n); - } - if (x > 1.0) { - c.r = l + ((c.r - l) * (1.0 - l)) / (x - l); - c.g = l + ((c.g - l) * (1.0 - l)) / (x - l); - c.b = l + ((c.b - l) * (1.0 - l)) / (x - l); - } - - return c; - } - - vec3 setlum(vec3 c, float l) { - float d = l - lum(c); - c = c + vec3(d); - return clipcolor(c); - } - - float sat(vec3 c) { - float n = min(min(c.r, c.g), c.b); - float x = max(max(c.r, c.g), c.b); - return x - n; - } - - float mid(float cmin, float cmid, float cmax, float s) { - return ((cmid - cmin) * s) / (cmax - cmin); - } - - vec3 setsat(vec3 c, float s) { - if (c.r > c.g) { - if (c.r > c.b) { - if (c.g > c.b) { - /* g is mid, b is min */ - c.g = mid(c.b, c.g, c.r, s); - c.b = 0.0; - } else { - /* b is mid, g is min */ - c.b = mid(c.g, c.b, c.r, s); - c.g = 0.0; - } - c.r = s; - } else { - /* b is max, r is mid, g is min */ - c.r = mid(c.g, c.r, c.b, s); - c.b = s; - c.r = 0.0; - } - } else if (c.r > c.b) { - /* g is max, r is mid, b is min */ - c.r = mid(c.b, c.r, c.g, s); - c.g = s; - c.b = 0.0; - } else if (c.g > c.b) { - /* g is max, b is mid, r is min */ - c.b = mid(c.r, c.b, c.g, s); - c.g = s; - c.r = 0.0; - } else if (c.b > c.g) { - /* b is max, g is mid, r is min */ - c.g = mid(c.r, c.g, c.b, s); - c.b = s; - c.r = 0.0; - } else { - c = vec3(0.0); - } - return c; - } - - void main() - { - vec4 baseColor = texture2D(inputImageTexture, textureCoordinate); - vec4 overlayColor = texture2D(inputImageTexture2, textureCoordinate2); - - gl_FragColor = vec4(baseColor.rgb * (1.0 - overlayColor.a) + setlum(setsat(baseColor.rgb, sat(overlayColor.rgb)), lum(baseColor.rgb)) * overlayColor.a, baseColor.a); - } -); -#endif - - -@implementation GPUImageSaturationBlendFilter - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageSaturationBlendFragmentShaderString])) - { - return nil; - } - - return self; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageSaturationFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageSaturationFilter.h deleted file mode 100755 index 1c6ff5b..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageSaturationFilter.h +++ /dev/null @@ -1,14 +0,0 @@ -#import "GPUImageFilter.h" - -/** Adjusts the saturation of an image - */ -@interface GPUImageSaturationFilter : GPUImageFilter -{ - GLint saturationUniform; -} - -/** Saturation ranges from 0.0 (fully desaturated) to 2.0 (max saturation), with 1.0 as the normal level - */ -@property(readwrite, nonatomic) CGFloat saturation; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageSaturationFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageSaturationFilter.m deleted file mode 100755 index fc373d4..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageSaturationFilter.m +++ /dev/null @@ -1,78 +0,0 @@ -#import "GPUImageSaturationFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageSaturationFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform lowp float saturation; - - // Values from "Graphics Shaders: Theory and Practice" by Bailey and Cunningham - const mediump vec3 luminanceWeighting = vec3(0.2125, 0.7154, 0.0721); - - void main() - { - lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - lowp float luminance = dot(textureColor.rgb, luminanceWeighting); - lowp vec3 greyScaleColor = vec3(luminance); - - gl_FragColor = vec4(mix(greyScaleColor, textureColor.rgb, saturation), textureColor.w); - - } -); -#else -NSString *const kGPUImageSaturationFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform float saturation; - - // Values from "Graphics Shaders: Theory and Practice" by Bailey and Cunningham - const vec3 luminanceWeighting = vec3(0.2125, 0.7154, 0.0721); - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - float luminance = dot(textureColor.rgb, luminanceWeighting); - vec3 greyScaleColor = vec3(luminance); - - gl_FragColor = vec4(mix(greyScaleColor, textureColor.rgb, saturation), textureColor.w); - - } - ); -#endif - -@implementation GPUImageSaturationFilter - -@synthesize saturation = _saturation; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageSaturationFragmentShaderString])) - { - return nil; - } - - saturationUniform = [filterProgram uniformIndex:@"saturation"]; - self.saturation = 1.0; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setSaturation:(CGFloat)newValue; -{ - _saturation = newValue; - - [self setFloat:_saturation forUniform:saturationUniform program:filterProgram]; -} - -@end - diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageScreenBlendFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageScreenBlendFilter.h deleted file mode 100755 index 2df3abf..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageScreenBlendFilter.h +++ /dev/null @@ -1,7 +0,0 @@ -#import "GPUImageTwoInputFilter.h" - -@interface GPUImageScreenBlendFilter : GPUImageTwoInputFilter -{ -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageScreenBlendFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageScreenBlendFilter.m deleted file mode 100755 index d871e7d..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageScreenBlendFilter.m +++ /dev/null @@ -1,52 +0,0 @@ -#import "GPUImageScreenBlendFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageScreenBlendFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - varying highp vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - mediump vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - mediump vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate2); - mediump vec4 whiteColor = vec4(1.0); - gl_FragColor = whiteColor - ((whiteColor - textureColor2) * (whiteColor - textureColor)); - } -); -#else -NSString *const kGPUImageScreenBlendFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate2); - vec4 whiteColor = vec4(1.0); - gl_FragColor = whiteColor - ((whiteColor - textureColor2) * (whiteColor - textureColor)); - } -); -#endif - -@implementation GPUImageScreenBlendFilter - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageScreenBlendFragmentShaderString])) - { - return nil; - } - - return self; -} - -@end - diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageSepiaFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageSepiaFilter.h deleted file mode 100755 index a45164f..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageSepiaFilter.h +++ /dev/null @@ -1,6 +0,0 @@ -#import "GPUImageColorMatrixFilter.h" - -/// Simple sepia tone filter -@interface GPUImageSepiaFilter : GPUImageColorMatrixFilter - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageSepiaFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageSepiaFilter.m deleted file mode 100755 index 71668d6..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageSepiaFilter.m +++ /dev/null @@ -1,24 +0,0 @@ -#import "GPUImageSepiaFilter.h" - -@implementation GPUImageSepiaFilter - -- (id)init; -{ - if (!(self = [super init])) - { - return nil; - } - - self.intensity = 1.0; - self.colorMatrix = (GPUMatrix4x4){ - {0.3588, 0.7044, 0.1368, 0.0}, - {0.2990, 0.5870, 0.1140, 0.0}, - {0.2392, 0.4696, 0.0912 ,0.0}, - {0,0,0,1.0}, - }; - - return self; -} - -@end - diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageSharpenFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageSharpenFilter.h deleted file mode 100755 index 739df50..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageSharpenFilter.h +++ /dev/null @@ -1,12 +0,0 @@ -#import "GPUImageFilter.h" - -@interface GPUImageSharpenFilter : GPUImageFilter -{ - GLint sharpnessUniform; - GLint imageWidthFactorUniform, imageHeightFactorUniform; -} - -// Sharpness ranges from -4.0 to 4.0, with 0.0 as the normal level -@property(readwrite, nonatomic) CGFloat sharpness; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageSharpenFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageSharpenFilter.m deleted file mode 100755 index 6d7367a..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageSharpenFilter.m +++ /dev/null @@ -1,147 +0,0 @@ -#import "GPUImageSharpenFilter.h" - -NSString *const kGPUImageSharpenVertexShaderString = SHADER_STRING -( - attribute vec4 position; - attribute vec4 inputTextureCoordinate; - - uniform float imageWidthFactor; - uniform float imageHeightFactor; - uniform float sharpness; - - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - varying vec2 topTextureCoordinate; - varying vec2 bottomTextureCoordinate; - - varying float centerMultiplier; - varying float edgeMultiplier; - - void main() - { - gl_Position = position; - - vec2 widthStep = vec2(imageWidthFactor, 0.0); - vec2 heightStep = vec2(0.0, imageHeightFactor); - - textureCoordinate = inputTextureCoordinate.xy; - leftTextureCoordinate = inputTextureCoordinate.xy - widthStep; - rightTextureCoordinate = inputTextureCoordinate.xy + widthStep; - topTextureCoordinate = inputTextureCoordinate.xy + heightStep; - bottomTextureCoordinate = inputTextureCoordinate.xy - heightStep; - - centerMultiplier = 1.0 + 4.0 * sharpness; - edgeMultiplier = sharpness; - } -); - - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageSharpenFragmentShaderString = SHADER_STRING -( - precision highp float; - - varying highp vec2 textureCoordinate; - varying highp vec2 leftTextureCoordinate; - varying highp vec2 rightTextureCoordinate; - varying highp vec2 topTextureCoordinate; - varying highp vec2 bottomTextureCoordinate; - - varying highp float centerMultiplier; - varying highp float edgeMultiplier; - - uniform sampler2D inputImageTexture; - - void main() - { - mediump vec3 textureColor = texture2D(inputImageTexture, textureCoordinate).rgb; - mediump vec3 leftTextureColor = texture2D(inputImageTexture, leftTextureCoordinate).rgb; - mediump vec3 rightTextureColor = texture2D(inputImageTexture, rightTextureCoordinate).rgb; - mediump vec3 topTextureColor = texture2D(inputImageTexture, topTextureCoordinate).rgb; - mediump vec3 bottomTextureColor = texture2D(inputImageTexture, bottomTextureCoordinate).rgb; - - gl_FragColor = vec4((textureColor * centerMultiplier - (leftTextureColor * edgeMultiplier + rightTextureColor * edgeMultiplier + topTextureColor * edgeMultiplier + bottomTextureColor * edgeMultiplier)), texture2D(inputImageTexture, bottomTextureCoordinate).w); - } -); -#else -NSString *const kGPUImageSharpenFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - varying vec2 topTextureCoordinate; - varying vec2 bottomTextureCoordinate; - - varying float centerMultiplier; - varying float edgeMultiplier; - - uniform sampler2D inputImageTexture; - - void main() - { - vec3 textureColor = texture2D(inputImageTexture, textureCoordinate).rgb; - vec3 leftTextureColor = texture2D(inputImageTexture, leftTextureCoordinate).rgb; - vec3 rightTextureColor = texture2D(inputImageTexture, rightTextureCoordinate).rgb; - vec3 topTextureColor = texture2D(inputImageTexture, topTextureCoordinate).rgb; - vec3 bottomTextureColor = texture2D(inputImageTexture, bottomTextureCoordinate).rgb; - - gl_FragColor = vec4((textureColor * centerMultiplier - (leftTextureColor * edgeMultiplier + rightTextureColor * edgeMultiplier + topTextureColor * edgeMultiplier + bottomTextureColor * edgeMultiplier)), texture2D(inputImageTexture, bottomTextureCoordinate).w); - } -); -#endif - - -@implementation GPUImageSharpenFilter - -@synthesize sharpness = _sharpness; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithVertexShaderFromString:kGPUImageSharpenVertexShaderString fragmentShaderFromString:kGPUImageSharpenFragmentShaderString])) - { - return nil; - } - - sharpnessUniform = [filterProgram uniformIndex:@"sharpness"]; - self.sharpness = 0.0; - - imageWidthFactorUniform = [filterProgram uniformIndex:@"imageWidthFactor"]; - imageHeightFactorUniform = [filterProgram uniformIndex:@"imageHeightFactor"]; - - return self; -} - -- (void)setupFilterForSize:(CGSize)filterFrameSize; -{ - runSynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext setActiveShaderProgram:filterProgram]; - - if (GPUImageRotationSwapsWidthAndHeight(inputRotation)) - { - glUniform1f(imageWidthFactorUniform, 1.0 / filterFrameSize.height); - glUniform1f(imageHeightFactorUniform, 1.0 / filterFrameSize.width); - } - else - { - glUniform1f(imageWidthFactorUniform, 1.0 / filterFrameSize.width); - glUniform1f(imageHeightFactorUniform, 1.0 / filterFrameSize.height); - } - }); -} - -#pragma mark - -#pragma mark Accessors - -- (void)setSharpness:(CGFloat)newValue; -{ - _sharpness = newValue; - - [self setFloat:_sharpness forUniform:sharpnessUniform program:filterProgram]; -} - -@end - diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageShiTomasiFeatureDetectionFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageShiTomasiFeatureDetectionFilter.h deleted file mode 100644 index b16ebc0..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageShiTomasiFeatureDetectionFilter.h +++ /dev/null @@ -1,13 +0,0 @@ -#import "GPUImageHarrisCornerDetectionFilter.h" - -/** Shi-Tomasi feature detector - - This is the Shi-Tomasi feature detector, as described in - J. Shi and C. Tomasi. Good features to track. Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pages 593-600, June 1994. - */ - -@interface GPUImageShiTomasiFeatureDetectionFilter : GPUImageHarrisCornerDetectionFilter - -// Compared to the Harris corner detector, the default sensitivity value for this detector is set to 1.5 - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageShiTomasiFeatureDetectionFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageShiTomasiFeatureDetectionFilter.m deleted file mode 100644 index e58cbb4..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageShiTomasiFeatureDetectionFilter.m +++ /dev/null @@ -1,65 +0,0 @@ -#import "GPUImageShiTomasiFeatureDetectionFilter.h" - -@implementation GPUImageShiTomasiFeatureDetectionFilter - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageShiTomasiCornerDetectionFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform lowp float sensitivity; - - void main() - { - mediump vec3 derivativeElements = texture2D(inputImageTexture, textureCoordinate).rgb; - - mediump float derivativeDifference = derivativeElements.x - derivativeElements.y; - mediump float zElement = (derivativeElements.z * 2.0) - 1.0; - - // R = Ix^2 + Iy^2 - sqrt( (Ix^2 - Iy^2)^2 + 4 * Ixy * Ixy) - mediump float cornerness = derivativeElements.x + derivativeElements.y - sqrt(derivativeDifference * derivativeDifference + 4.0 * zElement * zElement); - - gl_FragColor = vec4(vec3(cornerness * sensitivity), 1.0); - } -); -#else -NSString *const kGPUImageShiTomasiCornerDetectionFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform float sensitivity; - - void main() - { - vec3 derivativeElements = texture2D(inputImageTexture, textureCoordinate).rgb; - - float derivativeDifference = derivativeElements.x - derivativeElements.y; - float zElement = (derivativeElements.z * 2.0) - 1.0; - - // R = Ix^2 + Iy^2 - sqrt( (Ix^2 - Iy^2)^2 + 4 * Ixy * Ixy) - float cornerness = derivativeElements.x + derivativeElements.y - sqrt(derivativeDifference * derivativeDifference + 4.0 * zElement * zElement); - - gl_FragColor = vec4(vec3(cornerness * sensitivity), 1.0); - } -); -#endif - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [self initWithCornerDetectionFragmentShader:kGPUImageShiTomasiCornerDetectionFragmentShaderString])) - { - return nil; - } - - self.sensitivity = 1.5; - - return self; -} - - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageSingleComponentGaussianBlurFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageSingleComponentGaussianBlurFilter.h deleted file mode 100644 index 934b1e3..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageSingleComponentGaussianBlurFilter.h +++ /dev/null @@ -1,7 +0,0 @@ -#import "GPUImageGaussianBlurFilter.h" - -// This filter merely performs the standard Gaussian blur on the red color channel (assuming a luminance image) - -@interface GPUImageSingleComponentGaussianBlurFilter : GPUImageGaussianBlurFilter - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageSingleComponentGaussianBlurFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageSingleComponentGaussianBlurFilter.m deleted file mode 100644 index 4ff0d91..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageSingleComponentGaussianBlurFilter.m +++ /dev/null @@ -1,189 +0,0 @@ -#import "GPUImageSingleComponentGaussianBlurFilter.h" - -@implementation GPUImageSingleComponentGaussianBlurFilter - -+ (NSString *)vertexShaderForOptimizedBlurOfRadius:(NSUInteger)blurRadius sigma:(CGFloat)sigma; -{ - if (blurRadius < 1) - { - return kGPUImageVertexShaderString; - } - - // First, generate the normal Gaussian weights for a given sigma - GLfloat *standardGaussianWeights = calloc(blurRadius + 1, sizeof(GLfloat)); - GLfloat sumOfWeights = 0.0; - for (NSUInteger currentGaussianWeightIndex = 0; currentGaussianWeightIndex < blurRadius + 1; currentGaussianWeightIndex++) - { - standardGaussianWeights[currentGaussianWeightIndex] = (1.0 / sqrt(2.0 * M_PI * pow(sigma, 2.0))) * exp(-pow(currentGaussianWeightIndex, 2.0) / (2.0 * pow(sigma, 2.0))); - - if (currentGaussianWeightIndex == 0) - { - sumOfWeights += standardGaussianWeights[currentGaussianWeightIndex]; - } - else - { - sumOfWeights += 2.0 * standardGaussianWeights[currentGaussianWeightIndex]; - } - } - - // Next, normalize these weights to prevent the clipping of the Gaussian curve at the end of the discrete samples from reducing luminance - for (NSUInteger currentGaussianWeightIndex = 0; currentGaussianWeightIndex < blurRadius + 1; currentGaussianWeightIndex++) - { - standardGaussianWeights[currentGaussianWeightIndex] = standardGaussianWeights[currentGaussianWeightIndex] / sumOfWeights; - } - - // From these weights we calculate the offsets to read interpolated values from - NSUInteger numberOfOptimizedOffsets = MIN(blurRadius / 2 + (blurRadius % 2), 7); - GLfloat *optimizedGaussianOffsets = calloc(numberOfOptimizedOffsets, sizeof(GLfloat)); - - for (NSUInteger currentOptimizedOffset = 0; currentOptimizedOffset < numberOfOptimizedOffsets; currentOptimizedOffset++) - { - GLfloat firstWeight = standardGaussianWeights[currentOptimizedOffset*2 + 1]; - GLfloat secondWeight = standardGaussianWeights[currentOptimizedOffset*2 + 2]; - - GLfloat optimizedWeight = firstWeight + secondWeight; - - optimizedGaussianOffsets[currentOptimizedOffset] = (firstWeight * (currentOptimizedOffset*2 + 1) + secondWeight * (currentOptimizedOffset*2 + 2)) / optimizedWeight; - } - - NSMutableString *shaderString = [[NSMutableString alloc] init]; - // Header - [shaderString appendFormat:@"\ - attribute vec4 position;\n\ - attribute vec4 inputTextureCoordinate;\n\ - \n\ - uniform float texelWidthOffset;\n\ - uniform float texelHeightOffset;\n\ - \n\ - varying vec2 blurCoordinates[%lu];\n\ - \n\ - void main()\n\ - {\n\ - gl_Position = position;\n\ - \n\ - vec2 singleStepOffset = vec2(texelWidthOffset, texelHeightOffset);\n", (unsigned long)(1 + (numberOfOptimizedOffsets * 2))]; - - // Inner offset loop - [shaderString appendString:@"blurCoordinates[0] = inputTextureCoordinate.xy;\n"]; - for (NSUInteger currentOptimizedOffset = 0; currentOptimizedOffset < numberOfOptimizedOffsets; currentOptimizedOffset++) - { - [shaderString appendFormat:@"\ - blurCoordinates[%lu] = inputTextureCoordinate.xy + singleStepOffset * %f;\n\ - blurCoordinates[%lu] = inputTextureCoordinate.xy - singleStepOffset * %f;\n", (unsigned long)((currentOptimizedOffset * 2) + 1), optimizedGaussianOffsets[currentOptimizedOffset], (unsigned long)((currentOptimizedOffset * 2) + 2), optimizedGaussianOffsets[currentOptimizedOffset]]; - } - - // Footer - [shaderString appendString:@"}\n"]; - - free(optimizedGaussianOffsets); - free(standardGaussianWeights); - return shaderString; -} - -+ (NSString *)fragmentShaderForOptimizedBlurOfRadius:(NSUInteger)blurRadius sigma:(CGFloat)sigma; -{ - if (blurRadius < 1) - { - return kGPUImagePassthroughFragmentShaderString; - } - - // First, generate the normal Gaussian weights for a given sigma - GLfloat *standardGaussianWeights = calloc(blurRadius + 1, sizeof(GLfloat)); - GLfloat sumOfWeights = 0.0; - for (NSUInteger currentGaussianWeightIndex = 0; currentGaussianWeightIndex < blurRadius + 1; currentGaussianWeightIndex++) - { - standardGaussianWeights[currentGaussianWeightIndex] = (1.0 / sqrt(2.0 * M_PI * pow(sigma, 2.0))) * exp(-pow(currentGaussianWeightIndex, 2.0) / (2.0 * pow(sigma, 2.0))); - - if (currentGaussianWeightIndex == 0) - { - sumOfWeights += standardGaussianWeights[currentGaussianWeightIndex]; - } - else - { - sumOfWeights += 2.0 * standardGaussianWeights[currentGaussianWeightIndex]; - } - } - - // Next, normalize these weights to prevent the clipping of the Gaussian curve at the end of the discrete samples from reducing luminance - for (NSUInteger currentGaussianWeightIndex = 0; currentGaussianWeightIndex < blurRadius + 1; currentGaussianWeightIndex++) - { - standardGaussianWeights[currentGaussianWeightIndex] = standardGaussianWeights[currentGaussianWeightIndex] / sumOfWeights; - } - - // From these weights we calculate the offsets to read interpolated values from - NSUInteger numberOfOptimizedOffsets = MIN(blurRadius / 2 + (blurRadius % 2), 7); - NSUInteger trueNumberOfOptimizedOffsets = blurRadius / 2 + (blurRadius % 2); - - NSMutableString *shaderString = [[NSMutableString alloc] init]; - - // Header -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - [shaderString appendFormat:@"\ - uniform sampler2D inputImageTexture;\n\ - uniform highp float texelWidthOffset;\n\ - uniform highp float texelHeightOffset;\n\ - \n\ - varying highp vec2 blurCoordinates[%lu];\n\ - \n\ - void main()\n\ - {\n\ - lowp float sum = 0.0;\n", (unsigned long)(1 + (numberOfOptimizedOffsets * 2)) ]; -#else - [shaderString appendFormat:@"\ - uniform sampler2D inputImageTexture;\n\ - uniform float texelWidthOffset;\n\ - uniform float texelHeightOffset;\n\ - \n\ - varying vec2 blurCoordinates[%lu];\n\ - \n\ - void main()\n\ - {\n\ - float sum = 0.0;\n", 1 + (numberOfOptimizedOffsets * 2) ]; -#endif - - // Inner texture loop - [shaderString appendFormat:@"sum += texture2D(inputImageTexture, blurCoordinates[0]).r * %f;\n", standardGaussianWeights[0]]; - - for (NSUInteger currentBlurCoordinateIndex = 0; currentBlurCoordinateIndex < numberOfOptimizedOffsets; currentBlurCoordinateIndex++) - { - GLfloat firstWeight = standardGaussianWeights[currentBlurCoordinateIndex * 2 + 1]; - GLfloat secondWeight = standardGaussianWeights[currentBlurCoordinateIndex * 2 + 2]; - GLfloat optimizedWeight = firstWeight + secondWeight; - - [shaderString appendFormat:@"sum += texture2D(inputImageTexture, blurCoordinates[%lu]).r * %f;\n", (unsigned long)((currentBlurCoordinateIndex * 2) + 1), optimizedWeight]; - [shaderString appendFormat:@"sum += texture2D(inputImageTexture, blurCoordinates[%lu]).r * %f;\n", (unsigned long)((currentBlurCoordinateIndex * 2) + 2), optimizedWeight]; - } - - // If the number of required samples exceeds the amount we can pass in via varyings, we have to do dependent texture reads in the fragment shader - if (trueNumberOfOptimizedOffsets > numberOfOptimizedOffsets) - { -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - [shaderString appendString:@"highp vec2 singleStepOffset = vec2(texelWidthOffset, texelHeightOffset);\n"]; -#else - [shaderString appendString:@"highp vec2 singleStepOffset = vec2(texelWidthOffset, texelHeightOffset);\n"]; -#endif - - for (NSUInteger currentOverlowTextureRead = numberOfOptimizedOffsets; currentOverlowTextureRead < trueNumberOfOptimizedOffsets; currentOverlowTextureRead++) - { - GLfloat firstWeight = standardGaussianWeights[currentOverlowTextureRead * 2 + 1]; - GLfloat secondWeight = standardGaussianWeights[currentOverlowTextureRead * 2 + 2]; - - GLfloat optimizedWeight = firstWeight + secondWeight; - GLfloat optimizedOffset = (firstWeight * (currentOverlowTextureRead * 2 + 1) + secondWeight * (currentOverlowTextureRead * 2 + 2)) / optimizedWeight; - - [shaderString appendFormat:@"sum += texture2D(inputImageTexture, blurCoordinates[0] + singleStepOffset * %f).r * %f;\n", optimizedOffset, optimizedWeight]; - [shaderString appendFormat:@"sum += texture2D(inputImageTexture, blurCoordinates[0] - singleStepOffset * %f).r * %f;\n", optimizedOffset, optimizedWeight]; - } - } - - // Footer - [shaderString appendString:@"\ - gl_FragColor = vec4(sum, sum, sum, 1.0);\n\ - }\n"]; - - free(standardGaussianWeights); - return shaderString; -} - - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageSketchFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageSketchFilter.h deleted file mode 100755 index 598145a..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageSketchFilter.h +++ /dev/null @@ -1,11 +0,0 @@ -#import "GPUImageSobelEdgeDetectionFilter.h" - -/** Converts video to look like a sketch. - - This is just the Sobel edge detection filter with the colors inverted. - */ -@interface GPUImageSketchFilter : GPUImageSobelEdgeDetectionFilter -{ -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageSketchFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageSketchFilter.m deleted file mode 100755 index 3cda220..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageSketchFilter.m +++ /dev/null @@ -1,98 +0,0 @@ -#import "GPUImageSketchFilter.h" - -@implementation GPUImageSketchFilter - -// Invert the colorspace for a sketch -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageSketchFragmentShaderString = SHADER_STRING -( - precision mediump float; - - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - uniform float edgeStrength; - - uniform sampler2D inputImageTexture; - - void main() - { - float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; - float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r; - float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r; - float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; - float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r; - float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r; - float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r; - float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r; - float h = -topLeftIntensity - 2.0 * topIntensity - topRightIntensity + bottomLeftIntensity + 2.0 * bottomIntensity + bottomRightIntensity; - float v = -bottomLeftIntensity - 2.0 * leftIntensity - topLeftIntensity + bottomRightIntensity + 2.0 * rightIntensity + topRightIntensity; - - float mag = 1.0 - (length(vec2(h, v)) * edgeStrength); - - gl_FragColor = vec4(vec3(mag), 1.0); - } -); -#else -NSString *const kGPUImageSketchFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - uniform float edgeStrength; - - uniform sampler2D inputImageTexture; - - void main() - { - float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; - float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r; - float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r; - float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; - float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r; - float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r; - float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r; - float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r; - float h = -topLeftIntensity - 2.0 * topIntensity - topRightIntensity + bottomLeftIntensity + 2.0 * bottomIntensity + bottomRightIntensity; - float v = -bottomLeftIntensity - 2.0 * leftIntensity - topLeftIntensity + bottomRightIntensity + 2.0 * rightIntensity + topRightIntensity; - - float mag = 1.0 - (length(vec2(h, v)) * edgeStrength); - - gl_FragColor = vec4(vec3(mag), 1.0); - } -); -#endif - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [self initWithFragmentShaderFromString:kGPUImageSketchFragmentShaderString])) - { - return nil; - } - - return self; -} - -@end - diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageSmoothToonFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageSmoothToonFilter.h deleted file mode 100755 index f89caac..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageSmoothToonFilter.h +++ /dev/null @@ -1,28 +0,0 @@ -#import "GPUImageFilterGroup.h" - -@class GPUImageGaussianBlurFilter; -@class GPUImageToonFilter; - -/** This uses a similar process as the GPUImageToonFilter, only it precedes the toon effect with a Gaussian blur to smooth out noise. - */ -@interface GPUImageSmoothToonFilter : GPUImageFilterGroup -{ - GPUImageGaussianBlurFilter *blurFilter; - GPUImageToonFilter *toonFilter; -} - -/// The image width and height factors tweak the appearance of the edges. By default, they match the filter size in pixels -@property(readwrite, nonatomic) CGFloat texelWidth; -/// The image width and height factors tweak the appearance of the edges. By default, they match the filter size in pixels -@property(readwrite, nonatomic) CGFloat texelHeight; - -/// The radius of the underlying Gaussian blur. The default is 2.0. -@property (readwrite, nonatomic) CGFloat blurRadiusInPixels; - -/// The threshold at which to apply the edges, default of 0.2 -@property(readwrite, nonatomic) CGFloat threshold; - -/// The levels of quantization for the posterization of colors within the scene, with a default of 10.0 -@property(readwrite, nonatomic) CGFloat quantizationLevels; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageSmoothToonFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageSmoothToonFilter.m deleted file mode 100755 index 03828f4..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageSmoothToonFilter.m +++ /dev/null @@ -1,94 +0,0 @@ -#import "GPUImageSmoothToonFilter.h" -#import "GPUImageGaussianBlurFilter.h" -#import "GPUImageToonFilter.h" - -@implementation GPUImageSmoothToonFilter - -@synthesize threshold; -@synthesize blurRadiusInPixels; -@synthesize quantizationLevels; -@synthesize texelWidth; -@synthesize texelHeight; - -- (id)init; -{ - if (!(self = [super init])) - { - return nil; - } - - // First pass: apply a variable Gaussian blur - blurFilter = [[GPUImageGaussianBlurFilter alloc] init]; - [self addFilter:blurFilter]; - - // Second pass: run the Sobel edge detection on this blurred image, along with a posterization effect - toonFilter = [[GPUImageToonFilter alloc] init]; - [self addFilter:toonFilter]; - - // Texture location 0 needs to be the sharp image for both the blur and the second stage processing - [blurFilter addTarget:toonFilter]; - - self.initialFilters = [NSArray arrayWithObject:blurFilter]; - self.terminalFilter = toonFilter; - - self.blurRadiusInPixels = 2.0; - self.threshold = 0.2; - self.quantizationLevels = 10.0; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setBlurRadiusInPixels:(CGFloat)newValue; -{ - blurFilter.blurRadiusInPixels = newValue; -} - -- (CGFloat)blurRadiusInPixels; -{ - return blurFilter.blurRadiusInPixels; -} - -- (void)setTexelWidth:(CGFloat)newValue; -{ - toonFilter.texelWidth = newValue; -} - -- (CGFloat)texelWidth; -{ - return toonFilter.texelWidth; -} - -- (void)setTexelHeight:(CGFloat)newValue; -{ - toonFilter.texelHeight = newValue; -} - -- (CGFloat)texelHeight; -{ - return toonFilter.texelHeight; -} - -- (void)setThreshold:(CGFloat)newValue; -{ - toonFilter.threshold = newValue; -} - -- (CGFloat)threshold; -{ - return toonFilter.threshold; -} - -- (void)setQuantizationLevels:(CGFloat)newValue; -{ - toonFilter.quantizationLevels = newValue; -} - -- (CGFloat)quantizationLevels; -{ - return toonFilter.quantizationLevels; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageSobelEdgeDetectionFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageSobelEdgeDetectionFilter.h deleted file mode 100755 index d6b2c13..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageSobelEdgeDetectionFilter.h +++ /dev/null @@ -1,16 +0,0 @@ -#import "GPUImageTwoPassFilter.h" - -@interface GPUImageSobelEdgeDetectionFilter : GPUImageTwoPassFilter -{ - GLint texelWidthUniform, texelHeightUniform, edgeStrengthUniform; - BOOL hasOverriddenImageSizeFactor; -} - -// The texel width and height factors tweak the appearance of the edges. By default, they match the inverse of the filter size in pixels -@property(readwrite, nonatomic) CGFloat texelWidth; -@property(readwrite, nonatomic) CGFloat texelHeight; - -// The filter strength property affects the dynamic range of the filter. High values can make edges more visible, but can lead to saturation. Default of 1.0. -@property(readwrite, nonatomic) CGFloat edgeStrength; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageSobelEdgeDetectionFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageSobelEdgeDetectionFilter.m deleted file mode 100755 index e193f02..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageSobelEdgeDetectionFilter.m +++ /dev/null @@ -1,188 +0,0 @@ -#import "GPUImageSobelEdgeDetectionFilter.h" -#import "GPUImageGrayscaleFilter.h" -#import "GPUImage3x3ConvolutionFilter.h" - -// Code from "Graphics Shaders: Theory and Practice" by M. Bailey and S. Cunningham -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageSobelEdgeDetectionFragmentShaderString = SHADER_STRING -( - precision mediump float; - - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - uniform sampler2D inputImageTexture; - uniform float edgeStrength; - - void main() - { - float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; - float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r; - float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r; - float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; - float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r; - float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r; - float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r; - float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r; - float h = -topLeftIntensity - 2.0 * topIntensity - topRightIntensity + bottomLeftIntensity + 2.0 * bottomIntensity + bottomRightIntensity; - float v = -bottomLeftIntensity - 2.0 * leftIntensity - topLeftIntensity + bottomRightIntensity + 2.0 * rightIntensity + topRightIntensity; - - float mag = length(vec2(h, v)) * edgeStrength; - - gl_FragColor = vec4(vec3(mag), 1.0); - } -); -#else -NSString *const kGPUImageSobelEdgeDetectionFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - uniform sampler2D inputImageTexture; - uniform float edgeStrength; - - void main() - { - float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; - float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r; - float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r; - float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; - float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r; - float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r; - float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r; - float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r; - float h = -topLeftIntensity - 2.0 * topIntensity - topRightIntensity + bottomLeftIntensity + 2.0 * bottomIntensity + bottomRightIntensity; - float v = -bottomLeftIntensity - 2.0 * leftIntensity - topLeftIntensity + bottomRightIntensity + 2.0 * rightIntensity + topRightIntensity; - - float mag = length(vec2(h, v)) * edgeStrength; - - gl_FragColor = vec4(vec3(mag), 1.0); - } -); -#endif - -@implementation GPUImageSobelEdgeDetectionFilter - -@synthesize texelWidth = _texelWidth; -@synthesize texelHeight = _texelHeight; -@synthesize edgeStrength = _edgeStrength; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [self initWithFragmentShaderFromString:kGPUImageSobelEdgeDetectionFragmentShaderString])) - { - return nil; - } - - return self; -} - -- (id)initWithFragmentShaderFromString:(NSString *)fragmentShaderString; -{ - // Do a luminance pass first to reduce the calculations performed at each fragment in the edge detection phase - - if (!(self = [super initWithFirstStageVertexShaderFromString:kGPUImageVertexShaderString firstStageFragmentShaderFromString:kGPUImageLuminanceFragmentShaderString secondStageVertexShaderFromString:kGPUImageNearbyTexelSamplingVertexShaderString secondStageFragmentShaderFromString:fragmentShaderString])) - { - return nil; - } - - hasOverriddenImageSizeFactor = NO; - - texelWidthUniform = [secondFilterProgram uniformIndex:@"texelWidth"]; - texelHeightUniform = [secondFilterProgram uniformIndex:@"texelHeight"]; - edgeStrengthUniform = [secondFilterProgram uniformIndex:@"edgeStrength"]; - - self.edgeStrength = 1.0; - return self; -} - -- (void)setupFilterForSize:(CGSize)filterFrameSize; -{ - if (!hasOverriddenImageSizeFactor) - { - _texelWidth = 1.0 / filterFrameSize.width; - _texelHeight = 1.0 / filterFrameSize.height; - - runSynchronouslyOnVideoProcessingQueue(^{ - GLProgram *previousProgram = [GPUImageContext sharedImageProcessingContext].currentShaderProgram; - [GPUImageContext setActiveShaderProgram:secondFilterProgram]; - glUniform1f(texelWidthUniform, _texelWidth); - glUniform1f(texelHeightUniform, _texelHeight); - [GPUImageContext setActiveShaderProgram:previousProgram]; - }); - } -} - -- (void)setUniformsForProgramAtIndex:(NSUInteger)programIndex; -{ - [super setUniformsForProgramAtIndex:programIndex]; - - if (programIndex == 1) - { - glUniform1f(texelWidthUniform, _texelWidth); - glUniform1f(texelHeightUniform, _texelHeight); - } -} - -- (BOOL)wantsMonochromeInput; -{ -// return YES; - return NO; -} - -- (BOOL)providesMonochromeOutput; -{ -// return YES; - return NO; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setTexelWidth:(CGFloat)newValue; -{ - hasOverriddenImageSizeFactor = YES; - _texelWidth = newValue; - - [self setFloat:_texelWidth forUniform:texelWidthUniform program:secondFilterProgram]; -} - -- (void)setTexelHeight:(CGFloat)newValue; -{ - hasOverriddenImageSizeFactor = YES; - _texelHeight = newValue; - - [self setFloat:_texelHeight forUniform:texelHeightUniform program:secondFilterProgram]; -} - -- (void)setEdgeStrength:(CGFloat)newValue; -{ - _edgeStrength = newValue; - - [self setFloat:_edgeStrength forUniform:edgeStrengthUniform program:secondFilterProgram]; -} - - -@end - diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageSoftEleganceFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageSoftEleganceFilter.h deleted file mode 100755 index 596e156..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageSoftEleganceFilter.h +++ /dev/null @@ -1,19 +0,0 @@ -#import "GPUImageFilterGroup.h" - -@class GPUImagePicture; - -/** A photo filter based on Soft Elegance Photoshop action - http://h-d-stock.deviantart.com/art/H-D-A-soft-elegance-70107603 - */ - -// Note: If you want to use this effect you have to add -// lookup_soft_elegance_1.png and lookup_soft_elegance_2.png -// from Resources folder to your application bundle. - -@interface GPUImageSoftEleganceFilter : GPUImageFilterGroup -{ - GPUImagePicture *lookupImageSource1; - GPUImagePicture *lookupImageSource2; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageSoftEleganceFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageSoftEleganceFilter.m deleted file mode 100755 index e1d4e02..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageSoftEleganceFilter.m +++ /dev/null @@ -1,62 +0,0 @@ -#import "GPUImageSoftEleganceFilter.h" -#import "GPUImagePicture.h" -#import "GPUImageLookupFilter.h" -#import "GPUImageGaussianBlurFilter.h" -#import "GPUImageAlphaBlendFilter.h" - -@implementation GPUImageSoftEleganceFilter - -- (id)init; -{ - if (!(self = [super init])) - { - return nil; - } - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - UIImage *image1 = [UIImage imageNamed:@"lookup_soft_elegance_1.png"]; - UIImage *image2 = [UIImage imageNamed:@"lookup_soft_elegance_2.png"]; -#else - NSImage *image1 = [NSImage imageNamed:@"lookup_soft_elegance_1.png"]; - NSImage *image2 = [NSImage imageNamed:@"lookup_soft_elegance_2.png"]; -#endif - - NSAssert(image1 && image2, - @"To use GPUImageSoftEleganceFilter you need to add lookup_soft_elegance_1.png and lookup_soft_elegance_2.png from GPUImage/framework/Resources to your application bundle."); - - lookupImageSource1 = [[GPUImagePicture alloc] initWithImage:image1]; - GPUImageLookupFilter *lookupFilter1 = [[GPUImageLookupFilter alloc] init]; - [self addFilter:lookupFilter1]; - - [lookupImageSource1 addTarget:lookupFilter1 atTextureLocation:1]; - [lookupImageSource1 processImage]; - - GPUImageGaussianBlurFilter *gaussianBlur = [[GPUImageGaussianBlurFilter alloc] init]; - gaussianBlur.blurRadiusInPixels = 10.0; - [lookupFilter1 addTarget:gaussianBlur]; - [self addFilter:gaussianBlur]; - - GPUImageAlphaBlendFilter *alphaBlend = [[GPUImageAlphaBlendFilter alloc] init]; - alphaBlend.mix = 0.14; - [lookupFilter1 addTarget:alphaBlend]; - [gaussianBlur addTarget:alphaBlend]; - [self addFilter:alphaBlend]; - - lookupImageSource2 = [[GPUImagePicture alloc] initWithImage:image2]; - - GPUImageLookupFilter *lookupFilter2 = [[GPUImageLookupFilter alloc] init]; - [alphaBlend addTarget:lookupFilter2]; - [lookupImageSource2 addTarget:lookupFilter2]; - [lookupImageSource2 processImage]; - [self addFilter:lookupFilter2]; - - self.initialFilters = [NSArray arrayWithObjects:lookupFilter1, nil]; - self.terminalFilter = lookupFilter2; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageSoftLightBlendFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageSoftLightBlendFilter.h deleted file mode 100755 index 13fc877..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageSoftLightBlendFilter.h +++ /dev/null @@ -1,7 +0,0 @@ -#import "GPUImageTwoInputFilter.h" - -@interface GPUImageSoftLightBlendFilter : GPUImageTwoInputFilter -{ -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageSoftLightBlendFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageSoftLightBlendFilter.m deleted file mode 100755 index 368bce0..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageSoftLightBlendFilter.m +++ /dev/null @@ -1,54 +0,0 @@ -#import "GPUImageSoftLightBlendFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageSoftLightBlendFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - varying highp vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - mediump vec4 base = texture2D(inputImageTexture, textureCoordinate); - mediump vec4 overlay = texture2D(inputImageTexture2, textureCoordinate2); - - lowp float alphaDivisor = base.a + step(base.a, 0.0); // Protect against a divide-by-zero blacking out things in the output - gl_FragColor = base * (overlay.a * (base / alphaDivisor) + (2.0 * overlay * (1.0 - (base / alphaDivisor)))) + overlay * (1.0 - base.a) + base * (1.0 - overlay.a); - } -); -#else -NSString *const kGPUImageSoftLightBlendFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - vec4 base = texture2D(inputImageTexture, textureCoordinate); - vec4 overlay = texture2D(inputImageTexture2, textureCoordinate2); - - float alphaDivisor = base.a + step(base.a, 0.0); // Protect against a divide-by-zero blacking out things in the output - gl_FragColor = base * (overlay.a * (base / alphaDivisor) + (2.0 * overlay * (1.0 - (base / alphaDivisor)))) + overlay * (1.0 - base.a) + base * (1.0 - overlay.a); - } -); -#endif - -@implementation GPUImageSoftLightBlendFilter - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageSoftLightBlendFragmentShaderString])) - { - return nil; - } - - return self; -} - -@end - diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageSolidColorGenerator.h b/Example/Pods/GPUImage/framework/Source/GPUImageSolidColorGenerator.h deleted file mode 100644 index 58b1383..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageSolidColorGenerator.h +++ /dev/null @@ -1,19 +0,0 @@ -#import "GPUImageFilter.h" - -// This outputs an image with a constant color. You need to use -forceProcessingAtSize: in order to set the output image -// dimensions, or this won't work correctly - - -@interface GPUImageSolidColorGenerator : GPUImageFilter -{ - GLint colorUniform; - GLint useExistingAlphaUniform; -} - -// This color dictates what the output image will be filled with -@property(readwrite, nonatomic) GPUVector4 color; -@property(readwrite, nonatomic, assign) BOOL useExistingAlpha; // whether to use the alpha of the existing image or not, default is NO - -- (void)setColorRed:(CGFloat)redComponent green:(CGFloat)greenComponent blue:(CGFloat)blueComponent alpha:(CGFloat)alphaComponent; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageSolidColorGenerator.m b/Example/Pods/GPUImage/framework/Source/GPUImageSolidColorGenerator.m deleted file mode 100644 index 9b555ce..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageSolidColorGenerator.m +++ /dev/null @@ -1,123 +0,0 @@ -#import "GPUImageSolidColorGenerator.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUSolidColorFragmentShaderString = SHADER_STRING -( - precision lowp float; - - varying highp vec2 textureCoordinate; - uniform sampler2D inputImageTexture; - uniform vec4 color; - uniform float useExistingAlpha; - - void main() - { - lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - gl_FragColor = vec4(color.rgb, max(textureColor.a, 1.0 - useExistingAlpha)); - } - ); -#else -NSString *const kGPUSolidColorFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - uniform sampler2D inputImageTexture; - uniform vec4 color; - uniform float useExistingAlpha; - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - gl_FragColor = vec4(color.rgb, max(textureColor.a, 1.0 - useExistingAlpha)); - } - ); -#endif - -@implementation GPUImageSolidColorGenerator - -@synthesize color = _color; - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUSolidColorFragmentShaderString])) - { - return nil; - } - - colorUniform = [filterProgram uniformIndex:@"color"]; - useExistingAlphaUniform = [filterProgram uniformIndex:@"useExistingAlpha"]; - - _color = (GPUVector4){0.0f, 0.0f, 0.5f, 1.0f}; - self.useExistingAlpha = NO; - - return self; -} - -- (void)renderToTextureWithVertices:(const GLfloat *)vertices textureCoordinates:(const GLfloat *)textureCoordinates; -{ - if (self.preventRendering) - { - return; - } - - runSynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext setActiveShaderProgram:filterProgram]; - - outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:[self sizeOfFBO] textureOptions:self.outputTextureOptions onlyTexture:NO]; - [outputFramebuffer activateFramebuffer]; - - glClearColor(_color.one, _color.two, _color.three, _color.four); - glClear(GL_COLOR_BUFFER_BIT); - }); -} - - -#pragma mark - -#pragma mark Accessors - -- (void)forceProcessingAtSize:(CGSize)frameSize; -{ - [super forceProcessingAtSize:frameSize]; - - if (!CGSizeEqualToSize(inputTextureSize, CGSizeZero)) - { - [self newFrameReadyAtTime:kCMTimeIndefinite atIndex:0]; - } -} - -- (void)addTarget:(id)newTarget atTextureLocation:(NSInteger)textureLocation; -{ - [super addTarget:newTarget atTextureLocation:textureLocation]; - - if (!CGSizeEqualToSize(inputTextureSize, CGSizeZero)) - { - [newTarget setInputSize:inputTextureSize atIndex:textureLocation]; - [newTarget newFrameReadyAtTime:kCMTimeIndefinite atIndex:textureLocation]; - } -} - -- (void)setColor:(GPUVector4)newValue; -{ - [self setColorRed:newValue.one green:newValue.two blue:newValue.three alpha:newValue.four]; -} - -- (void)setColorRed:(CGFloat)redComponent green:(CGFloat)greenComponent blue:(CGFloat)blueComponent alpha:(CGFloat)alphaComponent; -{ - _color.one = (GLfloat)redComponent; - _color.two = (GLfloat)greenComponent; - _color.three = (GLfloat)blueComponent; - _color.four = (GLfloat)alphaComponent; - -// [self setVec4:_color forUniform:colorUniform program:filterProgram]; - runAsynchronouslyOnVideoProcessingQueue(^{ - [self newFrameReadyAtTime:kCMTimeIndefinite atIndex:0]; - }); -} - -- (void)setUseExistingAlpha:(BOOL)useExistingAlpha; -{ - _useExistingAlpha = useExistingAlpha; - - [self setInteger:(useExistingAlpha ? 1 : 0) forUniform:useExistingAlphaUniform program:filterProgram]; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageSourceOverBlendFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageSourceOverBlendFilter.h deleted file mode 100644 index 29e3063..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageSourceOverBlendFilter.h +++ /dev/null @@ -1,5 +0,0 @@ -#import "GPUImageTwoInputFilter.h" - -@interface GPUImageSourceOverBlendFilter : GPUImageTwoInputFilter - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageSourceOverBlendFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageSourceOverBlendFilter.m deleted file mode 100644 index 432adc4..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageSourceOverBlendFilter.m +++ /dev/null @@ -1,51 +0,0 @@ -#import "GPUImageSourceOverBlendFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageSourceOverBlendFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - varying highp vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - lowp vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate); - - gl_FragColor = mix(textureColor, textureColor2, textureColor2.a); - } -); -#else -NSString *const kGPUImageSourceOverBlendFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate); - - gl_FragColor = mix(textureColor, textureColor2, textureColor2.a); - } - ); -#endif - -@implementation GPUImageSourceOverBlendFilter - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageSourceOverBlendFragmentShaderString])) - { - return nil; - } - - return self; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageSphereRefractionFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageSphereRefractionFilter.h deleted file mode 100644 index cbbd2af..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageSphereRefractionFilter.h +++ /dev/null @@ -1,15 +0,0 @@ -#import "GPUImageFilter.h" - -@interface GPUImageSphereRefractionFilter : GPUImageFilter -{ - GLint radiusUniform, centerUniform, aspectRatioUniform, refractiveIndexUniform; -} - -/// The center about which to apply the distortion, with a default of (0.5, 0.5) -@property(readwrite, nonatomic) CGPoint center; -/// The radius of the distortion, ranging from 0.0 to 1.0, with a default of 0.25 -@property(readwrite, nonatomic) CGFloat radius; -/// The index of refraction for the sphere, with a default of 0.71 -@property(readwrite, nonatomic) CGFloat refractiveIndex; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageSphereRefractionFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageSphereRefractionFilter.m deleted file mode 100644 index b0f5404..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageSphereRefractionFilter.m +++ /dev/null @@ -1,179 +0,0 @@ -#import "GPUImageSphereRefractionFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageSphereRefractionFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform highp vec2 center; - uniform highp float radius; - uniform highp float aspectRatio; - uniform highp float refractiveIndex; - - void main() - { - highp vec2 textureCoordinateToUse = vec2(textureCoordinate.x, (textureCoordinate.y * aspectRatio + 0.5 - 0.5 * aspectRatio)); - highp float distanceFromCenter = distance(center, textureCoordinateToUse); - lowp float checkForPresenceWithinSphere = step(distanceFromCenter, radius); - - distanceFromCenter = distanceFromCenter / radius; - - highp float normalizedDepth = radius * sqrt(1.0 - distanceFromCenter * distanceFromCenter); - highp vec3 sphereNormal = normalize(vec3(textureCoordinateToUse - center, normalizedDepth)); - - highp vec3 refractedVector = refract(vec3(0.0, 0.0, -1.0), sphereNormal, refractiveIndex); - - gl_FragColor = texture2D(inputImageTexture, (refractedVector.xy + 1.0) * 0.5) * checkForPresenceWithinSphere; - } -); -#else -NSString *const kGPUImageSphereRefractionFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform vec2 center; - uniform float radius; - uniform float aspectRatio; - uniform float refractiveIndex; - - void main() - { - vec2 textureCoordinateToUse = vec2(textureCoordinate.x, (textureCoordinate.y * aspectRatio + 0.5 - 0.5 * aspectRatio)); - float distanceFromCenter = distance(center, textureCoordinateToUse); - float checkForPresenceWithinSphere = step(distanceFromCenter, radius); - - distanceFromCenter = distanceFromCenter / radius; - - float normalizedDepth = radius * sqrt(1.0 - distanceFromCenter * distanceFromCenter); - vec3 sphereNormal = normalize(vec3(textureCoordinateToUse - center, normalizedDepth)); - - vec3 refractedVector = refract(vec3(0.0, 0.0, -1.0), sphereNormal, refractiveIndex); - - gl_FragColor = texture2D(inputImageTexture, (refractedVector.xy + 1.0) * 0.5) * checkForPresenceWithinSphere; - } -); -#endif - -@interface GPUImageSphereRefractionFilter () - -- (void)adjustAspectRatio; - -@property (readwrite, nonatomic) CGFloat aspectRatio; - -@end - - -@implementation GPUImageSphereRefractionFilter - -@synthesize center = _center; -@synthesize radius = _radius; -@synthesize aspectRatio = _aspectRatio; -@synthesize refractiveIndex = _refractiveIndex; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [self initWithFragmentShaderFromString:kGPUImageSphereRefractionFragmentShaderString])) - { - return nil; - } - - return self; -} - -- (id)initWithFragmentShaderFromString:(NSString *)fragmentShaderString; -{ - if (!(self = [super initWithFragmentShaderFromString:fragmentShaderString])) - { - return nil; - } - - radiusUniform = [filterProgram uniformIndex:@"radius"]; - aspectRatioUniform = [filterProgram uniformIndex:@"aspectRatio"]; - centerUniform = [filterProgram uniformIndex:@"center"]; - refractiveIndexUniform = [filterProgram uniformIndex:@"refractiveIndex"]; - - self.radius = 0.25; - self.center = CGPointMake(0.5, 0.5); - self.refractiveIndex = 0.71; - - [self setBackgroundColorRed:0.0 green:0.0 blue:0.0 alpha:0.0]; - - return self; -} - -- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex; -{ - CGSize oldInputSize = inputTextureSize; - [super setInputSize:newSize atIndex:textureIndex]; - - if (!CGSizeEqualToSize(oldInputSize, inputTextureSize) && (!CGSizeEqualToSize(newSize, CGSizeZero)) ) - { - [self adjustAspectRatio]; - } -} - -#pragma mark - -#pragma mark Accessors - -- (void)adjustAspectRatio; -{ - if (GPUImageRotationSwapsWidthAndHeight(inputRotation)) - { - [self setAspectRatio:(inputTextureSize.width / inputTextureSize.height)]; - } - else - { - [self setAspectRatio:(inputTextureSize.height / inputTextureSize.width)]; - } -} - -- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; -{ - [super setInputRotation:newInputRotation atIndex:textureIndex]; - [self setCenter:self.center]; - [self adjustAspectRatio]; -} - -- (void)forceProcessingAtSize:(CGSize)frameSize; -{ - [super forceProcessingAtSize:frameSize]; - [self adjustAspectRatio]; -} - -- (void)setRadius:(CGFloat)newValue; -{ - _radius = newValue; - - [self setFloat:_radius forUniform:radiusUniform program:filterProgram]; -} - -- (void)setCenter:(CGPoint)newValue; -{ - _center = newValue; - - CGPoint rotatedPoint = [self rotatedPoint:_center forRotation:inputRotation]; - [self setPoint:rotatedPoint forUniform:centerUniform program:filterProgram]; -} - -- (void)setAspectRatio:(CGFloat)newValue; -{ - _aspectRatio = newValue; - - [self setFloat:_aspectRatio forUniform:aspectRatioUniform program:filterProgram]; -} - -- (void)setRefractiveIndex:(CGFloat)newValue; -{ - _refractiveIndex = newValue; - - [self setFloat:_refractiveIndex forUniform:refractiveIndexUniform program:filterProgram]; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageStillCamera.h b/Example/Pods/GPUImage/framework/Source/GPUImageStillCamera.h deleted file mode 100755 index e4db59b..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageStillCamera.h +++ /dev/null @@ -1,24 +0,0 @@ -#import "GPUImageVideoCamera.h" - -void stillImageDataReleaseCallback(void *releaseRefCon, const void *baseAddress); -void GPUImageCreateResizedSampleBuffer(CVPixelBufferRef cameraFrame, CGSize finalSize, CMSampleBufferRef *sampleBuffer); - -@interface GPUImageStillCamera : GPUImageVideoCamera - -/** The JPEG compression quality to use when capturing a photo as a JPEG. - */ -@property CGFloat jpegCompressionQuality; - -// Only reliably set inside the context of the completion handler of one of the capture methods -@property (readonly) NSDictionary *currentCaptureMetadata; - -// Photography controls -- (void)capturePhotoAsSampleBufferWithCompletionHandler:(void (^)(CMSampleBufferRef imageSampleBuffer, NSError *error))block; -- (void)capturePhotoAsImageProcessedUpToFilter:(GPUImageOutput *)finalFilterInChain withCompletionHandler:(void (^)(UIImage *processedImage, NSError *error))block; -- (void)capturePhotoAsImageProcessedUpToFilter:(GPUImageOutput *)finalFilterInChain withOrientation:(UIImageOrientation)orientation withCompletionHandler:(void (^)(UIImage *processedImage, NSError *error))block; -- (void)capturePhotoAsJPEGProcessedUpToFilter:(GPUImageOutput *)finalFilterInChain withCompletionHandler:(void (^)(NSData *processedJPEG, NSError *error))block; -- (void)capturePhotoAsJPEGProcessedUpToFilter:(GPUImageOutput *)finalFilterInChain withOrientation:(UIImageOrientation)orientation withCompletionHandler:(void (^)(NSData *processedJPEG, NSError *error))block; -- (void)capturePhotoAsPNGProcessedUpToFilter:(GPUImageOutput *)finalFilterInChain withCompletionHandler:(void (^)(NSData *processedPNG, NSError *error))block; -- (void)capturePhotoAsPNGProcessedUpToFilter:(GPUImageOutput *)finalFilterInChain withOrientation:(UIImageOrientation)orientation withCompletionHandler:(void (^)(NSData *processedPNG, NSError *error))block; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageStillCamera.m b/Example/Pods/GPUImage/framework/Source/GPUImageStillCamera.m deleted file mode 100755 index 447f79f..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageStillCamera.m +++ /dev/null @@ -1,338 +0,0 @@ -// 2448x3264 pixel image = 31,961,088 bytes for uncompressed RGBA - -#import "GPUImageStillCamera.h" - -void stillImageDataReleaseCallback(void *releaseRefCon, const void *baseAddress) -{ - free((void *)baseAddress); -} - -void GPUImageCreateResizedSampleBuffer(CVPixelBufferRef cameraFrame, CGSize finalSize, CMSampleBufferRef *sampleBuffer) -{ - // CVPixelBufferCreateWithPlanarBytes for YUV input - - CGSize originalSize = CGSizeMake(CVPixelBufferGetWidth(cameraFrame), CVPixelBufferGetHeight(cameraFrame)); - - CVPixelBufferLockBaseAddress(cameraFrame, 0); - GLubyte *sourceImageBytes = CVPixelBufferGetBaseAddress(cameraFrame); - CGDataProviderRef dataProvider = CGDataProviderCreateWithData(NULL, sourceImageBytes, CVPixelBufferGetBytesPerRow(cameraFrame) * originalSize.height, NULL); - CGColorSpaceRef genericRGBColorspace = CGColorSpaceCreateDeviceRGB(); - CGImageRef cgImageFromBytes = CGImageCreate((int)originalSize.width, (int)originalSize.height, 8, 32, CVPixelBufferGetBytesPerRow(cameraFrame), genericRGBColorspace, kCGBitmapByteOrder32Little | kCGImageAlphaPremultipliedFirst, dataProvider, NULL, NO, kCGRenderingIntentDefault); - - GLubyte *imageData = (GLubyte *) calloc(1, (int)finalSize.width * (int)finalSize.height * 4); - - CGContextRef imageContext = CGBitmapContextCreate(imageData, (int)finalSize.width, (int)finalSize.height, 8, (int)finalSize.width * 4, genericRGBColorspace, kCGBitmapByteOrder32Little | kCGImageAlphaPremultipliedFirst); - CGContextDrawImage(imageContext, CGRectMake(0.0, 0.0, finalSize.width, finalSize.height), cgImageFromBytes); - CGImageRelease(cgImageFromBytes); - CGContextRelease(imageContext); - CGColorSpaceRelease(genericRGBColorspace); - CGDataProviderRelease(dataProvider); - - CVPixelBufferRef pixel_buffer = NULL; - CVPixelBufferCreateWithBytes(kCFAllocatorDefault, finalSize.width, finalSize.height, kCVPixelFormatType_32BGRA, imageData, finalSize.width * 4, stillImageDataReleaseCallback, NULL, NULL, &pixel_buffer); - CMVideoFormatDescriptionRef videoInfo = NULL; - CMVideoFormatDescriptionCreateForImageBuffer(NULL, pixel_buffer, &videoInfo); - - CMTime frameTime = CMTimeMake(1, 30); - CMSampleTimingInfo timing = {frameTime, frameTime, kCMTimeInvalid}; - - CMSampleBufferCreateForImageBuffer(kCFAllocatorDefault, pixel_buffer, YES, NULL, NULL, videoInfo, &timing, sampleBuffer); - CVPixelBufferUnlockBaseAddress(cameraFrame, 0); - CFRelease(videoInfo); - CVPixelBufferRelease(pixel_buffer); -} - -@interface GPUImageStillCamera () -{ - AVCaptureStillImageOutput *photoOutput; -} - -// Methods calling this are responsible for calling dispatch_semaphore_signal(frameRenderingSemaphore) somewhere inside the block -- (void)capturePhotoProcessedUpToFilter:(GPUImageOutput *)finalFilterInChain withImageOnGPUHandler:(void (^)(NSError *error))block; - -@end - -@implementation GPUImageStillCamera { - BOOL requiresFrontCameraTextureCacheCorruptionWorkaround; -} - -@synthesize currentCaptureMetadata = _currentCaptureMetadata; -@synthesize jpegCompressionQuality = _jpegCompressionQuality; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)initWithSessionPreset:(NSString *)sessionPreset cameraPosition:(AVCaptureDevicePosition)cameraPosition; -{ - if (!(self = [super initWithSessionPreset:sessionPreset cameraPosition:cameraPosition])) - { - return nil; - } - - /* Detect iOS version < 6 which require a texture cache corruption workaround */ -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - requiresFrontCameraTextureCacheCorruptionWorkaround = [[[UIDevice currentDevice] systemVersion] compare:@"6.0" options:NSNumericSearch] == NSOrderedAscending; -#pragma clang diagnostic pop - - [self.captureSession beginConfiguration]; - - photoOutput = [[AVCaptureStillImageOutput alloc] init]; - - // Having a still photo input set to BGRA and video to YUV doesn't work well, so since I don't have YUV resizing for iPhone 4 yet, kick back to BGRA for that device -// if (captureAsYUV && [GPUImageContext supportsFastTextureUpload]) - if (captureAsYUV && [GPUImageContext deviceSupportsRedTextures]) - { - BOOL supportsFullYUVRange = NO; - NSArray *supportedPixelFormats = photoOutput.availableImageDataCVPixelFormatTypes; - for (NSNumber *currentPixelFormat in supportedPixelFormats) - { - if ([currentPixelFormat intValue] == kCVPixelFormatType_420YpCbCr8BiPlanarFullRange) - { - supportsFullYUVRange = YES; - } - } - - if (supportsFullYUVRange) - { - [photoOutput setOutputSettings:[NSDictionary dictionaryWithObject:[NSNumber numberWithInt:kCVPixelFormatType_420YpCbCr8BiPlanarFullRange] forKey:(id)kCVPixelBufferPixelFormatTypeKey]]; - } - else - { - [photoOutput setOutputSettings:[NSDictionary dictionaryWithObject:[NSNumber numberWithInt:kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange] forKey:(id)kCVPixelBufferPixelFormatTypeKey]]; - } - } - else - { - captureAsYUV = NO; - [photoOutput setOutputSettings:[NSDictionary dictionaryWithObject:[NSNumber numberWithInt:kCVPixelFormatType_32BGRA] forKey:(id)kCVPixelBufferPixelFormatTypeKey]]; - [videoOutput setVideoSettings:[NSDictionary dictionaryWithObject:[NSNumber numberWithInt:kCVPixelFormatType_32BGRA] forKey:(id)kCVPixelBufferPixelFormatTypeKey]]; - } - - [self.captureSession addOutput:photoOutput]; - - [self.captureSession commitConfiguration]; - - self.jpegCompressionQuality = 0.8; - - return self; -} - -- (id)init; -{ - if (!(self = [self initWithSessionPreset:AVCaptureSessionPresetPhoto cameraPosition:AVCaptureDevicePositionBack])) - { - return nil; - } - return self; -} - -- (void)removeInputsAndOutputs; -{ - [self.captureSession removeOutput:photoOutput]; - [super removeInputsAndOutputs]; -} - -#pragma mark - -#pragma mark Photography controls - -- (void)capturePhotoAsSampleBufferWithCompletionHandler:(void (^)(CMSampleBufferRef imageSampleBuffer, NSError *error))block -{ - NSLog(@"If you want to use the method capturePhotoAsSampleBufferWithCompletionHandler:, you must comment out the line in GPUImageStillCamera.m in the method initWithSessionPreset:cameraPosition: which sets the CVPixelBufferPixelFormatTypeKey, as well as uncomment the rest of the method capturePhotoAsSampleBufferWithCompletionHandler:. However, if you do this you cannot use any of the photo capture methods to take a photo if you also supply a filter."); - - /*dispatch_semaphore_wait(frameRenderingSemaphore, DISPATCH_TIME_FOREVER); - - [photoOutput captureStillImageAsynchronouslyFromConnection:[[photoOutput connections] objectAtIndex:0] completionHandler:^(CMSampleBufferRef imageSampleBuffer, NSError *error) { - block(imageSampleBuffer, error); - }]; - - dispatch_semaphore_signal(frameRenderingSemaphore); - - */ - - return; -} - -- (void)capturePhotoAsImageProcessedUpToFilter:(GPUImageOutput *)finalFilterInChain withCompletionHandler:(void (^)(UIImage *processedImage, NSError *error))block; -{ - [self capturePhotoProcessedUpToFilter:finalFilterInChain withImageOnGPUHandler:^(NSError *error) { - UIImage *filteredPhoto = nil; - - if(!error){ - filteredPhoto = [finalFilterInChain imageFromCurrentFramebuffer]; - } - dispatch_semaphore_signal(frameRenderingSemaphore); - - block(filteredPhoto, error); - }]; -} - -- (void)capturePhotoAsImageProcessedUpToFilter:(GPUImageOutput *)finalFilterInChain withOrientation:(UIImageOrientation)orientation withCompletionHandler:(void (^)(UIImage *processedImage, NSError *error))block { - [self capturePhotoProcessedUpToFilter:finalFilterInChain withImageOnGPUHandler:^(NSError *error) { - UIImage *filteredPhoto = nil; - - if(!error) { - filteredPhoto = [finalFilterInChain imageFromCurrentFramebufferWithOrientation:orientation]; - } - dispatch_semaphore_signal(frameRenderingSemaphore); - - block(filteredPhoto, error); - }]; -} - -- (void)capturePhotoAsJPEGProcessedUpToFilter:(GPUImageOutput *)finalFilterInChain withCompletionHandler:(void (^)(NSData *processedJPEG, NSError *error))block; -{ -// reportAvailableMemoryForGPUImage(@"Before Capture"); - - [self capturePhotoProcessedUpToFilter:finalFilterInChain withImageOnGPUHandler:^(NSError *error) { - NSData *dataForJPEGFile = nil; - - if(!error){ - @autoreleasepool { - UIImage *filteredPhoto = [finalFilterInChain imageFromCurrentFramebuffer]; - dispatch_semaphore_signal(frameRenderingSemaphore); -// reportAvailableMemoryForGPUImage(@"After UIImage generation"); - - dataForJPEGFile = UIImageJPEGRepresentation(filteredPhoto,self.jpegCompressionQuality); -// reportAvailableMemoryForGPUImage(@"After JPEG generation"); - } - -// reportAvailableMemoryForGPUImage(@"After autorelease pool"); - }else{ - dispatch_semaphore_signal(frameRenderingSemaphore); - } - - block(dataForJPEGFile, error); - }]; -} - -- (void)capturePhotoAsJPEGProcessedUpToFilter:(GPUImageOutput *)finalFilterInChain withOrientation:(UIImageOrientation)orientation withCompletionHandler:(void (^)(NSData *processedImage, NSError *error))block { - [self capturePhotoProcessedUpToFilter:finalFilterInChain withImageOnGPUHandler:^(NSError *error) { - NSData *dataForJPEGFile = nil; - - if(!error) { - @autoreleasepool { - UIImage *filteredPhoto = [finalFilterInChain imageFromCurrentFramebufferWithOrientation:orientation]; - dispatch_semaphore_signal(frameRenderingSemaphore); - - dataForJPEGFile = UIImageJPEGRepresentation(filteredPhoto, self.jpegCompressionQuality); - } - } else { - dispatch_semaphore_signal(frameRenderingSemaphore); - } - - block(dataForJPEGFile, error); - }]; -} - -- (void)capturePhotoAsPNGProcessedUpToFilter:(GPUImageOutput *)finalFilterInChain withCompletionHandler:(void (^)(NSData *processedPNG, NSError *error))block; -{ - - [self capturePhotoProcessedUpToFilter:finalFilterInChain withImageOnGPUHandler:^(NSError *error) { - NSData *dataForPNGFile = nil; - - if(!error){ - @autoreleasepool { - UIImage *filteredPhoto = [finalFilterInChain imageFromCurrentFramebuffer]; - dispatch_semaphore_signal(frameRenderingSemaphore); - dataForPNGFile = UIImagePNGRepresentation(filteredPhoto); - } - }else{ - dispatch_semaphore_signal(frameRenderingSemaphore); - } - - block(dataForPNGFile, error); - }]; - - return; -} - -- (void)capturePhotoAsPNGProcessedUpToFilter:(GPUImageOutput *)finalFilterInChain withOrientation:(UIImageOrientation)orientation withCompletionHandler:(void (^)(NSData *processedPNG, NSError *error))block; -{ - - [self capturePhotoProcessedUpToFilter:finalFilterInChain withImageOnGPUHandler:^(NSError *error) { - NSData *dataForPNGFile = nil; - - if(!error){ - @autoreleasepool { - UIImage *filteredPhoto = [finalFilterInChain imageFromCurrentFramebufferWithOrientation:orientation]; - dispatch_semaphore_signal(frameRenderingSemaphore); - dataForPNGFile = UIImagePNGRepresentation(filteredPhoto); - } - }else{ - dispatch_semaphore_signal(frameRenderingSemaphore); - } - - block(dataForPNGFile, error); - }]; - - return; -} - -#pragma mark - Private Methods - -- (void)capturePhotoProcessedUpToFilter:(GPUImageOutput *)finalFilterInChain withImageOnGPUHandler:(void (^)(NSError *error))block -{ - dispatch_semaphore_wait(frameRenderingSemaphore, DISPATCH_TIME_FOREVER); - - if(photoOutput.isCapturingStillImage){ - block([NSError errorWithDomain:AVFoundationErrorDomain code:AVErrorMaximumStillImageCaptureRequestsExceeded userInfo:nil]); - return; - } - - [photoOutput captureStillImageAsynchronouslyFromConnection:[[photoOutput connections] objectAtIndex:0] completionHandler:^(CMSampleBufferRef imageSampleBuffer, NSError *error) { - if(imageSampleBuffer == NULL){ - block(error); - return; - } - - // For now, resize photos to fix within the max texture size of the GPU - CVImageBufferRef cameraFrame = CMSampleBufferGetImageBuffer(imageSampleBuffer); - - CGSize sizeOfPhoto = CGSizeMake(CVPixelBufferGetWidth(cameraFrame), CVPixelBufferGetHeight(cameraFrame)); - CGSize scaledImageSizeToFitOnGPU = [GPUImageContext sizeThatFitsWithinATextureForSize:sizeOfPhoto]; - if (!CGSizeEqualToSize(sizeOfPhoto, scaledImageSizeToFitOnGPU)) - { - CMSampleBufferRef sampleBuffer = NULL; - - if (CVPixelBufferGetPlaneCount(cameraFrame) > 0) - { - NSAssert(NO, @"Error: no downsampling for YUV input in the framework yet"); - } - else - { - GPUImageCreateResizedSampleBuffer(cameraFrame, scaledImageSizeToFitOnGPU, &sampleBuffer); - } - - dispatch_semaphore_signal(frameRenderingSemaphore); - [finalFilterInChain useNextFrameForImageCapture]; - [self captureOutput:photoOutput didOutputSampleBuffer:sampleBuffer fromConnection:[[photoOutput connections] objectAtIndex:0]]; - dispatch_semaphore_wait(frameRenderingSemaphore, DISPATCH_TIME_FOREVER); - if (sampleBuffer != NULL) - CFRelease(sampleBuffer); - } - else - { - // This is a workaround for the corrupt images that are sometimes returned when taking a photo with the front camera and using the iOS 5.0 texture caches - AVCaptureDevicePosition currentCameraPosition = [[videoInput device] position]; - if ( (currentCameraPosition != AVCaptureDevicePositionFront) || (![GPUImageContext supportsFastTextureUpload]) || !requiresFrontCameraTextureCacheCorruptionWorkaround) - { - dispatch_semaphore_signal(frameRenderingSemaphore); - [finalFilterInChain useNextFrameForImageCapture]; - [self captureOutput:photoOutput didOutputSampleBuffer:imageSampleBuffer fromConnection:[[photoOutput connections] objectAtIndex:0]]; - dispatch_semaphore_wait(frameRenderingSemaphore, DISPATCH_TIME_FOREVER); - } - } - - CFDictionaryRef metadata = CMCopyDictionaryOfAttachments(NULL, imageSampleBuffer, kCMAttachmentMode_ShouldPropagate); - _currentCaptureMetadata = (__bridge_transfer NSDictionary *)metadata; - - block(nil); - - _currentCaptureMetadata = nil; - }]; -} - - - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageStretchDistortionFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageStretchDistortionFilter.h deleted file mode 100755 index 0780309..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageStretchDistortionFilter.h +++ /dev/null @@ -1,13 +0,0 @@ -#import "GPUImageFilter.h" - -/** Creates a stretch distortion of the image - */ -@interface GPUImageStretchDistortionFilter : GPUImageFilter { - GLint centerUniform; -} - -/** The center about which to apply the distortion, with a default of (0.5, 0.5) - */ -@property(readwrite, nonatomic) CGPoint center; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageStretchDistortionFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageStretchDistortionFilter.m deleted file mode 100755 index d38cac3..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageStretchDistortionFilter.m +++ /dev/null @@ -1,99 +0,0 @@ -#import "GPUImageStretchDistortionFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageStretchDistortionFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform highp vec2 center; - - void main() - { - highp vec2 normCoord = 2.0 * textureCoordinate - 1.0; - highp vec2 normCenter = 2.0 * center - 1.0; - - normCoord -= normCenter; - mediump vec2 s = sign(normCoord); - normCoord = abs(normCoord); - normCoord = 0.5 * normCoord + 0.5 * smoothstep(0.25, 0.5, normCoord) * normCoord; - normCoord = s * normCoord; - - normCoord += normCenter; - - mediump vec2 textureCoordinateToUse = normCoord / 2.0 + 0.5; - - - gl_FragColor = texture2D(inputImageTexture, textureCoordinateToUse ); - - } -); -#else -NSString *const kGPUImageStretchDistortionFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform vec2 center; - - void main() - { - vec2 normCoord = 2.0 * textureCoordinate - 1.0; - vec2 normCenter = 2.0 * center - 1.0; - - normCoord -= normCenter; - vec2 s = sign(normCoord); - normCoord = abs(normCoord); - normCoord = 0.5 * normCoord + 0.5 * smoothstep(0.25, 0.5, normCoord) * normCoord; - normCoord = s * normCoord; - - normCoord += normCenter; - - vec2 textureCoordinateToUse = normCoord / 2.0 + 0.5; - - gl_FragColor = texture2D(inputImageTexture, textureCoordinateToUse); - } -); -#endif - -@implementation GPUImageStretchDistortionFilter - -@synthesize center = _center; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageStretchDistortionFragmentShaderString])) - { - return nil; - } - - centerUniform = [filterProgram uniformIndex:@"center"]; - - self.center = CGPointMake(0.5, 0.5); - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; -{ - [super setInputRotation:newInputRotation atIndex:textureIndex]; - [self setCenter:self.center]; -} - -- (void)setCenter:(CGPoint)newValue; -{ - _center = newValue; - - CGPoint rotatedPoint = [self rotatedPoint:_center forRotation:inputRotation]; - [self setPoint:rotatedPoint forUniform:centerUniform program:filterProgram]; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageSubtractBlendFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageSubtractBlendFilter.h deleted file mode 100755 index 8dee821..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageSubtractBlendFilter.h +++ /dev/null @@ -1,5 +0,0 @@ -#import "GPUImageTwoInputFilter.h" - -@interface GPUImageSubtractBlendFilter : GPUImageTwoInputFilter - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageSubtractBlendFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageSubtractBlendFilter.m deleted file mode 100755 index 8938bae..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageSubtractBlendFilter.m +++ /dev/null @@ -1,52 +0,0 @@ -#import "GPUImageSubtractBlendFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageSubtractBlendFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - varying highp vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - lowp vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate2); - - gl_FragColor = vec4(textureColor.rgb - textureColor2.rgb, textureColor.a); - } -); -#else -NSString *const kGPUImageSubtractBlendFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate2); - - gl_FragColor = vec4(textureColor.rgb - textureColor2.rgb, textureColor.a); - } -); -#endif - -@implementation GPUImageSubtractBlendFilter - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageSubtractBlendFragmentShaderString])) - { - return nil; - } - - return self; -} - -@end - diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageSwirlFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageSwirlFilter.h deleted file mode 100755 index ed7d012..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageSwirlFilter.h +++ /dev/null @@ -1,17 +0,0 @@ -#import "GPUImageFilter.h" - -/** Creates a swirl distortion on the image - */ -@interface GPUImageSwirlFilter : GPUImageFilter -{ - GLint radiusUniform, centerUniform, angleUniform; -} - -/// The center about which to apply the distortion, with a default of (0.5, 0.5) -@property(readwrite, nonatomic) CGPoint center; -/// The radius of the distortion, ranging from 0.0 to 1.0, with a default of 0.5 -@property(readwrite, nonatomic) CGFloat radius; -/// The amount of distortion to apply, with a minimum of 0.0 and a default of 1.0 -@property(readwrite, nonatomic) CGFloat angle; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageSwirlFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageSwirlFilter.m deleted file mode 100755 index 5462bc6..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageSwirlFilter.m +++ /dev/null @@ -1,123 +0,0 @@ -#import "GPUImageSwirlFilter.h" - -// Adapted from the shader example here: http://www.geeks3d.com/20110428/shader-library-swirl-post-processing-filter-in-glsl/ -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageSwirlFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform highp vec2 center; - uniform highp float radius; - uniform highp float angle; - - void main() - { - highp vec2 textureCoordinateToUse = textureCoordinate; - highp float dist = distance(center, textureCoordinate); - if (dist < radius) - { - textureCoordinateToUse -= center; - highp float percent = (radius - dist) / radius; - highp float theta = percent * percent * angle * 8.0; - highp float s = sin(theta); - highp float c = cos(theta); - textureCoordinateToUse = vec2(dot(textureCoordinateToUse, vec2(c, -s)), dot(textureCoordinateToUse, vec2(s, c))); - textureCoordinateToUse += center; - } - - gl_FragColor = texture2D(inputImageTexture, textureCoordinateToUse ); - - } -); -#else -NSString *const kGPUImageSwirlFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform vec2 center; - uniform float radius; - uniform float angle; - - void main() - { - vec2 textureCoordinateToUse = textureCoordinate; - float dist = distance(center, textureCoordinate); - if (dist < radius) - { - textureCoordinateToUse -= center; - float percent = (radius - dist) / radius; - float theta = percent * percent * angle * 8.0; - float s = sin(theta); - float c = cos(theta); - textureCoordinateToUse = vec2(dot(textureCoordinateToUse, vec2(c, -s)), dot(textureCoordinateToUse, vec2(s, c))); - textureCoordinateToUse += center; - } - - gl_FragColor = texture2D(inputImageTexture, textureCoordinateToUse ); - } -); -#endif - -@implementation GPUImageSwirlFilter - -@synthesize center = _center; -@synthesize radius = _radius; -@synthesize angle = _angle; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageSwirlFragmentShaderString])) - { - return nil; - } - - radiusUniform = [filterProgram uniformIndex:@"radius"]; - angleUniform = [filterProgram uniformIndex:@"angle"]; - centerUniform = [filterProgram uniformIndex:@"center"]; - - self.radius = 0.5; - self.angle = 1.0; - self.center = CGPointMake(0.5, 0.5); - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; -{ - [super setInputRotation:newInputRotation atIndex:textureIndex]; - [self setCenter:self.center]; -} - -- (void)setRadius:(CGFloat)newValue; -{ - _radius = newValue; - - [self setFloat:_radius forUniform:radiusUniform program:filterProgram]; -} - -- (void)setAngle:(CGFloat)newValue; -{ - _angle = newValue; - - [self setFloat:_angle forUniform:angleUniform program:filterProgram]; -} - -- (void)setCenter:(CGPoint)newValue; -{ - _center = newValue; - - CGPoint rotatedPoint = [self rotatedPoint:_center forRotation:inputRotation]; - [self setPoint:rotatedPoint forUniform:centerUniform program:filterProgram]; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageTextureInput.h b/Example/Pods/GPUImage/framework/Source/GPUImageTextureInput.h deleted file mode 100755 index 8190305..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageTextureInput.h +++ /dev/null @@ -1,14 +0,0 @@ -#import "GPUImageOutput.h" - -@interface GPUImageTextureInput : GPUImageOutput -{ - CGSize textureSize; -} - -// Initialization and teardown -- (id)initWithTexture:(GLuint)newInputTexture size:(CGSize)newTextureSize; - -// Image rendering -- (void)processTextureWithFrameTime:(CMTime)frameTime; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageTextureInput.m b/Example/Pods/GPUImage/framework/Source/GPUImageTextureInput.m deleted file mode 100755 index ad3ca1d..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageTextureInput.m +++ /dev/null @@ -1,46 +0,0 @@ -#import "GPUImageTextureInput.h" - -@implementation GPUImageTextureInput - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)initWithTexture:(GLuint)newInputTexture size:(CGSize)newTextureSize; -{ - if (!(self = [super init])) - { - return nil; - } - - runSynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext useImageProcessingContext]; - }); - - textureSize = newTextureSize; - - runSynchronouslyOnVideoProcessingQueue(^{ - outputFramebuffer = [[GPUImageFramebuffer alloc] initWithSize:newTextureSize overriddenTexture:newInputTexture]; - }); - - return self; -} - -#pragma mark - -#pragma mark Image rendering - -- (void)processTextureWithFrameTime:(CMTime)frameTime; -{ - runAsynchronouslyOnVideoProcessingQueue(^{ - for (id currentTarget in targets) - { - NSInteger indexOfObject = [targets indexOfObject:currentTarget]; - NSInteger targetTextureIndex = [[targetTextureIndices objectAtIndex:indexOfObject] integerValue]; - - [currentTarget setInputSize:textureSize atIndex:targetTextureIndex]; - [currentTarget setInputFramebuffer:outputFramebuffer atIndex:targetTextureIndex]; - [currentTarget newFrameReadyAtTime:frameTime atIndex:targetTextureIndex]; - } - }); -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageTextureOutput.h b/Example/Pods/GPUImage/framework/Source/GPUImageTextureOutput.h deleted file mode 100755 index 05e1f36..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageTextureOutput.h +++ /dev/null @@ -1,21 +0,0 @@ -#import -#import "GPUImageContext.h" - -@protocol GPUImageTextureOutputDelegate; - -@interface GPUImageTextureOutput : NSObject -{ - GPUImageFramebuffer *firstInputFramebuffer; -} - -@property(readwrite, unsafe_unretained, nonatomic) id delegate; -@property(readonly) GLuint texture; -@property(nonatomic) BOOL enabled; - -- (void)doneWithTexture; - -@end - -@protocol GPUImageTextureOutputDelegate -- (void)newFrameReadyFromTextureOutput:(GPUImageTextureOutput *)callbackTextureOutput; -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageTextureOutput.m b/Example/Pods/GPUImage/framework/Source/GPUImageTextureOutput.m deleted file mode 100755 index 1e1f24f..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageTextureOutput.m +++ /dev/null @@ -1,83 +0,0 @@ -#import "GPUImageTextureOutput.h" - -@implementation GPUImageTextureOutput - -@synthesize delegate = _delegate; -@synthesize texture = _texture; -@synthesize enabled; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super init])) - { - return nil; - } - - self.enabled = YES; - - return self; -} - -- (void)doneWithTexture; -{ - [firstInputFramebuffer unlock]; -} - -#pragma mark - -#pragma mark GPUImageInput protocol - -- (void)newFrameReadyAtTime:(CMTime)frameTime atIndex:(NSInteger)textureIndex; -{ - [_delegate newFrameReadyFromTextureOutput:self]; -} - -- (NSInteger)nextAvailableTextureIndex; -{ - return 0; -} - -// TODO: Deal with the fact that the texture changes regularly as a result of the caching -- (void)setInputFramebuffer:(GPUImageFramebuffer *)newInputFramebuffer atIndex:(NSInteger)textureIndex; -{ - firstInputFramebuffer = newInputFramebuffer; - [firstInputFramebuffer lock]; - - _texture = [firstInputFramebuffer texture]; -} - -- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; -{ -} - -- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex; -{ -} - -- (CGSize)maximumOutputSize; -{ - return CGSizeZero; -} - -- (void)endProcessing -{ -} - -- (BOOL)shouldIgnoreUpdatesToThisTarget; -{ - return NO; -} - -- (BOOL)wantsMonochromeInput; -{ - return NO; -} - -- (void)setCurrentlyReceivingMonochromeInput:(BOOL)newValue; -{ - -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageThreeInputFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageThreeInputFilter.h deleted file mode 100644 index 5ecd53e..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageThreeInputFilter.h +++ /dev/null @@ -1,21 +0,0 @@ -#import "GPUImageTwoInputFilter.h" - -extern NSString *const kGPUImageThreeInputTextureVertexShaderString; - -@interface GPUImageThreeInputFilter : GPUImageTwoInputFilter -{ - GPUImageFramebuffer *thirdInputFramebuffer; - - GLint filterThirdTextureCoordinateAttribute; - GLint filterInputTextureUniform3; - GPUImageRotationMode inputRotation3; - GLuint filterSourceTexture3; - CMTime thirdFrameTime; - - BOOL hasSetSecondTexture, hasReceivedThirdFrame, thirdFrameWasVideo; - BOOL thirdFrameCheckDisabled; -} - -- (void)disableThirdFrameCheck; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageThreeInputFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageThreeInputFilter.m deleted file mode 100644 index 2f4f113..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageThreeInputFilter.m +++ /dev/null @@ -1,328 +0,0 @@ -#import "GPUImageThreeInputFilter.h" - - -NSString *const kGPUImageThreeInputTextureVertexShaderString = SHADER_STRING -( - attribute vec4 position; - attribute vec4 inputTextureCoordinate; - attribute vec4 inputTextureCoordinate2; - attribute vec4 inputTextureCoordinate3; - - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; - varying vec2 textureCoordinate3; - - void main() - { - gl_Position = position; - textureCoordinate = inputTextureCoordinate.xy; - textureCoordinate2 = inputTextureCoordinate2.xy; - textureCoordinate3 = inputTextureCoordinate3.xy; - } -); - -@implementation GPUImageThreeInputFilter - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)initWithFragmentShaderFromString:(NSString *)fragmentShaderString; -{ - if (!(self = [self initWithVertexShaderFromString:kGPUImageThreeInputTextureVertexShaderString fragmentShaderFromString:fragmentShaderString])) - { - return nil; - } - - return self; -} - -- (id)initWithVertexShaderFromString:(NSString *)vertexShaderString fragmentShaderFromString:(NSString *)fragmentShaderString; -{ - if (!(self = [super initWithVertexShaderFromString:vertexShaderString fragmentShaderFromString:fragmentShaderString])) - { - return nil; - } - - inputRotation3 = kGPUImageNoRotation; - - hasSetSecondTexture = NO; - - hasReceivedThirdFrame = NO; - thirdFrameWasVideo = NO; - thirdFrameCheckDisabled = NO; - - thirdFrameTime = kCMTimeInvalid; - - runSynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext useImageProcessingContext]; - filterThirdTextureCoordinateAttribute = [filterProgram attributeIndex:@"inputTextureCoordinate3"]; - - filterInputTextureUniform3 = [filterProgram uniformIndex:@"inputImageTexture3"]; // This does assume a name of "inputImageTexture3" for the third input texture in the fragment shader - glEnableVertexAttribArray(filterThirdTextureCoordinateAttribute); - }); - - return self; -} - -- (void)initializeAttributes; -{ - [super initializeAttributes]; - [filterProgram addAttribute:@"inputTextureCoordinate3"]; -} - -- (void)disableThirdFrameCheck; -{ - thirdFrameCheckDisabled = YES; -} - -#pragma mark - -#pragma mark Rendering - -- (void)renderToTextureWithVertices:(const GLfloat *)vertices textureCoordinates:(const GLfloat *)textureCoordinates; -{ - if (self.preventRendering) - { - [firstInputFramebuffer unlock]; - [secondInputFramebuffer unlock]; - [thirdInputFramebuffer unlock]; - return; - } - - [GPUImageContext setActiveShaderProgram:filterProgram]; - outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:[self sizeOfFBO] textureOptions:self.outputTextureOptions onlyTexture:NO]; - [outputFramebuffer activateFramebuffer]; - if (usingNextFrameForImageCapture) - { - [outputFramebuffer lock]; - } - - [self setUniformsForProgramAtIndex:0]; - - glClearColor(backgroundColorRed, backgroundColorGreen, backgroundColorBlue, backgroundColorAlpha); - glClear(GL_COLOR_BUFFER_BIT); - - glActiveTexture(GL_TEXTURE2); - glBindTexture(GL_TEXTURE_2D, [firstInputFramebuffer texture]); - glUniform1i(filterInputTextureUniform, 2); - - glActiveTexture(GL_TEXTURE3); - glBindTexture(GL_TEXTURE_2D, [secondInputFramebuffer texture]); - glUniform1i(filterInputTextureUniform2, 3); - - glActiveTexture(GL_TEXTURE4); - glBindTexture(GL_TEXTURE_2D, [thirdInputFramebuffer texture]); - glUniform1i(filterInputTextureUniform3, 4); - - glVertexAttribPointer(filterPositionAttribute, 2, GL_FLOAT, 0, 0, vertices); - glVertexAttribPointer(filterTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, textureCoordinates); - glVertexAttribPointer(filterSecondTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, [[self class] textureCoordinatesForRotation:inputRotation2]); - glVertexAttribPointer(filterThirdTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, [[self class] textureCoordinatesForRotation:inputRotation3]); - - glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); - [firstInputFramebuffer unlock]; - [secondInputFramebuffer unlock]; - [thirdInputFramebuffer unlock]; - if (usingNextFrameForImageCapture) - { - dispatch_semaphore_signal(imageCaptureSemaphore); - } -} - -#pragma mark - -#pragma mark GPUImageInput - -- (NSInteger)nextAvailableTextureIndex; -{ - if (hasSetSecondTexture) - { - return 2; - } - else if (hasSetFirstTexture) - { - return 1; - } - else - { - return 0; - } -} - -- (void)setInputFramebuffer:(GPUImageFramebuffer *)newInputFramebuffer atIndex:(NSInteger)textureIndex; -{ - if (textureIndex == 0) - { - firstInputFramebuffer = newInputFramebuffer; - hasSetFirstTexture = YES; - [firstInputFramebuffer lock]; - } - else if (textureIndex == 1) - { - secondInputFramebuffer = newInputFramebuffer; - hasSetSecondTexture = YES; - [secondInputFramebuffer lock]; - } - else - { - thirdInputFramebuffer = newInputFramebuffer; - [thirdInputFramebuffer lock]; - } -} - -- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex; -{ - if (textureIndex == 0) - { - [super setInputSize:newSize atIndex:textureIndex]; - - if (CGSizeEqualToSize(newSize, CGSizeZero)) - { - hasSetFirstTexture = NO; - } - } - else if (textureIndex == 1) - { - if (CGSizeEqualToSize(newSize, CGSizeZero)) - { - hasSetSecondTexture = NO; - } - } -} - -- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; -{ - if (textureIndex == 0) - { - inputRotation = newInputRotation; - } - else if (textureIndex == 1) - { - inputRotation2 = newInputRotation; - } - else - { - inputRotation3 = newInputRotation; - } -} - -- (CGSize)rotatedSize:(CGSize)sizeToRotate forIndex:(NSInteger)textureIndex; -{ - CGSize rotatedSize = sizeToRotate; - - GPUImageRotationMode rotationToCheck; - if (textureIndex == 0) - { - rotationToCheck = inputRotation; - } - else if (textureIndex == 1) - { - rotationToCheck = inputRotation2; - } - else - { - rotationToCheck = inputRotation3; - } - - if (GPUImageRotationSwapsWidthAndHeight(rotationToCheck)) - { - rotatedSize.width = sizeToRotate.height; - rotatedSize.height = sizeToRotate.width; - } - - return rotatedSize; -} - -- (void)newFrameReadyAtTime:(CMTime)frameTime atIndex:(NSInteger)textureIndex; -{ - // You can set up infinite update loops, so this helps to short circuit them - if (hasReceivedFirstFrame && hasReceivedSecondFrame && hasReceivedThirdFrame) - { - return; - } - - BOOL updatedMovieFrameOppositeStillImage = NO; - - if (textureIndex == 0) - { - hasReceivedFirstFrame = YES; - firstFrameTime = frameTime; - if (secondFrameCheckDisabled) - { - hasReceivedSecondFrame = YES; - } - if (thirdFrameCheckDisabled) - { - hasReceivedThirdFrame = YES; - } - - if (!CMTIME_IS_INDEFINITE(frameTime)) - { - if CMTIME_IS_INDEFINITE(secondFrameTime) - { - updatedMovieFrameOppositeStillImage = YES; - } - } - } - else if (textureIndex == 1) - { - hasReceivedSecondFrame = YES; - secondFrameTime = frameTime; - if (firstFrameCheckDisabled) - { - hasReceivedFirstFrame = YES; - } - if (thirdFrameCheckDisabled) - { - hasReceivedThirdFrame = YES; - } - - if (!CMTIME_IS_INDEFINITE(frameTime)) - { - if CMTIME_IS_INDEFINITE(firstFrameTime) - { - updatedMovieFrameOppositeStillImage = YES; - } - } - } - else - { - hasReceivedThirdFrame = YES; - thirdFrameTime = frameTime; - if (firstFrameCheckDisabled) - { - hasReceivedFirstFrame = YES; - } - if (secondFrameCheckDisabled) - { - hasReceivedSecondFrame = YES; - } - - if (!CMTIME_IS_INDEFINITE(frameTime)) - { - if CMTIME_IS_INDEFINITE(firstFrameTime) - { - updatedMovieFrameOppositeStillImage = YES; - } - } - } - - // || (hasReceivedFirstFrame && secondFrameCheckDisabled) || (hasReceivedSecondFrame && firstFrameCheckDisabled) - if ((hasReceivedFirstFrame && hasReceivedSecondFrame && hasReceivedThirdFrame) || updatedMovieFrameOppositeStillImage) - { - static const GLfloat imageVertices[] = { - -1.0f, -1.0f, - 1.0f, -1.0f, - -1.0f, 1.0f, - 1.0f, 1.0f, - }; - - [self renderToTextureWithVertices:imageVertices textureCoordinates:[[self class] textureCoordinatesForRotation:inputRotation]]; - - [self informTargetsAboutNewFrameAtTime:frameTime]; - - hasReceivedFirstFrame = NO; - hasReceivedSecondFrame = NO; - hasReceivedThirdFrame = NO; - } -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageThresholdEdgeDetectionFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageThresholdEdgeDetectionFilter.h deleted file mode 100755 index 2036030..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageThresholdEdgeDetectionFilter.h +++ /dev/null @@ -1,12 +0,0 @@ -#import "GPUImageSobelEdgeDetectionFilter.h" - -@interface GPUImageThresholdEdgeDetectionFilter : GPUImageSobelEdgeDetectionFilter -{ - GLint thresholdUniform; -} - -/** Any edge above this threshold will be black, and anything below white. Ranges from 0.0 to 1.0, with 0.8 as the default - */ -@property(readwrite, nonatomic) CGFloat threshold; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageThresholdEdgeDetectionFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageThresholdEdgeDetectionFilter.m deleted file mode 100755 index 553c600..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageThresholdEdgeDetectionFilter.m +++ /dev/null @@ -1,145 +0,0 @@ -#import "GPUImageThresholdEdgeDetectionFilter.h" - -@implementation GPUImageThresholdEdgeDetectionFilter - -// Invert the colorspace for a sketch -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageThresholdEdgeDetectionFragmentShaderString = SHADER_STRING -( - precision highp float; - - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - uniform sampler2D inputImageTexture; - uniform lowp float threshold; - - uniform float edgeStrength; - - void main() - { -// float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; -// float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r; -// float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r; -// float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; - float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r; - float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r; - float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r; - float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r; - float centerIntensity = texture2D(inputImageTexture, textureCoordinate).r; -// float h = -topLeftIntensity - 2.0 * topIntensity - topRightIntensity + bottomLeftIntensity + 2.0 * bottomIntensity + bottomRightIntensity; -// float v = -bottomLeftIntensity - 2.0 * leftIntensity - topLeftIntensity + bottomRightIntensity + 2.0 * rightIntensity + topRightIntensity; -// float h = -topLeftIntensity - 2.0 * topIntensity - topRightIntensity + leftIntensity + 2.0 * centerIntensity + rightIntensity; -// float v = -bottomLeftIntensity - 2.0 * leftIntensity - topLeftIntensity + bottomIntensity + 2.0 * centerIntensity + topIntensity; - float h = (centerIntensity - topIntensity) + (bottomIntensity - centerIntensity); - float v = (centerIntensity - leftIntensity) + (rightIntensity - centerIntensity); -// float h = (centerIntensity - topIntensity); -// float j = (topIntensity - centerIntensity); -// h = max(h,j); -// j = abs(h); -// float v = (centerIntensity - leftIntensity); - - float mag = length(vec2(h, v)) * edgeStrength; - mag = step(threshold, mag); - -// float mag = abs(h); - -// gl_FragColor = vec4(h, h, h, 1.0); -// gl_FragColor = vec4(texture2D(inputImageTexture, textureCoordinate)); -// gl_FragColor = vec4(h, centerIntensity, j, 1.0); - gl_FragColor = vec4(mag, mag, mag, 1.0); - } -); -#else -NSString *const kGPUImageThresholdEdgeDetectionFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - uniform sampler2D inputImageTexture; - uniform float threshold; - - uniform float edgeStrength; - - void main() - { - float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; - float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r; - float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r; - float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; - float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r; - float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r; - float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r; - float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r; - float h = -topLeftIntensity - 2.0 * topIntensity - topRightIntensity + bottomLeftIntensity + 2.0 * bottomIntensity + bottomRightIntensity; - h = max(0.0, h); - float v = -bottomLeftIntensity - 2.0 * leftIntensity - topLeftIntensity + bottomRightIntensity + 2.0 * rightIntensity + topRightIntensity; - v = max(0.0, v); - - float mag = length(vec2(h, v)) * edgeStrength; - mag = step(threshold, mag); - - gl_FragColor = vec4(vec3(mag), 1.0); - } -); -#endif - -#pragma mark - -#pragma mark Initialization and teardown - -@synthesize threshold = _threshold; - -- (id)initWithFragmentShaderFromString:(NSString *)fragmentShaderString; -{ - if (!(self = [super initWithFragmentShaderFromString:fragmentShaderString])) - { - return nil; - } - - thresholdUniform = [secondFilterProgram uniformIndex:@"threshold"]; - self.threshold = 0.25; - self.edgeStrength = 1.0; - - return self; -} - - -- (id)init; -{ - if (!(self = [self initWithFragmentShaderFromString:kGPUImageThresholdEdgeDetectionFragmentShaderString])) - { - return nil; - } - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setThreshold:(CGFloat)newValue; -{ - _threshold = newValue; - - [self setFloat:_threshold forUniform:thresholdUniform program:secondFilterProgram]; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageThresholdSketchFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageThresholdSketchFilter.h deleted file mode 100644 index fda5897..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageThresholdSketchFilter.h +++ /dev/null @@ -1,5 +0,0 @@ -#import "GPUImageThresholdEdgeDetectionFilter.h" - -@interface GPUImageThresholdSketchFilter : GPUImageThresholdEdgeDetectionFilter - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageThresholdSketchFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageThresholdSketchFilter.m deleted file mode 100644 index d24e9de..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageThresholdSketchFilter.m +++ /dev/null @@ -1,103 +0,0 @@ -#import "GPUImageThresholdSketchFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageThresholdSketchFragmentShaderString = SHADER_STRING -( - precision highp float; - - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - uniform sampler2D inputImageTexture; - uniform lowp float threshold; - uniform float edgeStrength; - - const highp vec3 W = vec3(0.2125, 0.7154, 0.0721); - - void main() - { - float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; - float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r; - float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r; - float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; - float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r; - float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r; - float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r; - float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r; - float h = -topLeftIntensity - 2.0 * topIntensity - topRightIntensity + bottomLeftIntensity + 2.0 * bottomIntensity + bottomRightIntensity; - float v = -bottomLeftIntensity - 2.0 * leftIntensity - topLeftIntensity + bottomRightIntensity + 2.0 * rightIntensity + topRightIntensity; - - float mag = (length(vec2(h, v)) * edgeStrength); - mag = step(threshold, mag); - mag = 1.0 - mag; - - gl_FragColor = vec4(vec3(mag), 1.0); - } -); -#else -NSString *const kGPUImageThresholdSketchFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - uniform sampler2D inputImageTexture; - uniform float threshold; - uniform float edgeStrength; - - const vec3 W = vec3(0.2125, 0.7154, 0.0721); - - void main() - { - float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; - float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r; - float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r; - float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; - float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r; - float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r; - float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r; - float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r; - float h = -topLeftIntensity - 2.0 * topIntensity - topRightIntensity + bottomLeftIntensity + 2.0 * bottomIntensity + bottomRightIntensity; - float v = -bottomLeftIntensity - 2.0 * leftIntensity - topLeftIntensity + bottomRightIntensity + 2.0 * rightIntensity + topRightIntensity; - - float mag = 1.0 - length(vec2(h, v) * edgeStrength); - mag = step(threshold, mag); - - gl_FragColor = vec4(vec3(mag), 1.0); - } -); -#endif - -@implementation GPUImageThresholdSketchFilter - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [self initWithFragmentShaderFromString:kGPUImageThresholdSketchFragmentShaderString])) - { - return nil; - } - - return self; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageThresholdedNonMaximumSuppressionFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageThresholdedNonMaximumSuppressionFilter.h deleted file mode 100644 index 9c6e5d7..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageThresholdedNonMaximumSuppressionFilter.h +++ /dev/null @@ -1,14 +0,0 @@ -#import "GPUImage3x3TextureSamplingFilter.h" - -@interface GPUImageThresholdedNonMaximumSuppressionFilter : GPUImage3x3TextureSamplingFilter -{ - GLint thresholdUniform; -} - -/** Any local maximum above this threshold will be white, and anything below black. Ranges from 0.0 to 1.0, with 0.8 as the default - */ -@property(readwrite, nonatomic) CGFloat threshold; - -- (id)initWithPackedColorspace:(BOOL)inputUsesPackedColorspace; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageThresholdedNonMaximumSuppressionFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageThresholdedNonMaximumSuppressionFilter.m deleted file mode 100644 index 439d311..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageThresholdedNonMaximumSuppressionFilter.m +++ /dev/null @@ -1,297 +0,0 @@ -#import "GPUImageThresholdedNonMaximumSuppressionFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageThresholdedNonMaximumSuppressionFragmentShaderString = SHADER_STRING -( - uniform sampler2D inputImageTexture; - - varying highp vec2 textureCoordinate; - varying highp vec2 leftTextureCoordinate; - varying highp vec2 rightTextureCoordinate; - - varying highp vec2 topTextureCoordinate; - varying highp vec2 topLeftTextureCoordinate; - varying highp vec2 topRightTextureCoordinate; - - varying highp vec2 bottomTextureCoordinate; - varying highp vec2 bottomLeftTextureCoordinate; - varying highp vec2 bottomRightTextureCoordinate; - - uniform lowp float threshold; - - void main() - { - lowp float bottomColor = texture2D(inputImageTexture, bottomTextureCoordinate).r; - lowp float bottomLeftColor = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; - lowp float bottomRightColor = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; - lowp vec4 centerColor = texture2D(inputImageTexture, textureCoordinate); - lowp float leftColor = texture2D(inputImageTexture, leftTextureCoordinate).r; - lowp float rightColor = texture2D(inputImageTexture, rightTextureCoordinate).r; - lowp float topColor = texture2D(inputImageTexture, topTextureCoordinate).r; - lowp float topRightColor = texture2D(inputImageTexture, topRightTextureCoordinate).r; - lowp float topLeftColor = texture2D(inputImageTexture, topLeftTextureCoordinate).r; - - // Use a tiebreaker for pixels to the left and immediately above this one - lowp float multiplier = 1.0 - step(centerColor.r, topColor); - multiplier = multiplier * (1.0 - step(centerColor.r, topLeftColor)); - multiplier = multiplier * (1.0 - step(centerColor.r, leftColor)); - multiplier = multiplier * (1.0 - step(centerColor.r, bottomLeftColor)); - - lowp float maxValue = max(centerColor.r, bottomColor); - maxValue = max(maxValue, bottomRightColor); - maxValue = max(maxValue, rightColor); - maxValue = max(maxValue, topRightColor); - - lowp float finalValue = centerColor.r * step(maxValue, centerColor.r) * multiplier; - finalValue = step(threshold, finalValue); - - gl_FragColor = vec4(finalValue, finalValue, finalValue, 1.0); -// -// gl_FragColor = vec4((centerColor.rgb * step(maxValue, step(threshold, centerColor.r)) * multiplier), 1.0); - } -); - -NSString *const kGPUImageThresholdedNonMaximumSuppressionPackedColorspaceFragmentShaderString = SHADER_STRING -( - uniform sampler2D inputImageTexture; - - varying highp vec2 textureCoordinate; - varying highp vec2 leftTextureCoordinate; - varying highp vec2 rightTextureCoordinate; - - varying highp vec2 topTextureCoordinate; - varying highp vec2 topLeftTextureCoordinate; - varying highp vec2 topRightTextureCoordinate; - - varying highp vec2 bottomTextureCoordinate; - varying highp vec2 bottomLeftTextureCoordinate; - varying highp vec2 bottomRightTextureCoordinate; - - uniform lowp float threshold; - uniform highp float texelWidth; - uniform highp float texelHeight; - - highp float encodedIntensity(highp vec3 sourceColor) - { - return (sourceColor.b * 256.0 * 256.0 + sourceColor.g * 256.0 + sourceColor.r); - } - - void main() - { - highp float bottomColor = encodedIntensity(texture2D(inputImageTexture, bottomTextureCoordinate).rgb); - highp float bottomLeftColor = encodedIntensity(texture2D(inputImageTexture, bottomLeftTextureCoordinate).rgb); - highp float bottomRightColor = encodedIntensity(texture2D(inputImageTexture, bottomRightTextureCoordinate).rgb); - highp float centerColor = encodedIntensity(texture2D(inputImageTexture, textureCoordinate).rgb); - highp float leftColor = encodedIntensity(texture2D(inputImageTexture, leftTextureCoordinate).rgb); - highp float rightColor = encodedIntensity(texture2D(inputImageTexture, rightTextureCoordinate).rgb); - highp float topColor = encodedIntensity(texture2D(inputImageTexture, topTextureCoordinate).rgb); - highp float topRightColor = encodedIntensity(texture2D(inputImageTexture, topRightTextureCoordinate).rgb); - highp float topLeftColor = encodedIntensity(texture2D(inputImageTexture, topLeftTextureCoordinate).rgb); - - highp float secondStageColor1 = encodedIntensity(texture2D(inputImageTexture, textureCoordinate + vec2(-2.0 * texelWidth, -2.0 * texelHeight)).rgb); - highp float secondStageColor2 = encodedIntensity(texture2D(inputImageTexture, textureCoordinate + vec2(-2.0 * texelWidth, -1.0 * texelHeight)).rgb); - highp float secondStageColor3 = encodedIntensity(texture2D(inputImageTexture, textureCoordinate + vec2(-2.0 * texelWidth, 0.0)).rgb); - highp float secondStageColor4 = encodedIntensity(texture2D(inputImageTexture, textureCoordinate + vec2(-2.0 * texelWidth, 1.0 * texelHeight)).rgb); - highp float secondStageColor5 = encodedIntensity(texture2D(inputImageTexture, textureCoordinate + vec2(-2.0 * texelWidth, 2.0 * texelHeight)).rgb); - highp float secondStageColor6 = encodedIntensity(texture2D(inputImageTexture, textureCoordinate + vec2(-1.0 * texelWidth, 2.0 * texelHeight)).rgb); - highp float secondStageColor7 = encodedIntensity(texture2D(inputImageTexture, textureCoordinate + vec2(0.0, 2.0 * texelHeight)).rgb); - highp float secondStageColor8 = encodedIntensity(texture2D(inputImageTexture, textureCoordinate + vec2(1.0 * texelWidth, 2.0 * texelHeight)).rgb); - - highp float thirdStageColor1 = encodedIntensity(texture2D(inputImageTexture, textureCoordinate + vec2(-1.0 * texelWidth, -2.0 * texelHeight)).rgb); - highp float thirdStageColor2 = encodedIntensity(texture2D(inputImageTexture, textureCoordinate + vec2(0.0, -2.0 * texelHeight)).rgb); - highp float thirdStageColor3 = encodedIntensity(texture2D(inputImageTexture, textureCoordinate + vec2(1.0 * texelWidth, -2.0 * texelHeight)).rgb); - highp float thirdStageColor4 = encodedIntensity(texture2D(inputImageTexture, textureCoordinate + vec2(2.0 * texelWidth, -2.0 * texelHeight)).rgb); - highp float thirdStageColor5 = encodedIntensity(texture2D(inputImageTexture, textureCoordinate + vec2(2.0 * texelWidth, -1.0 * texelHeight)).rgb); - highp float thirdStageColor6 = encodedIntensity(texture2D(inputImageTexture, textureCoordinate + vec2(2.0 * texelWidth, 0.0)).rgb); - highp float thirdStageColor7 = encodedIntensity(texture2D(inputImageTexture, textureCoordinate + vec2(2.0 * texelWidth, 1.0 * texelHeight)).rgb); - highp float thirdStageColor8 = encodedIntensity(texture2D(inputImageTexture, textureCoordinate + vec2(2.0 * texelWidth, 2.0 * texelHeight)).rgb); - - // Use a tiebreaker for pixels to the left and immediately above this one - highp float multiplier = 1.0 - step(centerColor, topColor); - multiplier = multiplier * (1.0 - step(centerColor, topLeftColor)); - multiplier = multiplier * (1.0 - step(centerColor, leftColor)); - multiplier = multiplier * (1.0 - step(centerColor, bottomLeftColor)); - - multiplier = multiplier * (1.0 - step(centerColor, secondStageColor1)); - multiplier = multiplier * (1.0 - step(centerColor, secondStageColor2)); - multiplier = multiplier * (1.0 - step(centerColor, secondStageColor3)); - multiplier = multiplier * (1.0 - step(centerColor, secondStageColor4)); - multiplier = multiplier * (1.0 - step(centerColor, secondStageColor5)); - multiplier = multiplier * (1.0 - step(centerColor, secondStageColor6)); - multiplier = multiplier * (1.0 - step(centerColor, secondStageColor7)); - multiplier = multiplier * (1.0 - step(centerColor, secondStageColor8)); - - highp float maxValue = max(centerColor, bottomColor); - maxValue = max(maxValue, bottomRightColor); - maxValue = max(maxValue, rightColor); - maxValue = max(maxValue, topRightColor); - - maxValue = max(maxValue, thirdStageColor1); - maxValue = max(maxValue, thirdStageColor2); - maxValue = max(maxValue, thirdStageColor3); - maxValue = max(maxValue, thirdStageColor4); - maxValue = max(maxValue, thirdStageColor5); - maxValue = max(maxValue, thirdStageColor6); - maxValue = max(maxValue, thirdStageColor7); - maxValue = max(maxValue, thirdStageColor8); - - highp float midValue = centerColor * step(maxValue, centerColor) * multiplier; - highp float finalValue = step(threshold, midValue); - - gl_FragColor = vec4(finalValue * centerColor, topLeftColor, topRightColor, topColor); - } -); -#else -NSString *const kGPUImageThresholdedNonMaximumSuppressionFragmentShaderString = SHADER_STRING -( - uniform sampler2D inputImageTexture; - - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - uniform float threshold; - - void main() - { - float bottomColor = texture2D(inputImageTexture, bottomTextureCoordinate).r; - float bottomLeftColor = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; - float bottomRightColor = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; - vec4 centerColor = texture2D(inputImageTexture, textureCoordinate); - float leftColor = texture2D(inputImageTexture, leftTextureCoordinate).r; - float rightColor = texture2D(inputImageTexture, rightTextureCoordinate).r; - float topColor = texture2D(inputImageTexture, topTextureCoordinate).r; - float topRightColor = texture2D(inputImageTexture, topRightTextureCoordinate).r; - float topLeftColor = texture2D(inputImageTexture, topLeftTextureCoordinate).r; - - // Use a tiebreaker for pixels to the left and immediately above this one - float multiplier = 1.0 - step(centerColor.r, topColor); - multiplier = multiplier * (1.0 - step(centerColor.r, topLeftColor)); - multiplier = multiplier * (1.0 - step(centerColor.r, leftColor)); - multiplier = multiplier * (1.0 - step(centerColor.r, bottomLeftColor)); - - float maxValue = max(centerColor.r, bottomColor); - maxValue = max(maxValue, bottomRightColor); - maxValue = max(maxValue, rightColor); - maxValue = max(maxValue, topRightColor); - - float finalValue = centerColor.r * step(maxValue, centerColor.r) * multiplier; - finalValue = step(threshold, finalValue); - - gl_FragColor = vec4(finalValue, finalValue, finalValue, 1.0); - // - // gl_FragColor = vec4((centerColor.rgb * step(maxValue, step(threshold, centerColor.r)) * multiplier), 1.0); - } -); - -NSString *const kGPUImageThresholdedNonMaximumSuppressionPackedColorspaceFragmentShaderString = SHADER_STRING -( - uniform sampler2D inputImageTexture; - - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - uniform float threshold; - - void main() - { - float bottomColor = texture2D(inputImageTexture, bottomTextureCoordinate).r; - float bottomLeftColor = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; - float bottomRightColor = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; - vec4 centerColor = texture2D(inputImageTexture, textureCoordinate); - float leftColor = texture2D(inputImageTexture, leftTextureCoordinate).r; - float rightColor = texture2D(inputImageTexture, rightTextureCoordinate).r; - float topColor = texture2D(inputImageTexture, topTextureCoordinate).r; - float topRightColor = texture2D(inputImageTexture, topRightTextureCoordinate).r; - float topLeftColor = texture2D(inputImageTexture, topLeftTextureCoordinate).r; - - // Use a tiebreaker for pixels to the left and immediately above this one - float multiplier = 1.0 - step(centerColor.r, topColor); - multiplier = multiplier * (1.0 - step(centerColor.r, topLeftColor)); - multiplier = multiplier * (1.0 - step(centerColor.r, leftColor)); - multiplier = multiplier * (1.0 - step(centerColor.r, bottomLeftColor)); - - float maxValue = max(centerColor.r, bottomColor); - maxValue = max(maxValue, bottomRightColor); - maxValue = max(maxValue, rightColor); - maxValue = max(maxValue, topRightColor); - - float finalValue = centerColor.r * step(maxValue, centerColor.r) * multiplier; - finalValue = step(threshold, finalValue); - - gl_FragColor = vec4(finalValue, finalValue, finalValue, 1.0); - // - // gl_FragColor = vec4((centerColor.rgb * step(maxValue, step(threshold, centerColor.r)) * multiplier), 1.0); - } - ); -#endif - -@implementation GPUImageThresholdedNonMaximumSuppressionFilter - -@synthesize threshold = _threshold; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [self initWithPackedColorspace:NO])) - { - return nil; - } - - return self; -} - -- (id)initWithPackedColorspace:(BOOL)inputUsesPackedColorspace; -{ - NSString *shaderString; - if (inputUsesPackedColorspace) - { - shaderString = kGPUImageThresholdedNonMaximumSuppressionPackedColorspaceFragmentShaderString; - } - else - { - shaderString = kGPUImageThresholdedNonMaximumSuppressionFragmentShaderString; - } - - - if (!(self = [super initWithFragmentShaderFromString:shaderString])) - { - return nil; - } - - thresholdUniform = [filterProgram uniformIndex:@"threshold"]; - self.threshold = 0.9; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setThreshold:(CGFloat)newValue; -{ - _threshold = newValue; - - [self setFloat:_threshold forUniform:thresholdUniform program:filterProgram]; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageTiltShiftFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageTiltShiftFilter.h deleted file mode 100755 index e41adee..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageTiltShiftFilter.h +++ /dev/null @@ -1,24 +0,0 @@ -#import "GPUImageFilterGroup.h" - -@class GPUImageGaussianBlurFilter; - -/// A simulated tilt shift lens effect -@interface GPUImageTiltShiftFilter : GPUImageFilterGroup -{ - GPUImageGaussianBlurFilter *blurFilter; - GPUImageFilter *tiltShiftFilter; -} - -/// The radius of the underlying blur, in pixels. This is 7.0 by default. -@property(readwrite, nonatomic) CGFloat blurRadiusInPixels; - -/// The normalized location of the top of the in-focus area in the image, this value should be lower than bottomFocusLevel, default 0.4 -@property(readwrite, nonatomic) CGFloat topFocusLevel; - -/// The normalized location of the bottom of the in-focus area in the image, this value should be higher than topFocusLevel, default 0.6 -@property(readwrite, nonatomic) CGFloat bottomFocusLevel; - -/// The rate at which the image gets blurry away from the in-focus region, default 0.2 -@property(readwrite, nonatomic) CGFloat focusFallOffRate; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageTiltShiftFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageTiltShiftFilter.m deleted file mode 100755 index e2f632b..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageTiltShiftFilter.m +++ /dev/null @@ -1,126 +0,0 @@ -#import "GPUImageTiltShiftFilter.h" -#import "GPUImageFilter.h" -#import "GPUImageTwoInputFilter.h" -#import "GPUImageGaussianBlurFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageTiltShiftFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - varying highp vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - uniform highp float topFocusLevel; - uniform highp float bottomFocusLevel; - uniform highp float focusFallOffRate; - - void main() - { - lowp vec4 sharpImageColor = texture2D(inputImageTexture, textureCoordinate); - lowp vec4 blurredImageColor = texture2D(inputImageTexture2, textureCoordinate2); - - lowp float blurIntensity = 1.0 - smoothstep(topFocusLevel - focusFallOffRate, topFocusLevel, textureCoordinate2.y); - blurIntensity += smoothstep(bottomFocusLevel, bottomFocusLevel + focusFallOffRate, textureCoordinate2.y); - - gl_FragColor = mix(sharpImageColor, blurredImageColor, blurIntensity); - } -); -#else -NSString *const kGPUImageTiltShiftFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - uniform float topFocusLevel; - uniform float bottomFocusLevel; - uniform float focusFallOffRate; - - void main() - { - vec4 sharpImageColor = texture2D(inputImageTexture, textureCoordinate); - vec4 blurredImageColor = texture2D(inputImageTexture2, textureCoordinate2); - - float blurIntensity = 1.0 - smoothstep(topFocusLevel - focusFallOffRate, topFocusLevel, textureCoordinate2.y); - blurIntensity += smoothstep(bottomFocusLevel, bottomFocusLevel + focusFallOffRate, textureCoordinate2.y); - - gl_FragColor = mix(sharpImageColor, blurredImageColor, blurIntensity); - } -); -#endif - -@implementation GPUImageTiltShiftFilter - -@synthesize blurRadiusInPixels; -@synthesize topFocusLevel = _topFocusLevel; -@synthesize bottomFocusLevel = _bottomFocusLevel; -@synthesize focusFallOffRate = _focusFallOffRate; - -- (id)init; -{ - if (!(self = [super init])) - { - return nil; - } - - // First pass: apply a variable Gaussian blur - blurFilter = [[GPUImageGaussianBlurFilter alloc] init]; - [self addFilter:blurFilter]; - - // Second pass: combine the blurred image with the original sharp one - tiltShiftFilter = [[GPUImageTwoInputFilter alloc] initWithFragmentShaderFromString:kGPUImageTiltShiftFragmentShaderString]; - [self addFilter:tiltShiftFilter]; - - // Texture location 0 needs to be the sharp image for both the blur and the second stage processing - [blurFilter addTarget:tiltShiftFilter atTextureLocation:1]; - - // To prevent double updating of this filter, disable updates from the sharp image side -// self.inputFilterToIgnoreForUpdates = tiltShiftFilter; - - self.initialFilters = [NSArray arrayWithObjects:blurFilter, tiltShiftFilter, nil]; - self.terminalFilter = tiltShiftFilter; - - self.topFocusLevel = 0.4; - self.bottomFocusLevel = 0.6; - self.focusFallOffRate = 0.2; - self.blurRadiusInPixels = 7.0; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setBlurRadiusInPixels:(CGFloat)newValue; -{ - blurFilter.blurRadiusInPixels = newValue; -} - -- (CGFloat)blurRadiusInPixels; -{ - return blurFilter.blurRadiusInPixels; -} - -- (void)setTopFocusLevel:(CGFloat)newValue; -{ - _topFocusLevel = newValue; - [tiltShiftFilter setFloat:newValue forUniformName:@"topFocusLevel"]; -} - -- (void)setBottomFocusLevel:(CGFloat)newValue; -{ - _bottomFocusLevel = newValue; - [tiltShiftFilter setFloat:newValue forUniformName:@"bottomFocusLevel"]; -} - -- (void)setFocusFallOffRate:(CGFloat)newValue; -{ - _focusFallOffRate = newValue; - [tiltShiftFilter setFloat:newValue forUniformName:@"focusFallOffRate"]; -} - -@end \ No newline at end of file diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageToneCurveFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageToneCurveFilter.h deleted file mode 100755 index ff4ae92..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageToneCurveFilter.h +++ /dev/null @@ -1,30 +0,0 @@ -#import "GPUImageFilter.h" - -@interface GPUImageToneCurveFilter : GPUImageFilter - -@property(readwrite, nonatomic, copy) NSArray *redControlPoints; -@property(readwrite, nonatomic, copy) NSArray *greenControlPoints; -@property(readwrite, nonatomic, copy) NSArray *blueControlPoints; -@property(readwrite, nonatomic, copy) NSArray *rgbCompositeControlPoints; - -// Initialization and teardown -- (id)initWithACVData:(NSData*)data; - -- (id)initWithACV:(NSString*)curveFilename; -- (id)initWithACVURL:(NSURL*)curveFileURL; - -// This lets you set all three red, green, and blue tone curves at once. -// NOTE: Deprecated this function because this effect can be accomplished -// using the rgbComposite channel rather then setting all 3 R, G, and B channels. -- (void)setRGBControlPoints:(NSArray *)points DEPRECATED_ATTRIBUTE; - -- (void)setPointsWithACV:(NSString*)curveFilename; -- (void)setPointsWithACVURL:(NSURL*)curveFileURL; - -// Curve calculation -- (NSMutableArray *)getPreparedSplineCurve:(NSArray *)points; -- (NSMutableArray *)splineCurve:(NSArray *)points; -- (NSMutableArray *)secondDerivative:(NSArray *)cgPoints; -- (void)updateToneCurveTexture; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageToneCurveFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageToneCurveFilter.m deleted file mode 100644 index 18a717e..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageToneCurveFilter.m +++ /dev/null @@ -1,621 +0,0 @@ -#import "GPUImageToneCurveFilter.h" - -#pragma mark - -#pragma mark GPUImageACVFile Helper - -// GPUImageACVFile -// -// ACV File format Parser -// Please refer to http://www.adobe.com/devnet-apps/photoshop/fileformatashtml/PhotoshopFileFormats.htm#50577411_pgfId-1056330 -// - -@interface GPUImageACVFile : NSObject{ - short version; - short totalCurves; - - NSArray *rgbCompositeCurvePoints; - NSArray *redCurvePoints; - NSArray *greenCurvePoints; - NSArray *blueCurvePoints; -} - -@property(strong,nonatomic) NSArray *rgbCompositeCurvePoints; -@property(strong,nonatomic) NSArray *redCurvePoints; -@property(strong,nonatomic) NSArray *greenCurvePoints; -@property(strong,nonatomic) NSArray *blueCurvePoints; - -- (id) initWithACVFileData:(NSData*)data; - - -unsigned short int16WithBytes(Byte* bytes); -@end - -@implementation GPUImageACVFile - -@synthesize rgbCompositeCurvePoints, redCurvePoints, greenCurvePoints, blueCurvePoints; - -- (id) initWithACVFileData:(NSData *)data { - self = [super init]; - if (self != nil) - { - if (data.length == 0) - { - NSLog(@"failed to init ACVFile with data:%@", data); - - return self; - } - - Byte* rawBytes = (Byte*) [data bytes]; - version = int16WithBytes(rawBytes); - rawBytes+=2; - - totalCurves = int16WithBytes(rawBytes); - rawBytes+=2; - - NSMutableArray *curves = [NSMutableArray new]; - - float pointRate = (1.0 / 255); - // The following is the data for each curve specified by count above - for (NSInteger x = 0; x 0) - { - // Sort the array. - NSArray *sortedPoints = [points sortedArrayUsingComparator:^NSComparisonResult(id a, id b) { -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - float x1 = [(NSValue *)a CGPointValue].x; - float x2 = [(NSValue *)b CGPointValue].x; -#else - float x1 = [(NSValue *)a pointValue].x; - float x2 = [(NSValue *)b pointValue].x; -#endif - return x1 > x2; - }]; - - // Convert from (0, 1) to (0, 255). - NSMutableArray *convertedPoints = [NSMutableArray arrayWithCapacity:[sortedPoints count]]; - for (int i=0; i<[points count]; i++){ -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - CGPoint point = [[sortedPoints objectAtIndex:i] CGPointValue]; -#else - NSPoint point = [[sortedPoints objectAtIndex:i] pointValue]; -#endif - point.x = point.x * 255; - point.y = point.y * 255; - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - [convertedPoints addObject:[NSValue valueWithCGPoint:point]]; -#else - [convertedPoints addObject:[NSValue valueWithPoint:point]]; -#endif - } - - - NSMutableArray *splinePoints = [self splineCurve:convertedPoints]; - - // If we have a first point like (0.3, 0) we'll be missing some points at the beginning - // that should be 0. -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - CGPoint firstSplinePoint = [[splinePoints objectAtIndex:0] CGPointValue]; -#else - NSPoint firstSplinePoint = [[splinePoints objectAtIndex:0] pointValue]; -#endif - - if (firstSplinePoint.x > 0) { - for (int i=firstSplinePoint.x; i >= 0; i--) { -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - CGPoint newCGPoint = CGPointMake(i, 0); - [splinePoints insertObject:[NSValue valueWithCGPoint:newCGPoint] atIndex:0]; -#else - NSPoint newNSPoint = NSMakePoint(i, 0); - [splinePoints insertObject:[NSValue valueWithPoint:newNSPoint] atIndex:0]; -#endif - } - } - - // Insert points similarly at the end, if necessary. -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - CGPoint lastSplinePoint = [[splinePoints lastObject] CGPointValue]; - - if (lastSplinePoint.x < 255) { - for (int i = lastSplinePoint.x + 1; i <= 255; i++) { - CGPoint newCGPoint = CGPointMake(i, 255); - [splinePoints addObject:[NSValue valueWithCGPoint:newCGPoint]]; - } - } -#else - NSPoint lastSplinePoint = [[splinePoints lastObject] pointValue]; - - if (lastSplinePoint.x < 255) { - for (int i = lastSplinePoint.x + 1; i <= 255; i++) { - NSPoint newNSPoint = NSMakePoint(i, 255); - [splinePoints addObject:[NSValue valueWithPoint:newNSPoint]]; - } - } -#endif - - // Prepare the spline points. - NSMutableArray *preparedSplinePoints = [NSMutableArray arrayWithCapacity:[splinePoints count]]; - for (int i=0; i<[splinePoints count]; i++) - { -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - CGPoint newPoint = [[splinePoints objectAtIndex:i] CGPointValue]; -#else - NSPoint newPoint = [[splinePoints objectAtIndex:i] pointValue]; -#endif - CGPoint origPoint = CGPointMake(newPoint.x, newPoint.x); - - float distance = sqrt(pow((origPoint.x - newPoint.x), 2.0) + pow((origPoint.y - newPoint.y), 2.0)); - - if (origPoint.y > newPoint.y) - { - distance = -distance; - } - - [preparedSplinePoints addObject:[NSNumber numberWithFloat:distance]]; - } - - return preparedSplinePoints; - } - - return nil; -} - - -- (NSMutableArray *)splineCurve:(NSArray *)points -{ - NSMutableArray *sdA = [self secondDerivative:points]; - - // [points count] is equal to [sdA count] - NSInteger n = [sdA count]; - if (n < 1) - { - return nil; - } - double sd[n]; - - // From NSMutableArray to sd[n]; - for (int i=0; i 255.0) - { - y = 255.0; - } - else if (y < 0.0) - { - y = 0.0; - } -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - [output addObject:[NSValue valueWithCGPoint:CGPointMake(x, y)]]; -#else - [output addObject:[NSValue valueWithPoint:NSMakePoint(x, y)]]; -#endif - } - } - - // The above always misses the last point because the last point is the last next, so we approach but don't equal it. - [output addObject:[points lastObject]]; - return output; -} - -- (NSMutableArray *)secondDerivative:(NSArray *)points -{ - const NSInteger n = [points count]; - if ((n <= 0) || (n == 1)) - { - return nil; - } - - double matrix[n][3]; - double result[n]; - matrix[0][1]=1; - // What about matrix[0][1] and matrix[0][0]? Assuming 0 for now (Brad L.) - matrix[0][0]=0; - matrix[0][2]=0; - - for(int i=1;idown) - for(int i=1;iup) - for(NSInteger i=n-2;i>=0;i--) - { - double k = matrix[i][2]/matrix[i+1][1]; - matrix[i][1] -= k*matrix[i+1][0]; - matrix[i][2] = 0; - result[i] -= k*result[i+1]; - } - - double y2[n]; - for(int i=0;i= 256) && ([_greenCurve count] >= 256) && ([_blueCurve count] >= 256) && ([_rgbCompositeCurve count] >= 256)) - { - for (unsigned int currentCurveIndex = 0; currentCurveIndex < 256; currentCurveIndex++) - { - // BGRA for upload to texture - GLubyte b = fmin(fmax(currentCurveIndex + [[_blueCurve objectAtIndex:currentCurveIndex] floatValue], 0), 255); - toneCurveByteArray[currentCurveIndex * 4] = fmin(fmax(b + [[_rgbCompositeCurve objectAtIndex:b] floatValue], 0), 255); - GLubyte g = fmin(fmax(currentCurveIndex + [[_greenCurve objectAtIndex:currentCurveIndex] floatValue], 0), 255); - toneCurveByteArray[currentCurveIndex * 4 + 1] = fmin(fmax(g + [[_rgbCompositeCurve objectAtIndex:g] floatValue], 0), 255); - GLubyte r = fmin(fmax(currentCurveIndex + [[_redCurve objectAtIndex:currentCurveIndex] floatValue], 0), 255); - toneCurveByteArray[currentCurveIndex * 4 + 2] = fmin(fmax(r + [[_rgbCompositeCurve objectAtIndex:r] floatValue], 0), 255); - toneCurveByteArray[currentCurveIndex * 4 + 3] = 255; - } - - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 256 /*width*/, 1 /*height*/, 0, GL_BGRA, GL_UNSIGNED_BYTE, toneCurveByteArray); - } - }); -} - -#pragma mark - -#pragma mark Rendering - -- (void)renderToTextureWithVertices:(const GLfloat *)vertices textureCoordinates:(const GLfloat *)textureCoordinates; -{ - if (self.preventRendering) - { - [firstInputFramebuffer unlock]; - return; - } - - [GPUImageContext setActiveShaderProgram:filterProgram]; - outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:[self sizeOfFBO] textureOptions:self.outputTextureOptions onlyTexture:NO]; - [outputFramebuffer activateFramebuffer]; - if (usingNextFrameForImageCapture) - { - [outputFramebuffer lock]; - } - - glClearColor(backgroundColorRed, backgroundColorGreen, backgroundColorBlue, backgroundColorAlpha); - glClear(GL_COLOR_BUFFER_BIT); - - glActiveTexture(GL_TEXTURE2); - glBindTexture(GL_TEXTURE_2D, [firstInputFramebuffer texture]); - glUniform1i(filterInputTextureUniform, 2); - - glActiveTexture(GL_TEXTURE3); - glBindTexture(GL_TEXTURE_2D, toneCurveTexture); - glUniform1i(toneCurveTextureUniform, 3); - - glVertexAttribPointer(filterPositionAttribute, 2, GL_FLOAT, 0, 0, vertices); - glVertexAttribPointer(filterTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, textureCoordinates); - - glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); - [firstInputFramebuffer unlock]; - if (usingNextFrameForImageCapture) - { - dispatch_semaphore_signal(imageCaptureSemaphore); - } -} - -#pragma mark - -#pragma mark Accessors - -- (void)setRGBControlPoints:(NSArray *)points -{ - _redControlPoints = [points copy]; - _redCurve = [self getPreparedSplineCurve:_redControlPoints]; - - _greenControlPoints = [points copy]; - _greenCurve = [self getPreparedSplineCurve:_greenControlPoints]; - - _blueControlPoints = [points copy]; - _blueCurve = [self getPreparedSplineCurve:_blueControlPoints]; - - [self updateToneCurveTexture]; -} - - -- (void)setRgbCompositeControlPoints:(NSArray *)newValue -{ - _rgbCompositeControlPoints = [newValue copy]; - _rgbCompositeCurve = [self getPreparedSplineCurve:_rgbCompositeControlPoints]; - - [self updateToneCurveTexture]; -} - - -- (void)setRedControlPoints:(NSArray *)newValue; -{ - _redControlPoints = [newValue copy]; - _redCurve = [self getPreparedSplineCurve:_redControlPoints]; - - [self updateToneCurveTexture]; -} - - -- (void)setGreenControlPoints:(NSArray *)newValue -{ - _greenControlPoints = [newValue copy]; - _greenCurve = [self getPreparedSplineCurve:_greenControlPoints]; - - [self updateToneCurveTexture]; -} - - -- (void)setBlueControlPoints:(NSArray *)newValue -{ - _blueControlPoints = [newValue copy]; - _blueCurve = [self getPreparedSplineCurve:_blueControlPoints]; - - [self updateToneCurveTexture]; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageToonFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageToonFilter.h deleted file mode 100755 index ef8e17c..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageToonFilter.h +++ /dev/null @@ -1,19 +0,0 @@ -#import "GPUImage3x3TextureSamplingFilter.h" - -/** This uses Sobel edge detection to place a black border around objects, - and then it quantizes the colors present in the image to give a cartoon-like quality to the image. - */ -@interface GPUImageToonFilter : GPUImage3x3TextureSamplingFilter -{ - GLint thresholdUniform, quantizationLevelsUniform; -} - -/** The threshold at which to apply the edges, default of 0.2 - */ -@property(readwrite, nonatomic) CGFloat threshold; - -/** The levels of quantization for the posterization of colors within the scene, with a default of 10.0 - */ -@property(readwrite, nonatomic) CGFloat quantizationLevels; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageToonFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageToonFilter.m deleted file mode 100755 index e8ff104..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageToonFilter.m +++ /dev/null @@ -1,149 +0,0 @@ -#import "GPUImageToonFilter.h" -#import "GPUImageSobelEdgeDetectionFilter.h" -#import "GPUImage3x3ConvolutionFilter.h" - -// Code from "Graphics Shaders: Theory and Practice" by M. Bailey and S. Cunningham -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageToonFragmentShaderString = SHADER_STRING -( - precision highp float; - - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform highp float intensity; - uniform highp float threshold; - uniform highp float quantizationLevels; - - const highp vec3 W = vec3(0.2125, 0.7154, 0.0721); - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - - float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; - float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r; - float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r; - float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; - float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r; - float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r; - float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r; - float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r; - float h = -topLeftIntensity - 2.0 * topIntensity - topRightIntensity + bottomLeftIntensity + 2.0 * bottomIntensity + bottomRightIntensity; - float v = -bottomLeftIntensity - 2.0 * leftIntensity - topLeftIntensity + bottomRightIntensity + 2.0 * rightIntensity + topRightIntensity; - - float mag = length(vec2(h, v)); - - vec3 posterizedImageColor = floor((textureColor.rgb * quantizationLevels) + 0.5) / quantizationLevels; - - float thresholdTest = 1.0 - step(threshold, mag); - - gl_FragColor = vec4(posterizedImageColor * thresholdTest, textureColor.a); - } -); -#else -NSString *const kGPUImageToonFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform float intensity; - uniform float threshold; - uniform float quantizationLevels; - - const vec3 W = vec3(0.2125, 0.7154, 0.0721); - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - - float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; - float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r; - float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r; - float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; - float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r; - float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r; - float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r; - float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r; - float h = -topLeftIntensity - 2.0 * topIntensity - topRightIntensity + bottomLeftIntensity + 2.0 * bottomIntensity + bottomRightIntensity; - float v = -bottomLeftIntensity - 2.0 * leftIntensity - topLeftIntensity + bottomRightIntensity + 2.0 * rightIntensity + topRightIntensity; - - float mag = length(vec2(h, v)); - - vec3 posterizedImageColor = floor((textureColor.rgb * quantizationLevels) + 0.5) / quantizationLevels; - - float thresholdTest = 1.0 - step(threshold, mag); - - gl_FragColor = vec4(posterizedImageColor * thresholdTest, textureColor.a); - } -); -#endif - -@implementation GPUImageToonFilter - -@synthesize threshold = _threshold; -@synthesize quantizationLevels = _quantizationLevels; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageToonFragmentShaderString])) - { - return nil; - } - - hasOverriddenImageSizeFactor = NO; - - thresholdUniform = [filterProgram uniformIndex:@"threshold"]; - quantizationLevelsUniform = [filterProgram uniformIndex:@"quantizationLevels"]; - - self.threshold = 0.2; - self.quantizationLevels = 10.0; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setThreshold:(CGFloat)newValue; -{ - _threshold = newValue; - - [self setFloat:_threshold forUniform:thresholdUniform program:filterProgram]; -} - -- (void)setQuantizationLevels:(CGFloat)newValue; -{ - _quantizationLevels = newValue; - - [self setFloat:_quantizationLevels forUniform:quantizationLevelsUniform program:filterProgram]; -} - - -@end - diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageTransformFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageTransformFilter.h deleted file mode 100755 index 9865b85..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageTransformFilter.h +++ /dev/null @@ -1,19 +0,0 @@ -#import "GPUImageFilter.h" - -@interface GPUImageTransformFilter : GPUImageFilter -{ - GLint transformMatrixUniform, orthographicMatrixUniform; - GPUMatrix4x4 orthographicMatrix; -} - -// You can either set the transform to apply to be a 2-D affine transform or a 3-D transform. The default is the identity transform (the output image is identical to the input). -@property(readwrite, nonatomic) CGAffineTransform affineTransform; -@property(readwrite, nonatomic) CATransform3D transform3D; - -// This applies the transform to the raw frame data if set to YES, the default of NO takes the aspect ratio of the image input into account when rotating -@property(readwrite, nonatomic) BOOL ignoreAspectRatio; - -// sets the anchor point to top left corner -@property(readwrite, nonatomic) BOOL anchorTopLeft; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageTransformFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageTransformFilter.m deleted file mode 100755 index 1793309..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageTransformFilter.m +++ /dev/null @@ -1,260 +0,0 @@ -#import "GPUImageTransformFilter.h" - -NSString *const kGPUImageTransformVertexShaderString = SHADER_STRING -( - attribute vec4 position; - attribute vec4 inputTextureCoordinate; - - uniform mat4 transformMatrix; - uniform mat4 orthographicMatrix; - - varying vec2 textureCoordinate; - - void main() - { - gl_Position = transformMatrix * vec4(position.xyz, 1.0) * orthographicMatrix; - textureCoordinate = inputTextureCoordinate.xy; - } -); - -@implementation GPUImageTransformFilter - -@synthesize affineTransform; -@synthesize transform3D = _transform3D; -@synthesize ignoreAspectRatio = _ignoreAspectRatio; -@synthesize anchorTopLeft = _anchorTopLeft; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithVertexShaderFromString:kGPUImageTransformVertexShaderString fragmentShaderFromString:kGPUImagePassthroughFragmentShaderString])) - { - return nil; - } - - transformMatrixUniform = [filterProgram uniformIndex:@"transformMatrix"]; - orthographicMatrixUniform = [filterProgram uniformIndex:@"orthographicMatrix"]; - - self.transform3D = CATransform3DIdentity; - - return self; -} - -#pragma mark - -#pragma mark Conversion from matrix formats - -- (void)loadOrthoMatrix:(GLfloat *)matrix left:(GLfloat)left right:(GLfloat)right bottom:(GLfloat)bottom top:(GLfloat)top near:(GLfloat)near far:(GLfloat)far; -{ - GLfloat r_l = right - left; - GLfloat t_b = top - bottom; - GLfloat f_n = far - near; - GLfloat tx = - (right + left) / (right - left); - GLfloat ty = - (top + bottom) / (top - bottom); - GLfloat tz = - (far + near) / (far - near); - - float scale = 2.0f; - if (_anchorTopLeft) - { - scale = 4.0f; - tx=-1.0f; - ty=-1.0f; - } - - matrix[0] = scale / r_l; - matrix[1] = 0.0f; - matrix[2] = 0.0f; - matrix[3] = tx; - - matrix[4] = 0.0f; - matrix[5] = scale / t_b; - matrix[6] = 0.0f; - matrix[7] = ty; - - matrix[8] = 0.0f; - matrix[9] = 0.0f; - matrix[10] = scale / f_n; - matrix[11] = tz; - - matrix[12] = 0.0f; - matrix[13] = 0.0f; - matrix[14] = 0.0f; - matrix[15] = 1.0f; -} - -//- (void)convert3DTransform:(CATransform3D *)transform3D toMatrix:(GLfloat *)matrix; -//{ -// // struct CATransform3D -// // { -// // CGFloat m11, m12, m13, m14; -// // CGFloat m21, m22, m23, m24; -// // CGFloat m31, m32, m33, m34; -// // CGFloat m41, m42, m43, m44; -// // }; -// -// matrix[0] = (GLfloat)transform3D->m11; -// matrix[1] = (GLfloat)transform3D->m12; -// matrix[2] = (GLfloat)transform3D->m13; -// matrix[3] = (GLfloat)transform3D->m14; -// matrix[4] = (GLfloat)transform3D->m21; -// matrix[5] = (GLfloat)transform3D->m22; -// matrix[6] = (GLfloat)transform3D->m23; -// matrix[7] = (GLfloat)transform3D->m24; -// matrix[8] = (GLfloat)transform3D->m31; -// matrix[9] = (GLfloat)transform3D->m32; -// matrix[10] = (GLfloat)transform3D->m33; -// matrix[11] = (GLfloat)transform3D->m34; -// matrix[12] = (GLfloat)transform3D->m41; -// matrix[13] = (GLfloat)transform3D->m42; -// matrix[14] = (GLfloat)transform3D->m43; -// matrix[15] = (GLfloat)transform3D->m44; -//} - -- (void)convert3DTransform:(CATransform3D *)transform3D toMatrix:(GPUMatrix4x4 *)matrix; -{ - // struct CATransform3D - // { - // CGFloat m11, m12, m13, m14; - // CGFloat m21, m22, m23, m24; - // CGFloat m31, m32, m33, m34; - // CGFloat m41, m42, m43, m44; - // }; - - GLfloat *mappedMatrix = (GLfloat *)matrix; - - mappedMatrix[0] = (GLfloat)transform3D->m11; - mappedMatrix[1] = (GLfloat)transform3D->m12; - mappedMatrix[2] = (GLfloat)transform3D->m13; - mappedMatrix[3] = (GLfloat)transform3D->m14; - mappedMatrix[4] = (GLfloat)transform3D->m21; - mappedMatrix[5] = (GLfloat)transform3D->m22; - mappedMatrix[6] = (GLfloat)transform3D->m23; - mappedMatrix[7] = (GLfloat)transform3D->m24; - mappedMatrix[8] = (GLfloat)transform3D->m31; - mappedMatrix[9] = (GLfloat)transform3D->m32; - mappedMatrix[10] = (GLfloat)transform3D->m33; - mappedMatrix[11] = (GLfloat)transform3D->m34; - mappedMatrix[12] = (GLfloat)transform3D->m41; - mappedMatrix[13] = (GLfloat)transform3D->m42; - mappedMatrix[14] = (GLfloat)transform3D->m43; - mappedMatrix[15] = (GLfloat)transform3D->m44; -} - -#pragma mark - -#pragma mark GPUImageInput - -- (void)newFrameReadyAtTime:(CMTime)frameTime atIndex:(NSInteger)textureIndex; -{ - CGSize currentFBOSize = [self sizeOfFBO]; - CGFloat normalizedHeight = currentFBOSize.height / currentFBOSize.width; - - GLfloat adjustedVertices[] = { - -1.0f, -normalizedHeight, - 1.0f, -normalizedHeight, - -1.0f, normalizedHeight, - 1.0f, normalizedHeight, - }; - static const GLfloat squareVertices[] = { - -1.0f, -1.0f, - 1.0f, -1.0f, - -1.0f, 1.0f, - 1.0f, 1.0f, - }; - - GLfloat adjustedVerticesAnchorTL[] = { - 0.0f, 0.0f, - 1.0f, 0.0f, - 0.0f, normalizedHeight, - 1.0f, normalizedHeight, - }; - - static const GLfloat squareVerticesAnchorTL[] = { - 0.0f, 0.0f, - 1.0f, 0.0f, - 0.0f, 1.0f, - 1.0f, 1.0f, - }; - - if (_ignoreAspectRatio) - { - if (_anchorTopLeft) - { - [self renderToTextureWithVertices:squareVerticesAnchorTL textureCoordinates:[[self class] textureCoordinatesForRotation:inputRotation]]; - } - else - { - [self renderToTextureWithVertices:squareVertices textureCoordinates:[[self class] textureCoordinatesForRotation:inputRotation]]; - } - } - else - { - if (_anchorTopLeft) - { - [self renderToTextureWithVertices:adjustedVerticesAnchorTL textureCoordinates:[[self class] textureCoordinatesForRotation:inputRotation]]; - } - else - { - [self renderToTextureWithVertices:adjustedVertices textureCoordinates:[[self class] textureCoordinatesForRotation:inputRotation]]; - } - } - - [self informTargetsAboutNewFrameAtTime:frameTime]; -} - -- (void)setupFilterForSize:(CGSize)filterFrameSize; -{ - if (!_ignoreAspectRatio) - { - [self loadOrthoMatrix:(GLfloat *)&orthographicMatrix left:-1.0 right:1.0 bottom:(-1.0 * filterFrameSize.height / filterFrameSize.width) top:(1.0 * filterFrameSize.height / filterFrameSize.width) near:-1.0 far:1.0]; - // [self loadOrthoMatrix:orthographicMatrix left:-1.0 right:1.0 bottom:(-1.0 * (GLfloat)backingHeight / (GLfloat)backingWidth) top:(1.0 * (GLfloat)backingHeight / (GLfloat)backingWidth) near:-2.0 far:2.0]; - - [self setMatrix4f:orthographicMatrix forUniform:orthographicMatrixUniform program:filterProgram]; - } -} - -#pragma mark - -#pragma mark Accessors - -- (void)setAffineTransform:(CGAffineTransform)newValue; -{ - self.transform3D = CATransform3DMakeAffineTransform(newValue); -} - -- (CGAffineTransform)affineTransform; -{ - return CATransform3DGetAffineTransform(self.transform3D); -} - -- (void)setTransform3D:(CATransform3D)newValue; -{ - _transform3D = newValue; - - GPUMatrix4x4 temporaryMatrix; - - [self convert3DTransform:&_transform3D toMatrix:&temporaryMatrix]; - [self setMatrix4f:temporaryMatrix forUniform:transformMatrixUniform program:filterProgram]; -} - -- (void)setIgnoreAspectRatio:(BOOL)newValue; -{ - _ignoreAspectRatio = newValue; - - if (_ignoreAspectRatio) - { - [self loadOrthoMatrix:(GLfloat *)&orthographicMatrix left:-1.0 right:1.0 bottom:-1.0 top:1.0 near:-1.0 far:1.0]; - [self setMatrix4f:orthographicMatrix forUniform:orthographicMatrixUniform program:filterProgram]; - } - else - { - [self setupFilterForSize:[self sizeOfFBO]]; - } -} - -- (void)setAnchorTopLeft:(BOOL)newValue -{ - _anchorTopLeft = newValue; - [self setIgnoreAspectRatio:_ignoreAspectRatio]; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageTwoInputCrossTextureSamplingFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageTwoInputCrossTextureSamplingFilter.h deleted file mode 100644 index 64eac9d..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageTwoInputCrossTextureSamplingFilter.h +++ /dev/null @@ -1,15 +0,0 @@ -#import "GPUImageTwoInputFilter.h" - -@interface GPUImageTwoInputCrossTextureSamplingFilter : GPUImageTwoInputFilter -{ - GLint texelWidthUniform, texelHeightUniform; - - CGFloat texelWidth, texelHeight; - BOOL hasOverriddenImageSizeFactor; -} - -// The texel width and height determines how far out to sample from this texel. By default, this is the normalized width of a pixel, but this can be overridden for different effects. -@property(readwrite, nonatomic) CGFloat texelWidth; -@property(readwrite, nonatomic) CGFloat texelHeight; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageTwoInputCrossTextureSamplingFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageTwoInputCrossTextureSamplingFilter.m deleted file mode 100644 index aa338f8..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageTwoInputCrossTextureSamplingFilter.m +++ /dev/null @@ -1,108 +0,0 @@ -#import "GPUImageTwoInputCrossTextureSamplingFilter.h" - -NSString *const kGPUImageTwoInputNearbyTexelSamplingVertexShaderString = SHADER_STRING -( - attribute vec4 position; - attribute vec4 inputTextureCoordinate; - attribute vec4 inputTextureCoordinate2; - - uniform float texelWidth; - uniform float texelHeight; - - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - varying vec2 topTextureCoordinate; - varying vec2 bottomTextureCoordinate; - - varying vec2 textureCoordinate2; - varying vec2 leftTextureCoordinate2; - varying vec2 rightTextureCoordinate2; - varying vec2 topTextureCoordinate2; - varying vec2 bottomTextureCoordinate2; - - void main() - { - gl_Position = position; - - vec2 widthStep = vec2(texelWidth, 0.0); - vec2 heightStep = vec2(0.0, texelHeight); - - textureCoordinate = inputTextureCoordinate.xy; - leftTextureCoordinate = inputTextureCoordinate.xy - widthStep; - rightTextureCoordinate = inputTextureCoordinate.xy + widthStep; - topTextureCoordinate = inputTextureCoordinate.xy - heightStep; - bottomTextureCoordinate = inputTextureCoordinate.xy + heightStep; - - textureCoordinate2 = inputTextureCoordinate2.xy; - leftTextureCoordinate2 = inputTextureCoordinate2.xy - widthStep; - rightTextureCoordinate2 = inputTextureCoordinate2.xy + widthStep; - topTextureCoordinate2 = inputTextureCoordinate2.xy - heightStep; - bottomTextureCoordinate2 = inputTextureCoordinate2.xy + heightStep; - } -); - -@implementation GPUImageTwoInputCrossTextureSamplingFilter - -@synthesize texelWidth = _texelWidth; -@synthesize texelHeight = _texelHeight; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)initWithFragmentShaderFromString:(NSString *)fragmentShaderString; -{ - if (!(self = [super initWithVertexShaderFromString:kGPUImageTwoInputNearbyTexelSamplingVertexShaderString fragmentShaderFromString:fragmentShaderString])) - { - return nil; - } - - texelWidthUniform = [filterProgram uniformIndex:@"texelWidth"]; - texelHeightUniform = [filterProgram uniformIndex:@"texelHeight"]; - - return self; -} - -- (void)setupFilterForSize:(CGSize)filterFrameSize; -{ - if (!hasOverriddenImageSizeFactor) - { - _texelWidth = 1.0 / filterFrameSize.width; - _texelHeight = 1.0 / filterFrameSize.height; - - runSynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext setActiveShaderProgram:filterProgram]; - if (GPUImageRotationSwapsWidthAndHeight(inputRotation)) - { - glUniform1f(texelWidthUniform, _texelHeight); - glUniform1f(texelHeightUniform, _texelWidth); - } - else - { - glUniform1f(texelWidthUniform, _texelWidth); - glUniform1f(texelHeightUniform, _texelHeight); - } - }); - } -} - -#pragma mark - -#pragma mark Accessors - -- (void)setTexelWidth:(CGFloat)newValue; -{ - hasOverriddenImageSizeFactor = YES; - _texelWidth = newValue; - - [self setFloat:_texelWidth forUniform:texelWidthUniform program:filterProgram]; -} - -- (void)setTexelHeight:(CGFloat)newValue; -{ - hasOverriddenImageSizeFactor = YES; - _texelHeight = newValue; - - [self setFloat:_texelHeight forUniform:texelHeightUniform program:filterProgram]; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageTwoInputFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageTwoInputFilter.h deleted file mode 100644 index da3a134..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageTwoInputFilter.h +++ /dev/null @@ -1,21 +0,0 @@ -#import "GPUImageFilter.h" - -extern NSString *const kGPUImageTwoInputTextureVertexShaderString; - -@interface GPUImageTwoInputFilter : GPUImageFilter -{ - GPUImageFramebuffer *secondInputFramebuffer; - - GLint filterSecondTextureCoordinateAttribute; - GLint filterInputTextureUniform2; - GPUImageRotationMode inputRotation2; - CMTime firstFrameTime, secondFrameTime; - - BOOL hasSetFirstTexture, hasReceivedFirstFrame, hasReceivedSecondFrame, firstFrameWasVideo, secondFrameWasVideo; - BOOL firstFrameCheckDisabled, secondFrameCheckDisabled; -} - -- (void)disableFirstFrameCheck; -- (void)disableSecondFrameCheck; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageTwoInputFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageTwoInputFilter.m deleted file mode 100644 index cf31873..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageTwoInputFilter.m +++ /dev/null @@ -1,264 +0,0 @@ -#import "GPUImageTwoInputFilter.h" - -NSString *const kGPUImageTwoInputTextureVertexShaderString = SHADER_STRING -( - attribute vec4 position; - attribute vec4 inputTextureCoordinate; - attribute vec4 inputTextureCoordinate2; - - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; - - void main() - { - gl_Position = position; - textureCoordinate = inputTextureCoordinate.xy; - textureCoordinate2 = inputTextureCoordinate2.xy; - } -); - - -@implementation GPUImageTwoInputFilter - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)initWithFragmentShaderFromString:(NSString *)fragmentShaderString; -{ - if (!(self = [self initWithVertexShaderFromString:kGPUImageTwoInputTextureVertexShaderString fragmentShaderFromString:fragmentShaderString])) - { - return nil; - } - - return self; -} - -- (id)initWithVertexShaderFromString:(NSString *)vertexShaderString fragmentShaderFromString:(NSString *)fragmentShaderString; -{ - if (!(self = [super initWithVertexShaderFromString:vertexShaderString fragmentShaderFromString:fragmentShaderString])) - { - return nil; - } - - inputRotation2 = kGPUImageNoRotation; - - hasSetFirstTexture = NO; - - hasReceivedFirstFrame = NO; - hasReceivedSecondFrame = NO; - firstFrameWasVideo = NO; - secondFrameWasVideo = NO; - firstFrameCheckDisabled = NO; - secondFrameCheckDisabled = NO; - - firstFrameTime = kCMTimeInvalid; - secondFrameTime = kCMTimeInvalid; - - runSynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext useImageProcessingContext]; - filterSecondTextureCoordinateAttribute = [filterProgram attributeIndex:@"inputTextureCoordinate2"]; - - filterInputTextureUniform2 = [filterProgram uniformIndex:@"inputImageTexture2"]; // This does assume a name of "inputImageTexture2" for second input texture in the fragment shader - glEnableVertexAttribArray(filterSecondTextureCoordinateAttribute); - }); - - return self; -} - -- (void)initializeAttributes; -{ - [super initializeAttributes]; - [filterProgram addAttribute:@"inputTextureCoordinate2"]; -} - -- (void)disableFirstFrameCheck; -{ - firstFrameCheckDisabled = YES; -} - -- (void)disableSecondFrameCheck; -{ - secondFrameCheckDisabled = YES; -} - -#pragma mark - -#pragma mark Rendering - -- (void)renderToTextureWithVertices:(const GLfloat *)vertices textureCoordinates:(const GLfloat *)textureCoordinates; -{ - if (self.preventRendering) - { - [firstInputFramebuffer unlock]; - [secondInputFramebuffer unlock]; - return; - } - - [GPUImageContext setActiveShaderProgram:filterProgram]; - outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:[self sizeOfFBO] textureOptions:self.outputTextureOptions onlyTexture:NO]; - [outputFramebuffer activateFramebuffer]; - if (usingNextFrameForImageCapture) - { - [outputFramebuffer lock]; - } - - [self setUniformsForProgramAtIndex:0]; - - glClearColor(backgroundColorRed, backgroundColorGreen, backgroundColorBlue, backgroundColorAlpha); - glClear(GL_COLOR_BUFFER_BIT); - - glActiveTexture(GL_TEXTURE2); - glBindTexture(GL_TEXTURE_2D, [firstInputFramebuffer texture]); - glUniform1i(filterInputTextureUniform, 2); - - glActiveTexture(GL_TEXTURE3); - glBindTexture(GL_TEXTURE_2D, [secondInputFramebuffer texture]); - glUniform1i(filterInputTextureUniform2, 3); - - glVertexAttribPointer(filterPositionAttribute, 2, GL_FLOAT, 0, 0, vertices); - glVertexAttribPointer(filterTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, textureCoordinates); - glVertexAttribPointer(filterSecondTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, [[self class] textureCoordinatesForRotation:inputRotation2]); - - glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); - - [firstInputFramebuffer unlock]; - [secondInputFramebuffer unlock]; - if (usingNextFrameForImageCapture) - { - dispatch_semaphore_signal(imageCaptureSemaphore); - } -} - -#pragma mark - -#pragma mark GPUImageInput - -- (NSInteger)nextAvailableTextureIndex; -{ - if (hasSetFirstTexture) - { - return 1; - } - else - { - return 0; - } -} - -- (void)setInputFramebuffer:(GPUImageFramebuffer *)newInputFramebuffer atIndex:(NSInteger)textureIndex; -{ - if (textureIndex == 0) - { - firstInputFramebuffer = newInputFramebuffer; - hasSetFirstTexture = YES; - [firstInputFramebuffer lock]; - } - else - { - secondInputFramebuffer = newInputFramebuffer; - [secondInputFramebuffer lock]; - } -} - -- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex; -{ - if (textureIndex == 0) - { - [super setInputSize:newSize atIndex:textureIndex]; - - if (CGSizeEqualToSize(newSize, CGSizeZero)) - { - hasSetFirstTexture = NO; - } - } -} - -- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; -{ - if (textureIndex == 0) - { - inputRotation = newInputRotation; - } - else - { - inputRotation2 = newInputRotation; - } -} - -- (CGSize)rotatedSize:(CGSize)sizeToRotate forIndex:(NSInteger)textureIndex; -{ - CGSize rotatedSize = sizeToRotate; - - GPUImageRotationMode rotationToCheck; - if (textureIndex == 0) - { - rotationToCheck = inputRotation; - } - else - { - rotationToCheck = inputRotation2; - } - - if (GPUImageRotationSwapsWidthAndHeight(rotationToCheck)) - { - rotatedSize.width = sizeToRotate.height; - rotatedSize.height = sizeToRotate.width; - } - - return rotatedSize; -} - -- (void)newFrameReadyAtTime:(CMTime)frameTime atIndex:(NSInteger)textureIndex; -{ - // You can set up infinite update loops, so this helps to short circuit them - if (hasReceivedFirstFrame && hasReceivedSecondFrame) - { - return; - } - - BOOL updatedMovieFrameOppositeStillImage = NO; - - if (textureIndex == 0) - { - hasReceivedFirstFrame = YES; - firstFrameTime = frameTime; - if (secondFrameCheckDisabled) - { - hasReceivedSecondFrame = YES; - } - - if (!CMTIME_IS_INDEFINITE(frameTime)) - { - if CMTIME_IS_INDEFINITE(secondFrameTime) - { - updatedMovieFrameOppositeStillImage = YES; - } - } - } - else - { - hasReceivedSecondFrame = YES; - secondFrameTime = frameTime; - if (firstFrameCheckDisabled) - { - hasReceivedFirstFrame = YES; - } - - if (!CMTIME_IS_INDEFINITE(frameTime)) - { - if CMTIME_IS_INDEFINITE(firstFrameTime) - { - updatedMovieFrameOppositeStillImage = YES; - } - } - } - - // || (hasReceivedFirstFrame && secondFrameCheckDisabled) || (hasReceivedSecondFrame && firstFrameCheckDisabled) - if ((hasReceivedFirstFrame && hasReceivedSecondFrame) || updatedMovieFrameOppositeStillImage) - { - CMTime passOnFrameTime = (!CMTIME_IS_INDEFINITE(firstFrameTime)) ? firstFrameTime : secondFrameTime; - [super newFrameReadyAtTime:passOnFrameTime atIndex:0]; // Bugfix when trying to record: always use time from first input (unless indefinite, in which case use the second input) - hasReceivedFirstFrame = NO; - hasReceivedSecondFrame = NO; - } -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageTwoPassFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageTwoPassFilter.h deleted file mode 100755 index 23087f3..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageTwoPassFilter.h +++ /dev/null @@ -1,19 +0,0 @@ -#import "GPUImageFilter.h" - -@interface GPUImageTwoPassFilter : GPUImageFilter -{ - GPUImageFramebuffer *secondOutputFramebuffer; - - GLProgram *secondFilterProgram; - GLint secondFilterPositionAttribute, secondFilterTextureCoordinateAttribute; - GLint secondFilterInputTextureUniform, secondFilterInputTextureUniform2; - - NSMutableDictionary *secondProgramUniformStateRestorationBlocks; -} - -// Initialization and teardown -- (id)initWithFirstStageVertexShaderFromString:(NSString *)firstStageVertexShaderString firstStageFragmentShaderFromString:(NSString *)firstStageFragmentShaderString secondStageVertexShaderFromString:(NSString *)secondStageVertexShaderString secondStageFragmentShaderFromString:(NSString *)secondStageFragmentShaderString; -- (id)initWithFirstStageFragmentShaderFromString:(NSString *)firstStageFragmentShaderString secondStageFragmentShaderFromString:(NSString *)secondStageFragmentShaderString; -- (void)initializeSecondaryAttributes; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageTwoPassFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageTwoPassFilter.m deleted file mode 100755 index 9eb292b..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageTwoPassFilter.m +++ /dev/null @@ -1,201 +0,0 @@ -#import "GPUImageTwoPassFilter.h" - -@implementation GPUImageTwoPassFilter - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)initWithFirstStageVertexShaderFromString:(NSString *)firstStageVertexShaderString firstStageFragmentShaderFromString:(NSString *)firstStageFragmentShaderString secondStageVertexShaderFromString:(NSString *)secondStageVertexShaderString secondStageFragmentShaderFromString:(NSString *)secondStageFragmentShaderString; -{ - if (!(self = [super initWithVertexShaderFromString:firstStageVertexShaderString fragmentShaderFromString:firstStageFragmentShaderString])) - { - return nil; - } - - secondProgramUniformStateRestorationBlocks = [NSMutableDictionary dictionaryWithCapacity:10]; - - runSynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext useImageProcessingContext]; - - secondFilterProgram = [[GPUImageContext sharedImageProcessingContext] programForVertexShaderString:secondStageVertexShaderString fragmentShaderString:secondStageFragmentShaderString]; - - if (!secondFilterProgram.initialized) - { - [self initializeSecondaryAttributes]; - - if (![secondFilterProgram link]) - { - NSString *progLog = [secondFilterProgram programLog]; - NSLog(@"Program link log: %@", progLog); - NSString *fragLog = [secondFilterProgram fragmentShaderLog]; - NSLog(@"Fragment shader compile log: %@", fragLog); - NSString *vertLog = [secondFilterProgram vertexShaderLog]; - NSLog(@"Vertex shader compile log: %@", vertLog); - secondFilterProgram = nil; - NSAssert(NO, @"Filter shader link failed"); - } - } - - secondFilterPositionAttribute = [secondFilterProgram attributeIndex:@"position"]; - secondFilterTextureCoordinateAttribute = [secondFilterProgram attributeIndex:@"inputTextureCoordinate"]; - secondFilterInputTextureUniform = [secondFilterProgram uniformIndex:@"inputImageTexture"]; // This does assume a name of "inputImageTexture" for the fragment shader - secondFilterInputTextureUniform2 = [secondFilterProgram uniformIndex:@"inputImageTexture2"]; // This does assume a name of "inputImageTexture2" for second input texture in the fragment shader - - [GPUImageContext setActiveShaderProgram:secondFilterProgram]; - - glEnableVertexAttribArray(secondFilterPositionAttribute); - glEnableVertexAttribArray(secondFilterTextureCoordinateAttribute); - }); - - return self; -} - -- (id)initWithFirstStageFragmentShaderFromString:(NSString *)firstStageFragmentShaderString secondStageFragmentShaderFromString:(NSString *)secondStageFragmentShaderString; -{ - if (!(self = [self initWithFirstStageVertexShaderFromString:kGPUImageVertexShaderString firstStageFragmentShaderFromString:firstStageFragmentShaderString secondStageVertexShaderFromString:kGPUImageVertexShaderString secondStageFragmentShaderFromString:secondStageFragmentShaderString])) - { - return nil; - } - - return self; -} - -- (void)initializeSecondaryAttributes; -{ - [secondFilterProgram addAttribute:@"position"]; - [secondFilterProgram addAttribute:@"inputTextureCoordinate"]; -} - -#pragma mark - -#pragma mark Managing targets - -- (GPUImageFramebuffer *)framebufferForOutput; -{ - return secondOutputFramebuffer; -} - -- (void)removeOutputFramebuffer; -{ - secondOutputFramebuffer = nil; -} - -#pragma mark - -#pragma mark Rendering - -- (void)renderToTextureWithVertices:(const GLfloat *)vertices textureCoordinates:(const GLfloat *)textureCoordinates; -{ - if (self.preventRendering) - { - [firstInputFramebuffer unlock]; - return; - } - - [GPUImageContext setActiveShaderProgram:filterProgram]; - - outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:[self sizeOfFBO] textureOptions:self.outputTextureOptions onlyTexture:NO]; - [outputFramebuffer activateFramebuffer]; - - [self setUniformsForProgramAtIndex:0]; - - glClearColor(backgroundColorRed, backgroundColorGreen, backgroundColorBlue, backgroundColorAlpha); - glClear(GL_COLOR_BUFFER_BIT); - - glActiveTexture(GL_TEXTURE2); - glBindTexture(GL_TEXTURE_2D, [firstInputFramebuffer texture]); - - glUniform1i(filterInputTextureUniform, 2); - - glVertexAttribPointer(filterPositionAttribute, 2, GL_FLOAT, 0, 0, vertices); - glVertexAttribPointer(filterTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, textureCoordinates); - - glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); - - [firstInputFramebuffer unlock]; - firstInputFramebuffer = nil; - - // This assumes that any two-pass filter that says it desires monochrome input is using the first pass for a luminance conversion, which can be dropped -// if (!currentlyReceivingMonochromeInput) -// { - // Run the first stage of the two-pass filter -// [super renderToTextureWithVertices:vertices textureCoordinates:textureCoordinates]; -// } - - // Run the second stage of the two-pass filter - secondOutputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:[self sizeOfFBO] textureOptions:self.outputTextureOptions onlyTexture:NO]; - [secondOutputFramebuffer activateFramebuffer]; - [GPUImageContext setActiveShaderProgram:secondFilterProgram]; - if (usingNextFrameForImageCapture) - { - [secondOutputFramebuffer lock]; - } - - [self setUniformsForProgramAtIndex:1]; - - glActiveTexture(GL_TEXTURE3); - glBindTexture(GL_TEXTURE_2D, [outputFramebuffer texture]); - glVertexAttribPointer(secondFilterTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, [[self class] textureCoordinatesForRotation:kGPUImageNoRotation]); - - // TODO: Re-enable this monochrome optimization -// if (!currentlyReceivingMonochromeInput) -// { -// glActiveTexture(GL_TEXTURE3); -// glBindTexture(GL_TEXTURE_2D, outputTexture); -// glVertexAttribPointer(secondFilterTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, [[self class] textureCoordinatesForRotation:kGPUImageNoRotation]); -// } -// else -// { -// glActiveTexture(GL_TEXTURE3); -// glBindTexture(GL_TEXTURE_2D, sourceTexture); -// glVertexAttribPointer(secondFilterTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, textureCoordinates); -// } - - glUniform1i(secondFilterInputTextureUniform, 3); - - glVertexAttribPointer(secondFilterPositionAttribute, 2, GL_FLOAT, 0, 0, vertices); - - glClearColor(0.0f, 0.0f, 0.0f, 1.0f); - glClear(GL_COLOR_BUFFER_BIT); - - glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); - [outputFramebuffer unlock]; - outputFramebuffer = nil; - - if (usingNextFrameForImageCapture) - { - dispatch_semaphore_signal(imageCaptureSemaphore); - } -} - -- (void)setAndExecuteUniformStateCallbackAtIndex:(GLint)uniform forProgram:(GLProgram *)shaderProgram toBlock:(dispatch_block_t)uniformStateBlock; -{ -// TODO: Deal with the fact that two-pass filters may have the same shader program identifier - if (shaderProgram == filterProgram) - { - [uniformStateRestorationBlocks setObject:[uniformStateBlock copy] forKey:[NSNumber numberWithInt:uniform]]; - } - else - { - [secondProgramUniformStateRestorationBlocks setObject:[uniformStateBlock copy] forKey:[NSNumber numberWithInt:uniform]]; - } - uniformStateBlock(); -} - -- (void)setUniformsForProgramAtIndex:(NSUInteger)programIndex; -{ - if (programIndex == 0) - { - [uniformStateRestorationBlocks enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop){ - dispatch_block_t currentBlock = obj; - currentBlock(); - }]; - } - else - { - [secondProgramUniformStateRestorationBlocks enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop){ - dispatch_block_t currentBlock = obj; - currentBlock(); - }]; - } -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageTwoPassTextureSamplingFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageTwoPassTextureSamplingFilter.h deleted file mode 100644 index 73ab79d..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageTwoPassTextureSamplingFilter.h +++ /dev/null @@ -1,13 +0,0 @@ -#import "GPUImageTwoPassFilter.h" - -@interface GPUImageTwoPassTextureSamplingFilter : GPUImageTwoPassFilter -{ - GLint verticalPassTexelWidthOffsetUniform, verticalPassTexelHeightOffsetUniform, horizontalPassTexelWidthOffsetUniform, horizontalPassTexelHeightOffsetUniform; - GLfloat verticalPassTexelWidthOffset, verticalPassTexelHeightOffset, horizontalPassTexelWidthOffset, horizontalPassTexelHeightOffset; - CGFloat _verticalTexelSpacing, _horizontalTexelSpacing; -} - -// This sets the spacing between texels (in pixels) when sampling for the first. By default, this is 1.0 -@property(readwrite, nonatomic) CGFloat verticalTexelSpacing, horizontalTexelSpacing; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageTwoPassTextureSamplingFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageTwoPassTextureSamplingFilter.m deleted file mode 100644 index b6a2ec5..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageTwoPassTextureSamplingFilter.m +++ /dev/null @@ -1,85 +0,0 @@ -#import "GPUImageTwoPassTextureSamplingFilter.h" - -@implementation GPUImageTwoPassTextureSamplingFilter - -@synthesize verticalTexelSpacing = _verticalTexelSpacing; -@synthesize horizontalTexelSpacing = _horizontalTexelSpacing; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)initWithFirstStageVertexShaderFromString:(NSString *)firstStageVertexShaderString firstStageFragmentShaderFromString:(NSString *)firstStageFragmentShaderString secondStageVertexShaderFromString:(NSString *)secondStageVertexShaderString secondStageFragmentShaderFromString:(NSString *)secondStageFragmentShaderString -{ - if (!(self = [super initWithFirstStageVertexShaderFromString:firstStageVertexShaderString firstStageFragmentShaderFromString:firstStageFragmentShaderString secondStageVertexShaderFromString:secondStageVertexShaderString secondStageFragmentShaderFromString:secondStageFragmentShaderString])) - { - return nil; - } - - runSynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext useImageProcessingContext]; - - verticalPassTexelWidthOffsetUniform = [filterProgram uniformIndex:@"texelWidthOffset"]; - verticalPassTexelHeightOffsetUniform = [filterProgram uniformIndex:@"texelHeightOffset"]; - - horizontalPassTexelWidthOffsetUniform = [secondFilterProgram uniformIndex:@"texelWidthOffset"]; - horizontalPassTexelHeightOffsetUniform = [secondFilterProgram uniformIndex:@"texelHeightOffset"]; - }); - - self.verticalTexelSpacing = 1.0; - self.horizontalTexelSpacing = 1.0; - - return self; -} - -- (void)setUniformsForProgramAtIndex:(NSUInteger)programIndex; -{ - [super setUniformsForProgramAtIndex:programIndex]; - - if (programIndex == 0) - { - glUniform1f(verticalPassTexelWidthOffsetUniform, verticalPassTexelWidthOffset); - glUniform1f(verticalPassTexelHeightOffsetUniform, verticalPassTexelHeightOffset); - } - else - { - glUniform1f(horizontalPassTexelWidthOffsetUniform, horizontalPassTexelWidthOffset); - glUniform1f(horizontalPassTexelHeightOffsetUniform, horizontalPassTexelHeightOffset); - } -} - -- (void)setupFilterForSize:(CGSize)filterFrameSize; -{ - runSynchronouslyOnVideoProcessingQueue(^{ - // The first pass through the framebuffer may rotate the inbound image, so need to account for that by changing up the kernel ordering for that pass - if (GPUImageRotationSwapsWidthAndHeight(inputRotation)) - { - verticalPassTexelWidthOffset = _verticalTexelSpacing / filterFrameSize.height; - verticalPassTexelHeightOffset = 0.0; - } - else - { - verticalPassTexelWidthOffset = 0.0; - verticalPassTexelHeightOffset = _verticalTexelSpacing / filterFrameSize.height; - } - - horizontalPassTexelWidthOffset = _horizontalTexelSpacing / filterFrameSize.width; - horizontalPassTexelHeightOffset = 0.0; - }); -} - -#pragma mark - -#pragma mark Accessors - -- (void)setVerticalTexelSpacing:(CGFloat)newValue; -{ - _verticalTexelSpacing = newValue; - [self setupFilterForSize:[self sizeOfFBO]]; -} - -- (void)setHorizontalTexelSpacing:(CGFloat)newValue; -{ - _horizontalTexelSpacing = newValue; - [self setupFilterForSize:[self sizeOfFBO]]; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageUIElement.h b/Example/Pods/GPUImage/framework/Source/GPUImageUIElement.h deleted file mode 100644 index 984ff2a..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageUIElement.h +++ /dev/null @@ -1,15 +0,0 @@ -#import "GPUImageOutput.h" - -@interface GPUImageUIElement : GPUImageOutput - -// Initialization and teardown -- (id)initWithView:(UIView *)inputView; -- (id)initWithLayer:(CALayer *)inputLayer; - -// Layer management -- (CGSize)layerSizeInPixels; -- (void)update; -- (void)updateUsingCurrentTime; -- (void)updateWithTimestamp:(CMTime)frameTime; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageUIElement.m b/Example/Pods/GPUImage/framework/Source/GPUImageUIElement.m deleted file mode 100644 index 3320892..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageUIElement.m +++ /dev/null @@ -1,123 +0,0 @@ -#import "GPUImageUIElement.h" - -@interface GPUImageUIElement () -{ - UIView *view; - CALayer *layer; - - CGSize previousLayerSizeInPixels; - CMTime time; - NSTimeInterval actualTimeOfLastUpdate; -} - -@end - -@implementation GPUImageUIElement - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)initWithView:(UIView *)inputView; -{ - if (!(self = [super init])) - { - return nil; - } - - view = inputView; - layer = inputView.layer; - - previousLayerSizeInPixels = CGSizeZero; - [self update]; - - return self; -} - -- (id)initWithLayer:(CALayer *)inputLayer; -{ - if (!(self = [super init])) - { - return nil; - } - - view = nil; - layer = inputLayer; - - previousLayerSizeInPixels = CGSizeZero; - [self update]; - - return self; -} - -#pragma mark - -#pragma mark Layer management - -- (CGSize)layerSizeInPixels; -{ - CGSize pointSize = layer.bounds.size; - return CGSizeMake(layer.contentsScale * pointSize.width, layer.contentsScale * pointSize.height); -} - -- (void)update; -{ - [self updateWithTimestamp:kCMTimeIndefinite]; -} - -- (void)updateUsingCurrentTime; -{ - if(CMTIME_IS_INVALID(time)) { - time = CMTimeMakeWithSeconds(0, 600); - actualTimeOfLastUpdate = [NSDate timeIntervalSinceReferenceDate]; - } else { - NSTimeInterval now = [NSDate timeIntervalSinceReferenceDate]; - NSTimeInterval diff = now - actualTimeOfLastUpdate; - time = CMTimeAdd(time, CMTimeMakeWithSeconds(diff, 600)); - actualTimeOfLastUpdate = now; - } - - [self updateWithTimestamp:time]; -} - -- (void)updateWithTimestamp:(CMTime)frameTime; -{ - [GPUImageContext useImageProcessingContext]; - - CGSize layerPixelSize = [self layerSizeInPixels]; - - GLubyte *imageData = (GLubyte *) calloc(1, (int)layerPixelSize.width * (int)layerPixelSize.height * 4); - - CGColorSpaceRef genericRGBColorspace = CGColorSpaceCreateDeviceRGB(); - CGContextRef imageContext = CGBitmapContextCreate(imageData, (int)layerPixelSize.width, (int)layerPixelSize.height, 8, (int)layerPixelSize.width * 4, genericRGBColorspace, kCGBitmapByteOrder32Little | kCGImageAlphaPremultipliedFirst); -// CGContextRotateCTM(imageContext, M_PI_2); - CGContextTranslateCTM(imageContext, 0.0f, layerPixelSize.height); - CGContextScaleCTM(imageContext, layer.contentsScale, -layer.contentsScale); - // CGContextSetBlendMode(imageContext, kCGBlendModeCopy); // From Technical Q&A QA1708: http://developer.apple.com/library/ios/#qa/qa1708/_index.html - - [layer renderInContext:imageContext]; - - CGContextRelease(imageContext); - CGColorSpaceRelease(genericRGBColorspace); - - // TODO: This may not work - outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:layerPixelSize textureOptions:self.outputTextureOptions onlyTexture:YES]; - - glBindTexture(GL_TEXTURE_2D, [outputFramebuffer texture]); - // no need to use self.outputTextureOptions here, we always need these texture options - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, (int)layerPixelSize.width, (int)layerPixelSize.height, 0, GL_BGRA, GL_UNSIGNED_BYTE, imageData); - - free(imageData); - - for (id currentTarget in targets) - { - if (currentTarget != self.targetToIgnoreForUpdates) - { - NSInteger indexOfObject = [targets indexOfObject:currentTarget]; - NSInteger textureIndexOfTarget = [[targetTextureIndices objectAtIndex:indexOfObject] integerValue]; - - [currentTarget setInputSize:layerPixelSize atIndex:textureIndexOfTarget]; - [currentTarget newFrameReadyAtTime:frameTime atIndex:textureIndexOfTarget]; - } - } -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageUnsharpMaskFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageUnsharpMaskFilter.h deleted file mode 100755 index 9d8aff0..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageUnsharpMaskFilter.h +++ /dev/null @@ -1,16 +0,0 @@ -#import "GPUImageFilterGroup.h" - -@class GPUImageGaussianBlurFilter; - -@interface GPUImageUnsharpMaskFilter : GPUImageFilterGroup -{ - GPUImageGaussianBlurFilter *blurFilter; - GPUImageFilter *unsharpMaskFilter; -} -// The blur radius of the underlying Gaussian blur. The default is 4.0. -@property (readwrite, nonatomic) CGFloat blurRadiusInPixels; - -// The strength of the sharpening, from 0.0 on up, with a default of 1.0 -@property(readwrite, nonatomic) CGFloat intensity; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageUnsharpMaskFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageUnsharpMaskFilter.m deleted file mode 100755 index 542c5ea..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageUnsharpMaskFilter.m +++ /dev/null @@ -1,101 +0,0 @@ -#import "GPUImageUnsharpMaskFilter.h" -#import "GPUImageFilter.h" -#import "GPUImageTwoInputFilter.h" -#import "GPUImageGaussianBlurFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageUnsharpMaskFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - varying highp vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - uniform highp float intensity; - - void main() - { - lowp vec4 sharpImageColor = texture2D(inputImageTexture, textureCoordinate); - lowp vec3 blurredImageColor = texture2D(inputImageTexture2, textureCoordinate2).rgb; - - gl_FragColor = vec4(sharpImageColor.rgb * intensity + blurredImageColor * (1.0 - intensity), sharpImageColor.a); -// gl_FragColor = mix(blurredImageColor, sharpImageColor, intensity); -// gl_FragColor = vec4(sharpImageColor.rgb - (blurredImageColor.rgb * intensity), 1.0); - } -); -#else -NSString *const kGPUImageUnsharpMaskFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - uniform float intensity; - - void main() - { - vec4 sharpImageColor = texture2D(inputImageTexture, textureCoordinate); - vec3 blurredImageColor = texture2D(inputImageTexture2, textureCoordinate2).rgb; - - gl_FragColor = vec4(sharpImageColor.rgb * intensity + blurredImageColor * (1.0 - intensity), sharpImageColor.a); - // gl_FragColor = mix(blurredImageColor, sharpImageColor, intensity); - // gl_FragColor = vec4(sharpImageColor.rgb - (blurredImageColor.rgb * intensity), 1.0); - } -); -#endif - -@implementation GPUImageUnsharpMaskFilter - -@synthesize blurRadiusInPixels; -@synthesize intensity = _intensity; - -- (id)init; -{ - if (!(self = [super init])) - { - return nil; - } - - // First pass: apply a variable Gaussian blur - blurFilter = [[GPUImageGaussianBlurFilter alloc] init]; - [self addFilter:blurFilter]; - - // Second pass: combine the blurred image with the original sharp one - unsharpMaskFilter = [[GPUImageTwoInputFilter alloc] initWithFragmentShaderFromString:kGPUImageUnsharpMaskFragmentShaderString]; - [self addFilter:unsharpMaskFilter]; - - // Texture location 0 needs to be the sharp image for both the blur and the second stage processing - [blurFilter addTarget:unsharpMaskFilter atTextureLocation:1]; - - self.initialFilters = [NSArray arrayWithObjects:blurFilter, unsharpMaskFilter, nil]; - self.terminalFilter = unsharpMaskFilter; - - self.intensity = 1.0; - self.blurRadiusInPixels = 4.0; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setBlurRadiusInPixels:(CGFloat)newValue; -{ - blurFilter.blurRadiusInPixels = newValue; -} - -- (CGFloat)blurRadiusInPixels; -{ - return blurFilter.blurRadiusInPixels; -} - -- (void)setIntensity:(CGFloat)newValue; -{ - _intensity = newValue; - [unsharpMaskFilter setFloat:newValue forUniformName:@"intensity"]; -} - -@end \ No newline at end of file diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageVideoCamera.h b/Example/Pods/GPUImage/framework/Source/GPUImageVideoCamera.h deleted file mode 100755 index 22ccb94..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageVideoCamera.h +++ /dev/null @@ -1,154 +0,0 @@ -#import -#import -#import -#import "GPUImageContext.h" -#import "GPUImageOutput.h" - -extern const GLfloat kColorConversion601[]; -extern const GLfloat kColorConversion601FullRange[]; -extern const GLfloat kColorConversion709[]; -extern NSString *const kGPUImageYUVVideoRangeConversionForRGFragmentShaderString; -extern NSString *const kGPUImageYUVFullRangeConversionForLAFragmentShaderString; -extern NSString *const kGPUImageYUVVideoRangeConversionForLAFragmentShaderString; - - -//Delegate Protocal for Face Detection. -@protocol GPUImageVideoCameraDelegate - -@optional -- (void)willOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer; -@end - - -/** - A GPUImageOutput that provides frames from either camera -*/ -@interface GPUImageVideoCamera : GPUImageOutput -{ - NSUInteger numberOfFramesCaptured; - CGFloat totalFrameTimeDuringCapture; - - AVCaptureSession *_captureSession; - AVCaptureDevice *_inputCamera; - AVCaptureDevice *_microphone; - AVCaptureDeviceInput *videoInput; - AVCaptureVideoDataOutput *videoOutput; - - BOOL capturePaused; - GPUImageRotationMode outputRotation, internalRotation; - dispatch_semaphore_t frameRenderingSemaphore; - - BOOL captureAsYUV; - GLuint luminanceTexture, chrominanceTexture; - - __unsafe_unretained id _delegate; -} - -/// The AVCaptureSession used to capture from the camera -@property(readonly, retain, nonatomic) AVCaptureSession *captureSession; - -/// This enables the capture session preset to be changed on the fly -@property (readwrite, nonatomic, copy) NSString *captureSessionPreset; - -/// This sets the frame rate of the camera (iOS 5 and above only) -/** - Setting this to 0 or below will set the frame rate back to the default setting for a particular preset. - */ -@property (readwrite) int32_t frameRate; - -/// Easy way to tell which cameras are present on device -@property (readonly, getter = isFrontFacingCameraPresent) BOOL frontFacingCameraPresent; -@property (readonly, getter = isBackFacingCameraPresent) BOOL backFacingCameraPresent; - -/// This enables the benchmarking mode, which logs out instantaneous and average frame times to the console -@property(readwrite, nonatomic) BOOL runBenchmark; - -/// Use this property to manage camera settings. Focus point, exposure point, etc. -@property(readonly) AVCaptureDevice *inputCamera; - -/// This determines the rotation applied to the output image, based on the source material -@property(readwrite, nonatomic) UIInterfaceOrientation outputImageOrientation; - -/// These properties determine whether or not the two camera orientations should be mirrored. By default, both are NO. -@property(readwrite, nonatomic) BOOL horizontallyMirrorFrontFacingCamera, horizontallyMirrorRearFacingCamera; - -@property(nonatomic, assign) id delegate; - -/// @name Initialization and teardown - -/** Begin a capture session - - See AVCaptureSession for acceptable values - - @param sessionPreset Session preset to use - @param cameraPosition Camera to capture from - */ -- (id)initWithSessionPreset:(NSString *)sessionPreset cameraPosition:(AVCaptureDevicePosition)cameraPosition; - -/** Add audio capture to the session. Adding inputs and outputs freezes the capture session momentarily, so you - can use this method to add the audio inputs and outputs early, if you're going to set the audioEncodingTarget - later. Returns YES is the audio inputs and outputs were added, or NO if they had already been added. - */ -- (BOOL)addAudioInputsAndOutputs; - -/** Remove the audio capture inputs and outputs from this session. Returns YES if the audio inputs and outputs - were removed, or NO is they hadn't already been added. - */ -- (BOOL)removeAudioInputsAndOutputs; - -/** Tear down the capture session - */ -- (void)removeInputsAndOutputs; - -/// @name Manage the camera video stream - -/** Start camera capturing - */ -- (void)startCameraCapture; - -/** Stop camera capturing - */ -- (void)stopCameraCapture; - -/** Pause camera capturing - */ -- (void)pauseCameraCapture; - -/** Resume camera capturing - */ -- (void)resumeCameraCapture; - -/** Process a video sample - @param sampleBuffer Buffer to process - */ -- (void)processVideoSampleBuffer:(CMSampleBufferRef)sampleBuffer; - -/** Process an audio sample - @param sampleBuffer Buffer to process - */ -- (void)processAudioSampleBuffer:(CMSampleBufferRef)sampleBuffer; - -/** Get the position (front, rear) of the source camera - */ -- (AVCaptureDevicePosition)cameraPosition; - -/** Get the AVCaptureConnection of the source camera - */ -- (AVCaptureConnection *)videoCaptureConnection; - -/** This flips between the front and rear cameras - */ -- (void)rotateCamera; - -/// @name Benchmarking - -/** When benchmarking is enabled, this will keep a running average of the time from uploading, processing, and final recording or display - */ -- (CGFloat)averageFrameDurationDuringCapture; - -- (void)resetBenchmarkAverage; - -+ (BOOL)isBackFacingCameraPresent; -+ (BOOL)isFrontFacingCameraPresent; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageVideoCamera.m b/Example/Pods/GPUImage/framework/Source/GPUImageVideoCamera.m deleted file mode 100644 index b84f88a..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageVideoCamera.m +++ /dev/null @@ -1,1129 +0,0 @@ -#import "GPUImageVideoCamera.h" -#import "GPUImageMovieWriter.h" -#import "GPUImageFilter.h" - -// Color Conversion Constants (YUV to RGB) including adjustment from 16-235/16-240 (video range) - -// BT.601, which is the standard for SDTV. -const GLfloat kColorConversion601[] = { - 1.164, 1.164, 1.164, - 0.0, -0.392, 2.017, - 1.596, -0.813, 0.0, -}; - -// BT.709, which is the standard for HDTV. -const GLfloat kColorConversion709[] = { - 1.164, 1.164, 1.164, - 0.0, -0.213, 2.112, - 1.793, -0.533, 0.0, -}; - -// BT.601 full range (ref: http://www.equasys.de/colorconversion.html) -const GLfloat kColorConversion601FullRange[] = { - 1.0, 1.0, 1.0, - 0.0, -0.343, 1.765, - 1.4, -0.711, 0.0, -}; - -NSString *const kGPUImageYUVVideoRangeConversionForRGFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D luminanceTexture; - uniform sampler2D chrominanceTexture; - uniform mediump mat3 colorConversionMatrix; - - void main() - { - mediump vec3 yuv; - lowp vec3 rgb; - - yuv.x = texture2D(luminanceTexture, textureCoordinate).r; - yuv.yz = texture2D(chrominanceTexture, textureCoordinate).rg - vec2(0.5, 0.5); - rgb = colorConversionMatrix * yuv; - - gl_FragColor = vec4(rgb, 1); - } - ); - -NSString *const kGPUImageYUVFullRangeConversionForLAFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D luminanceTexture; - uniform sampler2D chrominanceTexture; - uniform mediump mat3 colorConversionMatrix; - - void main() - { - mediump vec3 yuv; - lowp vec3 rgb; - - yuv.x = texture2D(luminanceTexture, textureCoordinate).r; - yuv.yz = texture2D(chrominanceTexture, textureCoordinate).ra - vec2(0.5, 0.5); - rgb = colorConversionMatrix * yuv; - - gl_FragColor = vec4(rgb, 1); - } - ); - -NSString *const kGPUImageYUVVideoRangeConversionForLAFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D luminanceTexture; - uniform sampler2D chrominanceTexture; - uniform mediump mat3 colorConversionMatrix; - - void main() - { - mediump vec3 yuv; - lowp vec3 rgb; - - yuv.x = texture2D(luminanceTexture, textureCoordinate).r - (16.0/255.0); - yuv.yz = texture2D(chrominanceTexture, textureCoordinate).ra - vec2(0.5, 0.5); - rgb = colorConversionMatrix * yuv; - - gl_FragColor = vec4(rgb, 1); - } - ); - - -#pragma mark - -#pragma mark Private methods and instance variables - -@interface GPUImageVideoCamera () -{ - AVCaptureDeviceInput *audioInput; - AVCaptureAudioDataOutput *audioOutput; - NSDate *startingCaptureTime; - - dispatch_queue_t cameraProcessingQueue, audioProcessingQueue; - - GLProgram *yuvConversionProgram; - GLint yuvConversionPositionAttribute, yuvConversionTextureCoordinateAttribute; - GLint yuvConversionLuminanceTextureUniform, yuvConversionChrominanceTextureUniform; - GLint yuvConversionMatrixUniform; - const GLfloat *_preferredConversion; - - BOOL isFullYUVRange; - - int imageBufferWidth, imageBufferHeight; - - BOOL addedAudioInputsDueToEncodingTarget; -} - -- (void)updateOrientationSendToTargets; -- (void)convertYUVToRGBOutput; - -@end - -@implementation GPUImageVideoCamera - -@synthesize captureSessionPreset = _captureSessionPreset; -@synthesize captureSession = _captureSession; -@synthesize inputCamera = _inputCamera; -@synthesize runBenchmark = _runBenchmark; -@synthesize outputImageOrientation = _outputImageOrientation; -@synthesize delegate = _delegate; -@synthesize horizontallyMirrorFrontFacingCamera = _horizontallyMirrorFrontFacingCamera, horizontallyMirrorRearFacingCamera = _horizontallyMirrorRearFacingCamera; -@synthesize frameRate = _frameRate; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [self initWithSessionPreset:AVCaptureSessionPreset640x480 cameraPosition:AVCaptureDevicePositionBack])) - { - return nil; - } - - return self; -} - -- (id)initWithSessionPreset:(NSString *)sessionPreset cameraPosition:(AVCaptureDevicePosition)cameraPosition; -{ - if (!(self = [super init])) - { - return nil; - } - - cameraProcessingQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH,0); - audioProcessingQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW,0); - - frameRenderingSemaphore = dispatch_semaphore_create(1); - - _frameRate = 0; // This will not set frame rate unless this value gets set to 1 or above - _runBenchmark = NO; - capturePaused = NO; - outputRotation = kGPUImageNoRotation; - internalRotation = kGPUImageNoRotation; - captureAsYUV = YES; - _preferredConversion = kColorConversion709; - - // Grab the back-facing or front-facing camera - _inputCamera = nil; - NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo]; - for (AVCaptureDevice *device in devices) - { - if ([device position] == cameraPosition) - { - _inputCamera = device; - } - } - - if (!_inputCamera) { - return nil; - } - - // Create the capture session - _captureSession = [[AVCaptureSession alloc] init]; - - [_captureSession beginConfiguration]; - - // Add the video input - NSError *error = nil; - videoInput = [[AVCaptureDeviceInput alloc] initWithDevice:_inputCamera error:&error]; - if ([_captureSession canAddInput:videoInput]) - { - [_captureSession addInput:videoInput]; - } - - // Add the video frame output - videoOutput = [[AVCaptureVideoDataOutput alloc] init]; - [videoOutput setAlwaysDiscardsLateVideoFrames:NO]; - -// if (captureAsYUV && [GPUImageContext deviceSupportsRedTextures]) - if (captureAsYUV && [GPUImageContext supportsFastTextureUpload]) - { - BOOL supportsFullYUVRange = NO; - NSArray *supportedPixelFormats = videoOutput.availableVideoCVPixelFormatTypes; - for (NSNumber *currentPixelFormat in supportedPixelFormats) - { - if ([currentPixelFormat intValue] == kCVPixelFormatType_420YpCbCr8BiPlanarFullRange) - { - supportsFullYUVRange = YES; - } - } - - if (supportsFullYUVRange) - { - [videoOutput setVideoSettings:[NSDictionary dictionaryWithObject:[NSNumber numberWithInt:kCVPixelFormatType_420YpCbCr8BiPlanarFullRange] forKey:(id)kCVPixelBufferPixelFormatTypeKey]]; - isFullYUVRange = YES; - } - else - { - [videoOutput setVideoSettings:[NSDictionary dictionaryWithObject:[NSNumber numberWithInt:kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange] forKey:(id)kCVPixelBufferPixelFormatTypeKey]]; - isFullYUVRange = NO; - } - } - else - { - [videoOutput setVideoSettings:[NSDictionary dictionaryWithObject:[NSNumber numberWithInt:kCVPixelFormatType_32BGRA] forKey:(id)kCVPixelBufferPixelFormatTypeKey]]; - } - - runSynchronouslyOnVideoProcessingQueue(^{ - - if (captureAsYUV) - { - [GPUImageContext useImageProcessingContext]; - // if ([GPUImageContext deviceSupportsRedTextures]) - // { - // yuvConversionProgram = [[GPUImageContext sharedImageProcessingContext] programForVertexShaderString:kGPUImageVertexShaderString fragmentShaderString:kGPUImageYUVVideoRangeConversionForRGFragmentShaderString]; - // } - // else - // { - if (isFullYUVRange) - { - yuvConversionProgram = [[GPUImageContext sharedImageProcessingContext] programForVertexShaderString:kGPUImageVertexShaderString fragmentShaderString:kGPUImageYUVFullRangeConversionForLAFragmentShaderString]; - } - else - { - yuvConversionProgram = [[GPUImageContext sharedImageProcessingContext] programForVertexShaderString:kGPUImageVertexShaderString fragmentShaderString:kGPUImageYUVVideoRangeConversionForLAFragmentShaderString]; - } - - // } - - if (!yuvConversionProgram.initialized) - { - [yuvConversionProgram addAttribute:@"position"]; - [yuvConversionProgram addAttribute:@"inputTextureCoordinate"]; - - if (![yuvConversionProgram link]) - { - NSString *progLog = [yuvConversionProgram programLog]; - NSLog(@"Program link log: %@", progLog); - NSString *fragLog = [yuvConversionProgram fragmentShaderLog]; - NSLog(@"Fragment shader compile log: %@", fragLog); - NSString *vertLog = [yuvConversionProgram vertexShaderLog]; - NSLog(@"Vertex shader compile log: %@", vertLog); - yuvConversionProgram = nil; - NSAssert(NO, @"Filter shader link failed"); - } - } - - yuvConversionPositionAttribute = [yuvConversionProgram attributeIndex:@"position"]; - yuvConversionTextureCoordinateAttribute = [yuvConversionProgram attributeIndex:@"inputTextureCoordinate"]; - yuvConversionLuminanceTextureUniform = [yuvConversionProgram uniformIndex:@"luminanceTexture"]; - yuvConversionChrominanceTextureUniform = [yuvConversionProgram uniformIndex:@"chrominanceTexture"]; - yuvConversionMatrixUniform = [yuvConversionProgram uniformIndex:@"colorConversionMatrix"]; - - [GPUImageContext setActiveShaderProgram:yuvConversionProgram]; - - glEnableVertexAttribArray(yuvConversionPositionAttribute); - glEnableVertexAttribArray(yuvConversionTextureCoordinateAttribute); - } - }); - - [videoOutput setSampleBufferDelegate:self queue:cameraProcessingQueue]; - if ([_captureSession canAddOutput:videoOutput]) - { - [_captureSession addOutput:videoOutput]; - } - else - { - NSLog(@"Couldn't add video output"); - return nil; - } - - _captureSessionPreset = sessionPreset; - [_captureSession setSessionPreset:_captureSessionPreset]; - -// This will let you get 60 FPS video from the 720p preset on an iPhone 4S, but only that device and that preset -// AVCaptureConnection *conn = [videoOutput connectionWithMediaType:AVMediaTypeVideo]; -// -// if (conn.supportsVideoMinFrameDuration) -// conn.videoMinFrameDuration = CMTimeMake(1,60); -// if (conn.supportsVideoMaxFrameDuration) -// conn.videoMaxFrameDuration = CMTimeMake(1,60); - - [_captureSession commitConfiguration]; - - return self; -} - -- (GPUImageFramebuffer *)framebufferForOutput; -{ - return outputFramebuffer; -} - -- (void)dealloc -{ - [self stopCameraCapture]; - [videoOutput setSampleBufferDelegate:nil queue:dispatch_get_main_queue()]; - [audioOutput setSampleBufferDelegate:nil queue:dispatch_get_main_queue()]; - - [self removeInputsAndOutputs]; - -// ARC forbids explicit message send of 'release'; since iOS 6 even for dispatch_release() calls: stripping it out in that case is required. -#if !OS_OBJECT_USE_OBJC - if (frameRenderingSemaphore != NULL) - { - dispatch_release(frameRenderingSemaphore); - } -#endif -} - -- (BOOL)addAudioInputsAndOutputs -{ - if (audioOutput) - return NO; - - [_captureSession beginConfiguration]; - - _microphone = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeAudio]; - audioInput = [AVCaptureDeviceInput deviceInputWithDevice:_microphone error:nil]; - if ([_captureSession canAddInput:audioInput]) - { - [_captureSession addInput:audioInput]; - } - audioOutput = [[AVCaptureAudioDataOutput alloc] init]; - - if ([_captureSession canAddOutput:audioOutput]) - { - [_captureSession addOutput:audioOutput]; - } - else - { - NSLog(@"Couldn't add audio output"); - } - [audioOutput setSampleBufferDelegate:self queue:audioProcessingQueue]; - - [_captureSession commitConfiguration]; - return YES; -} - -- (BOOL)removeAudioInputsAndOutputs -{ - if (!audioOutput) - return NO; - - [_captureSession beginConfiguration]; - [_captureSession removeInput:audioInput]; - [_captureSession removeOutput:audioOutput]; - audioInput = nil; - audioOutput = nil; - _microphone = nil; - [_captureSession commitConfiguration]; - return YES; -} - -- (void)removeInputsAndOutputs; -{ - [_captureSession beginConfiguration]; - if (videoInput) { - [_captureSession removeInput:videoInput]; - [_captureSession removeOutput:videoOutput]; - videoInput = nil; - videoOutput = nil; - } - if (_microphone != nil) - { - [_captureSession removeInput:audioInput]; - [_captureSession removeOutput:audioOutput]; - audioInput = nil; - audioOutput = nil; - _microphone = nil; - } - [_captureSession commitConfiguration]; -} - -#pragma mark - -#pragma mark Managing targets - -- (void)addTarget:(id)newTarget atTextureLocation:(NSInteger)textureLocation; -{ - [super addTarget:newTarget atTextureLocation:textureLocation]; - - [newTarget setInputRotation:outputRotation atIndex:textureLocation]; -} - -#pragma mark - -#pragma mark Manage the camera video stream - -- (void)startCameraCapture; -{ - if (![_captureSession isRunning]) - { - startingCaptureTime = [NSDate date]; - [_captureSession startRunning]; - }; -} - -- (void)stopCameraCapture; -{ - if ([_captureSession isRunning]) - { - [_captureSession stopRunning]; - } -} - -- (void)pauseCameraCapture; -{ - capturePaused = YES; -} - -- (void)resumeCameraCapture; -{ - capturePaused = NO; -} - -- (void)rotateCamera -{ - if (self.frontFacingCameraPresent == NO) - return; - - NSError *error; - AVCaptureDeviceInput *newVideoInput; - AVCaptureDevicePosition currentCameraPosition = [[videoInput device] position]; - - if (currentCameraPosition == AVCaptureDevicePositionBack) - { - currentCameraPosition = AVCaptureDevicePositionFront; - } - else - { - currentCameraPosition = AVCaptureDevicePositionBack; - } - - AVCaptureDevice *backFacingCamera = nil; - NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo]; - for (AVCaptureDevice *device in devices) - { - if ([device position] == currentCameraPosition) - { - backFacingCamera = device; - } - } - newVideoInput = [[AVCaptureDeviceInput alloc] initWithDevice:backFacingCamera error:&error]; - - if (newVideoInput != nil) - { - [_captureSession beginConfiguration]; - - [_captureSession removeInput:videoInput]; - if ([_captureSession canAddInput:newVideoInput]) - { - [_captureSession addInput:newVideoInput]; - videoInput = newVideoInput; - } - else - { - [_captureSession addInput:videoInput]; - } - //captureSession.sessionPreset = oriPreset; - [_captureSession commitConfiguration]; - } - - _inputCamera = backFacingCamera; - [self setOutputImageOrientation:_outputImageOrientation]; -} - -- (AVCaptureDevicePosition)cameraPosition -{ - return [[videoInput device] position]; -} - -+ (BOOL)isBackFacingCameraPresent; -{ - NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo]; - - for (AVCaptureDevice *device in devices) - { - if ([device position] == AVCaptureDevicePositionBack) - return YES; - } - - return NO; -} - -- (BOOL)isBackFacingCameraPresent -{ - return [GPUImageVideoCamera isBackFacingCameraPresent]; -} - -+ (BOOL)isFrontFacingCameraPresent; -{ - NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo]; - - for (AVCaptureDevice *device in devices) - { - if ([device position] == AVCaptureDevicePositionFront) - return YES; - } - - return NO; -} - -- (BOOL)isFrontFacingCameraPresent -{ - return [GPUImageVideoCamera isFrontFacingCameraPresent]; -} - -- (void)setCaptureSessionPreset:(NSString *)captureSessionPreset; -{ - [_captureSession beginConfiguration]; - - _captureSessionPreset = captureSessionPreset; - [_captureSession setSessionPreset:_captureSessionPreset]; - - [_captureSession commitConfiguration]; -} - -- (void)setFrameRate:(int32_t)frameRate; -{ - _frameRate = frameRate; - - if (_frameRate > 0) - { - if ([_inputCamera respondsToSelector:@selector(setActiveVideoMinFrameDuration:)] && - [_inputCamera respondsToSelector:@selector(setActiveVideoMaxFrameDuration:)]) { - - NSError *error; - [_inputCamera lockForConfiguration:&error]; - if (error == nil) { -#if defined(__IPHONE_7_0) - [_inputCamera setActiveVideoMinFrameDuration:CMTimeMake(1, _frameRate)]; - [_inputCamera setActiveVideoMaxFrameDuration:CMTimeMake(1, _frameRate)]; -#endif - } - [_inputCamera unlockForConfiguration]; - - } else { - - for (AVCaptureConnection *connection in videoOutput.connections) - { -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - if ([connection respondsToSelector:@selector(setVideoMinFrameDuration:)]) - connection.videoMinFrameDuration = CMTimeMake(1, _frameRate); - - if ([connection respondsToSelector:@selector(setVideoMaxFrameDuration:)]) - connection.videoMaxFrameDuration = CMTimeMake(1, _frameRate); -#pragma clang diagnostic pop - } - } - - } - else - { - if ([_inputCamera respondsToSelector:@selector(setActiveVideoMinFrameDuration:)] && - [_inputCamera respondsToSelector:@selector(setActiveVideoMaxFrameDuration:)]) { - - NSError *error; - [_inputCamera lockForConfiguration:&error]; - if (error == nil) { -#if defined(__IPHONE_7_0) - [_inputCamera setActiveVideoMinFrameDuration:kCMTimeInvalid]; - [_inputCamera setActiveVideoMaxFrameDuration:kCMTimeInvalid]; -#endif - } - [_inputCamera unlockForConfiguration]; - - } else { - - for (AVCaptureConnection *connection in videoOutput.connections) - { -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - if ([connection respondsToSelector:@selector(setVideoMinFrameDuration:)]) - connection.videoMinFrameDuration = kCMTimeInvalid; // This sets videoMinFrameDuration back to default - - if ([connection respondsToSelector:@selector(setVideoMaxFrameDuration:)]) - connection.videoMaxFrameDuration = kCMTimeInvalid; // This sets videoMaxFrameDuration back to default -#pragma clang diagnostic pop - } - } - - } -} - -- (int32_t)frameRate; -{ - return _frameRate; -} - -- (AVCaptureConnection *)videoCaptureConnection { - for (AVCaptureConnection *connection in [videoOutput connections] ) { - for ( AVCaptureInputPort *port in [connection inputPorts] ) { - if ( [[port mediaType] isEqual:AVMediaTypeVideo] ) { - return connection; - } - } - } - - return nil; -} - -#define INITIALFRAMESTOIGNOREFORBENCHMARK 5 - -- (void)updateTargetsForVideoCameraUsingCacheTextureAtWidth:(int)bufferWidth height:(int)bufferHeight time:(CMTime)currentTime; -{ - // First, update all the framebuffers in the targets - for (id currentTarget in targets) - { - if ([currentTarget enabled]) - { - NSInteger indexOfObject = [targets indexOfObject:currentTarget]; - NSInteger textureIndexOfTarget = [[targetTextureIndices objectAtIndex:indexOfObject] integerValue]; - - if (currentTarget != self.targetToIgnoreForUpdates) - { - [currentTarget setInputRotation:outputRotation atIndex:textureIndexOfTarget]; - [currentTarget setInputSize:CGSizeMake(bufferWidth, bufferHeight) atIndex:textureIndexOfTarget]; - - if ([currentTarget wantsMonochromeInput] && captureAsYUV) - { - [currentTarget setCurrentlyReceivingMonochromeInput:YES]; - // TODO: Replace optimization for monochrome output - [currentTarget setInputFramebuffer:outputFramebuffer atIndex:textureIndexOfTarget]; - } - else - { - [currentTarget setCurrentlyReceivingMonochromeInput:NO]; - [currentTarget setInputFramebuffer:outputFramebuffer atIndex:textureIndexOfTarget]; - } - } - else - { - [currentTarget setInputRotation:outputRotation atIndex:textureIndexOfTarget]; - [currentTarget setInputFramebuffer:outputFramebuffer atIndex:textureIndexOfTarget]; - } - } - } - - // Then release our hold on the local framebuffer to send it back to the cache as soon as it's no longer needed - [outputFramebuffer unlock]; - outputFramebuffer = nil; - - // Finally, trigger rendering as needed - for (id currentTarget in targets) - { - if ([currentTarget enabled]) - { - NSInteger indexOfObject = [targets indexOfObject:currentTarget]; - NSInteger textureIndexOfTarget = [[targetTextureIndices objectAtIndex:indexOfObject] integerValue]; - - if (currentTarget != self.targetToIgnoreForUpdates) - { - [currentTarget newFrameReadyAtTime:currentTime atIndex:textureIndexOfTarget]; - } - } - } -} - -- (void)processVideoSampleBuffer:(CMSampleBufferRef)sampleBuffer; -{ - if (capturePaused) - { - return; - } - - CFAbsoluteTime startTime = CFAbsoluteTimeGetCurrent(); - CVImageBufferRef cameraFrame = CMSampleBufferGetImageBuffer(sampleBuffer); - int bufferWidth = (int) CVPixelBufferGetWidth(cameraFrame); - int bufferHeight = (int) CVPixelBufferGetHeight(cameraFrame); - CFTypeRef colorAttachments = CVBufferGetAttachment(cameraFrame, kCVImageBufferYCbCrMatrixKey, NULL); - if (colorAttachments != NULL) - { - if(CFStringCompare(colorAttachments, kCVImageBufferYCbCrMatrix_ITU_R_601_4, 0) == kCFCompareEqualTo) - { - if (isFullYUVRange) - { - _preferredConversion = kColorConversion601FullRange; - } - else - { - _preferredConversion = kColorConversion601; - } - } - else - { - _preferredConversion = kColorConversion709; - } - } - else - { - if (isFullYUVRange) - { - _preferredConversion = kColorConversion601FullRange; - } - else - { - _preferredConversion = kColorConversion601; - } - } - - CMTime currentTime = CMSampleBufferGetPresentationTimeStamp(sampleBuffer); - - [GPUImageContext useImageProcessingContext]; - - if ([GPUImageContext supportsFastTextureUpload] && captureAsYUV) - { - CVOpenGLESTextureRef luminanceTextureRef = NULL; - CVOpenGLESTextureRef chrominanceTextureRef = NULL; - -// if (captureAsYUV && [GPUImageContext deviceSupportsRedTextures]) - if (CVPixelBufferGetPlaneCount(cameraFrame) > 0) // Check for YUV planar inputs to do RGB conversion - { - CVPixelBufferLockBaseAddress(cameraFrame, 0); - - if ( (imageBufferWidth != bufferWidth) && (imageBufferHeight != bufferHeight) ) - { - imageBufferWidth = bufferWidth; - imageBufferHeight = bufferHeight; - } - - CVReturn err; - // Y-plane - glActiveTexture(GL_TEXTURE4); - if ([GPUImageContext deviceSupportsRedTextures]) - { -// err = CVOpenGLESTextureCacheCreateTextureFromImage(kCFAllocatorDefault, coreVideoTextureCache, cameraFrame, NULL, GL_TEXTURE_2D, GL_RED_EXT, bufferWidth, bufferHeight, GL_RED_EXT, GL_UNSIGNED_BYTE, 0, &luminanceTextureRef); - err = CVOpenGLESTextureCacheCreateTextureFromImage(kCFAllocatorDefault, [[GPUImageContext sharedImageProcessingContext] coreVideoTextureCache], cameraFrame, NULL, GL_TEXTURE_2D, GL_LUMINANCE, bufferWidth, bufferHeight, GL_LUMINANCE, GL_UNSIGNED_BYTE, 0, &luminanceTextureRef); - } - else - { - err = CVOpenGLESTextureCacheCreateTextureFromImage(kCFAllocatorDefault, [[GPUImageContext sharedImageProcessingContext] coreVideoTextureCache], cameraFrame, NULL, GL_TEXTURE_2D, GL_LUMINANCE, bufferWidth, bufferHeight, GL_LUMINANCE, GL_UNSIGNED_BYTE, 0, &luminanceTextureRef); - } - if (err) - { - NSLog(@"Error at CVOpenGLESTextureCacheCreateTextureFromImage %d", err); - } - - luminanceTexture = CVOpenGLESTextureGetName(luminanceTextureRef); - glBindTexture(GL_TEXTURE_2D, luminanceTexture); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - - // UV-plane - glActiveTexture(GL_TEXTURE5); - if ([GPUImageContext deviceSupportsRedTextures]) - { -// err = CVOpenGLESTextureCacheCreateTextureFromImage(kCFAllocatorDefault, coreVideoTextureCache, cameraFrame, NULL, GL_TEXTURE_2D, GL_RG_EXT, bufferWidth/2, bufferHeight/2, GL_RG_EXT, GL_UNSIGNED_BYTE, 1, &chrominanceTextureRef); - err = CVOpenGLESTextureCacheCreateTextureFromImage(kCFAllocatorDefault, [[GPUImageContext sharedImageProcessingContext] coreVideoTextureCache], cameraFrame, NULL, GL_TEXTURE_2D, GL_LUMINANCE_ALPHA, bufferWidth/2, bufferHeight/2, GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, 1, &chrominanceTextureRef); - } - else - { - err = CVOpenGLESTextureCacheCreateTextureFromImage(kCFAllocatorDefault, [[GPUImageContext sharedImageProcessingContext] coreVideoTextureCache], cameraFrame, NULL, GL_TEXTURE_2D, GL_LUMINANCE_ALPHA, bufferWidth/2, bufferHeight/2, GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, 1, &chrominanceTextureRef); - } - if (err) - { - NSLog(@"Error at CVOpenGLESTextureCacheCreateTextureFromImage %d", err); - } - - chrominanceTexture = CVOpenGLESTextureGetName(chrominanceTextureRef); - glBindTexture(GL_TEXTURE_2D, chrominanceTexture); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - -// if (!allTargetsWantMonochromeData) -// { - [self convertYUVToRGBOutput]; -// } - - int rotatedImageBufferWidth = bufferWidth, rotatedImageBufferHeight = bufferHeight; - - if (GPUImageRotationSwapsWidthAndHeight(internalRotation)) - { - rotatedImageBufferWidth = bufferHeight; - rotatedImageBufferHeight = bufferWidth; - } - - [self updateTargetsForVideoCameraUsingCacheTextureAtWidth:rotatedImageBufferWidth height:rotatedImageBufferHeight time:currentTime]; - - CVPixelBufferUnlockBaseAddress(cameraFrame, 0); - CFRelease(luminanceTextureRef); - CFRelease(chrominanceTextureRef); - } - else - { - // TODO: Mesh this with the output framebuffer structure - -// CVPixelBufferLockBaseAddress(cameraFrame, 0); -// -// CVReturn err = CVOpenGLESTextureCacheCreateTextureFromImage(kCFAllocatorDefault, [[GPUImageContext sharedImageProcessingContext] coreVideoTextureCache], cameraFrame, NULL, GL_TEXTURE_2D, GL_RGBA, bufferWidth, bufferHeight, GL_BGRA, GL_UNSIGNED_BYTE, 0, &texture); -// -// if (!texture || err) { -// NSLog(@"Camera CVOpenGLESTextureCacheCreateTextureFromImage failed (error: %d)", err); -// NSAssert(NO, @"Camera failure"); -// return; -// } -// -// outputTexture = CVOpenGLESTextureGetName(texture); -// // glBindTexture(CVOpenGLESTextureGetTarget(texture), outputTexture); -// glBindTexture(GL_TEXTURE_2D, outputTexture); -// glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); -// glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); -// glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); -// glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); -// -// [self updateTargetsForVideoCameraUsingCacheTextureAtWidth:bufferWidth height:bufferHeight time:currentTime]; -// -// CVPixelBufferUnlockBaseAddress(cameraFrame, 0); -// CFRelease(texture); -// -// outputTexture = 0; - } - - - if (_runBenchmark) - { - numberOfFramesCaptured++; - if (numberOfFramesCaptured > INITIALFRAMESTOIGNOREFORBENCHMARK) - { - CFAbsoluteTime currentFrameTime = (CFAbsoluteTimeGetCurrent() - startTime); - totalFrameTimeDuringCapture += currentFrameTime; - NSLog(@"Average frame time : %f ms", [self averageFrameDurationDuringCapture]); - NSLog(@"Current frame time : %f ms", 1000.0 * currentFrameTime); - } - } - } - else - { - CVPixelBufferLockBaseAddress(cameraFrame, 0); - - int bytesPerRow = (int) CVPixelBufferGetBytesPerRow(cameraFrame); - outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:CGSizeMake(bytesPerRow / 4, bufferHeight) onlyTexture:YES]; - [outputFramebuffer activateFramebuffer]; - - glBindTexture(GL_TEXTURE_2D, [outputFramebuffer texture]); - - // glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, bufferWidth, bufferHeight, 0, GL_BGRA, GL_UNSIGNED_BYTE, CVPixelBufferGetBaseAddress(cameraFrame)); - - // Using BGRA extension to pull in video frame data directly - // The use of bytesPerRow / 4 accounts for a display glitch present in preview video frames when using the photo preset on the camera - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, bytesPerRow / 4, bufferHeight, 0, GL_BGRA, GL_UNSIGNED_BYTE, CVPixelBufferGetBaseAddress(cameraFrame)); - - [self updateTargetsForVideoCameraUsingCacheTextureAtWidth:bytesPerRow / 4 height:bufferHeight time:currentTime]; - - CVPixelBufferUnlockBaseAddress(cameraFrame, 0); - - if (_runBenchmark) - { - numberOfFramesCaptured++; - if (numberOfFramesCaptured > INITIALFRAMESTOIGNOREFORBENCHMARK) - { - CFAbsoluteTime currentFrameTime = (CFAbsoluteTimeGetCurrent() - startTime); - totalFrameTimeDuringCapture += currentFrameTime; - } - } - } -} - -- (void)processAudioSampleBuffer:(CMSampleBufferRef)sampleBuffer; -{ - [self.audioEncodingTarget processAudioBuffer:sampleBuffer]; -} - -- (void)convertYUVToRGBOutput; -{ - [GPUImageContext setActiveShaderProgram:yuvConversionProgram]; - - int rotatedImageBufferWidth = imageBufferWidth, rotatedImageBufferHeight = imageBufferHeight; - - if (GPUImageRotationSwapsWidthAndHeight(internalRotation)) - { - rotatedImageBufferWidth = imageBufferHeight; - rotatedImageBufferHeight = imageBufferWidth; - } - - outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:CGSizeMake(rotatedImageBufferWidth, rotatedImageBufferHeight) textureOptions:self.outputTextureOptions onlyTexture:NO]; - [outputFramebuffer activateFramebuffer]; - - glClearColor(0.0f, 0.0f, 0.0f, 1.0f); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - static const GLfloat squareVertices[] = { - -1.0f, -1.0f, - 1.0f, -1.0f, - -1.0f, 1.0f, - 1.0f, 1.0f, - }; - - glActiveTexture(GL_TEXTURE4); - glBindTexture(GL_TEXTURE_2D, luminanceTexture); - glUniform1i(yuvConversionLuminanceTextureUniform, 4); - - glActiveTexture(GL_TEXTURE5); - glBindTexture(GL_TEXTURE_2D, chrominanceTexture); - glUniform1i(yuvConversionChrominanceTextureUniform, 5); - - glUniformMatrix3fv(yuvConversionMatrixUniform, 1, GL_FALSE, _preferredConversion); - - glVertexAttribPointer(yuvConversionPositionAttribute, 2, GL_FLOAT, 0, 0, squareVertices); - glVertexAttribPointer(yuvConversionTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, [GPUImageFilter textureCoordinatesForRotation:internalRotation]); - - glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); -} - -#pragma mark - -#pragma mark Benchmarking - -- (CGFloat)averageFrameDurationDuringCapture; -{ - return (totalFrameTimeDuringCapture / (CGFloat)(numberOfFramesCaptured - INITIALFRAMESTOIGNOREFORBENCHMARK)) * 1000.0; -} - -- (void)resetBenchmarkAverage; -{ - numberOfFramesCaptured = 0; - totalFrameTimeDuringCapture = 0.0; -} - -#pragma mark - -#pragma mark AVCaptureVideoDataOutputSampleBufferDelegate - -- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection -{ - if (!self.captureSession.isRunning) - { - return; - } - else if (captureOutput == audioOutput) - { - [self processAudioSampleBuffer:sampleBuffer]; - } - else - { - if (dispatch_semaphore_wait(frameRenderingSemaphore, DISPATCH_TIME_NOW) != 0) - { - return; - } - - CFRetain(sampleBuffer); - runAsynchronouslyOnVideoProcessingQueue(^{ - //Feature Detection Hook. - if (self.delegate) - { - [self.delegate willOutputSampleBuffer:sampleBuffer]; - } - - [self processVideoSampleBuffer:sampleBuffer]; - - CFRelease(sampleBuffer); - dispatch_semaphore_signal(frameRenderingSemaphore); - }); - } -} - -#pragma mark - -#pragma mark Accessors - -- (void)setAudioEncodingTarget:(GPUImageMovieWriter *)newValue; -{ - if (newValue) { - /* Add audio inputs and outputs, if necessary */ - addedAudioInputsDueToEncodingTarget |= [self addAudioInputsAndOutputs]; - } else if (addedAudioInputsDueToEncodingTarget) { - /* Remove audio inputs and outputs, if they were added by previously setting the audio encoding target */ - [self removeAudioInputsAndOutputs]; - addedAudioInputsDueToEncodingTarget = NO; - } - - [super setAudioEncodingTarget:newValue]; -} - -- (void)updateOrientationSendToTargets; -{ - runSynchronouslyOnVideoProcessingQueue(^{ - - // From the iOS 5.0 release notes: - // In previous iOS versions, the front-facing camera would always deliver buffers in AVCaptureVideoOrientationLandscapeLeft and the back-facing camera would always deliver buffers in AVCaptureVideoOrientationLandscapeRight. - - if (captureAsYUV && [GPUImageContext supportsFastTextureUpload]) - { - outputRotation = kGPUImageNoRotation; - if ([self cameraPosition] == AVCaptureDevicePositionBack) - { - if (_horizontallyMirrorRearFacingCamera) - { - switch(_outputImageOrientation) - { - case UIInterfaceOrientationPortrait:internalRotation = kGPUImageRotateRightFlipVertical; break; - case UIInterfaceOrientationPortraitUpsideDown:internalRotation = kGPUImageRotate180; break; - case UIInterfaceOrientationLandscapeLeft:internalRotation = kGPUImageFlipHorizonal; break; - case UIInterfaceOrientationLandscapeRight:internalRotation = kGPUImageFlipVertical; break; - default:internalRotation = kGPUImageNoRotation; - } - } - else - { - switch(_outputImageOrientation) - { - case UIInterfaceOrientationPortrait:internalRotation = kGPUImageRotateRight; break; - case UIInterfaceOrientationPortraitUpsideDown:internalRotation = kGPUImageRotateLeft; break; - case UIInterfaceOrientationLandscapeLeft:internalRotation = kGPUImageRotate180; break; - case UIInterfaceOrientationLandscapeRight:internalRotation = kGPUImageNoRotation; break; - default:internalRotation = kGPUImageNoRotation; - } - } - } - else - { - if (_horizontallyMirrorFrontFacingCamera) - { - switch(_outputImageOrientation) - { - case UIInterfaceOrientationPortrait:internalRotation = kGPUImageRotateRightFlipVertical; break; - case UIInterfaceOrientationPortraitUpsideDown:internalRotation = kGPUImageRotateRightFlipHorizontal; break; - case UIInterfaceOrientationLandscapeLeft:internalRotation = kGPUImageFlipHorizonal; break; - case UIInterfaceOrientationLandscapeRight:internalRotation = kGPUImageFlipVertical; break; - default:internalRotation = kGPUImageNoRotation; - } - } - else - { - switch(_outputImageOrientation) - { - case UIInterfaceOrientationPortrait:internalRotation = kGPUImageRotateRight; break; - case UIInterfaceOrientationPortraitUpsideDown:internalRotation = kGPUImageRotateLeft; break; - case UIInterfaceOrientationLandscapeLeft:internalRotation = kGPUImageNoRotation; break; - case UIInterfaceOrientationLandscapeRight:internalRotation = kGPUImageRotate180; break; - default:internalRotation = kGPUImageNoRotation; - } - } - } - } - else - { - if ([self cameraPosition] == AVCaptureDevicePositionBack) - { - if (_horizontallyMirrorRearFacingCamera) - { - switch(_outputImageOrientation) - { - case UIInterfaceOrientationPortrait:outputRotation = kGPUImageRotateRightFlipVertical; break; - case UIInterfaceOrientationPortraitUpsideDown:outputRotation = kGPUImageRotate180; break; - case UIInterfaceOrientationLandscapeLeft:outputRotation = kGPUImageFlipHorizonal; break; - case UIInterfaceOrientationLandscapeRight:outputRotation = kGPUImageFlipVertical; break; - default:outputRotation = kGPUImageNoRotation; - } - } - else - { - switch(_outputImageOrientation) - { - case UIInterfaceOrientationPortrait:outputRotation = kGPUImageRotateRight; break; - case UIInterfaceOrientationPortraitUpsideDown:outputRotation = kGPUImageRotateLeft; break; - case UIInterfaceOrientationLandscapeLeft:outputRotation = kGPUImageRotate180; break; - case UIInterfaceOrientationLandscapeRight:outputRotation = kGPUImageNoRotation; break; - default:outputRotation = kGPUImageNoRotation; - } - } - } - else - { - if (_horizontallyMirrorFrontFacingCamera) - { - switch(_outputImageOrientation) - { - case UIInterfaceOrientationPortrait:outputRotation = kGPUImageRotateRightFlipVertical; break; - case UIInterfaceOrientationPortraitUpsideDown:outputRotation = kGPUImageRotateRightFlipHorizontal; break; - case UIInterfaceOrientationLandscapeLeft:outputRotation = kGPUImageFlipHorizonal; break; - case UIInterfaceOrientationLandscapeRight:outputRotation = kGPUImageFlipVertical; break; - default:outputRotation = kGPUImageNoRotation; - } - } - else - { - switch(_outputImageOrientation) - { - case UIInterfaceOrientationPortrait:outputRotation = kGPUImageRotateRight; break; - case UIInterfaceOrientationPortraitUpsideDown:outputRotation = kGPUImageRotateLeft; break; - case UIInterfaceOrientationLandscapeLeft:outputRotation = kGPUImageNoRotation; break; - case UIInterfaceOrientationLandscapeRight:outputRotation = kGPUImageRotate180; break; - default:outputRotation = kGPUImageNoRotation; - } - } - } - } - - for (id currentTarget in targets) - { - NSInteger indexOfObject = [targets indexOfObject:currentTarget]; - [currentTarget setInputRotation:outputRotation atIndex:[[targetTextureIndices objectAtIndex:indexOfObject] integerValue]]; - } - }); -} - -- (void)setOutputImageOrientation:(UIInterfaceOrientation)newValue; -{ - _outputImageOrientation = newValue; - [self updateOrientationSendToTargets]; -} - -- (void)setHorizontallyMirrorFrontFacingCamera:(BOOL)newValue -{ - _horizontallyMirrorFrontFacingCamera = newValue; - [self updateOrientationSendToTargets]; -} - -- (void)setHorizontallyMirrorRearFacingCamera:(BOOL)newValue -{ - _horizontallyMirrorRearFacingCamera = newValue; - [self updateOrientationSendToTargets]; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageVignetteFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageVignetteFilter.h deleted file mode 100755 index 37be944..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageVignetteFilter.h +++ /dev/null @@ -1,22 +0,0 @@ -#import "GPUImageFilter.h" - -/** Performs a vignetting effect, fading out the image at the edges - */ -@interface GPUImageVignetteFilter : GPUImageFilter -{ - GLint vignetteCenterUniform, vignetteColorUniform, vignetteStartUniform, vignetteEndUniform; -} - -// the center for the vignette in tex coords (defaults to 0.5, 0.5) -@property (nonatomic, readwrite) CGPoint vignetteCenter; - -// The color to use for the Vignette (defaults to black) -@property (nonatomic, readwrite) GPUVector3 vignetteColor; - -// The normalized distance from the center where the vignette effect starts. Default of 0.5. -@property (nonatomic, readwrite) CGFloat vignetteStart; - -// The normalized distance from the center where the vignette effect ends. Default of 0.75. -@property (nonatomic, readwrite) CGFloat vignetteEnd; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageVignetteFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageVignetteFilter.m deleted file mode 100755 index 6e1eadb..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageVignetteFilter.m +++ /dev/null @@ -1,104 +0,0 @@ -#import "GPUImageVignetteFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageVignetteFragmentShaderString = SHADER_STRING -( - uniform sampler2D inputImageTexture; - varying highp vec2 textureCoordinate; - - uniform lowp vec2 vignetteCenter; - uniform lowp vec3 vignetteColor; - uniform highp float vignetteStart; - uniform highp float vignetteEnd; - - void main() - { - lowp vec4 sourceImageColor = texture2D(inputImageTexture, textureCoordinate); - lowp float d = distance(textureCoordinate, vec2(vignetteCenter.x, vignetteCenter.y)); - lowp float percent = smoothstep(vignetteStart, vignetteEnd, d); - gl_FragColor = vec4(mix(sourceImageColor.rgb, vignetteColor, percent), sourceImageColor.a); - } -); -#else -NSString *const kGPUImageVignetteFragmentShaderString = SHADER_STRING -( - uniform sampler2D inputImageTexture; - varying vec2 textureCoordinate; - - uniform vec2 vignetteCenter; - uniform vec3 vignetteColor; - uniform float vignetteStart; - uniform float vignetteEnd; - - void main() - { - vec4 sourceImageColor = texture2D(inputImageTexture, textureCoordinate); - float d = distance(textureCoordinate, vec2(vignetteCenter.x, vignetteCenter.y)); - float percent = smoothstep(vignetteStart, vignetteEnd, d); - gl_FragColor = vec4(mix(sourceImageColor.rgb, vignetteColor, percent), sourceImageColor.a); - } -); -#endif - -@implementation GPUImageVignetteFilter - -@synthesize vignetteCenter = _vignetteCenter; -@synthesize vignetteColor = _vignetteColor; -@synthesize vignetteStart =_vignetteStart; -@synthesize vignetteEnd = _vignetteEnd; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageVignetteFragmentShaderString])) - { - return nil; - } - - vignetteCenterUniform = [filterProgram uniformIndex:@"vignetteCenter"]; - vignetteColorUniform = [filterProgram uniformIndex:@"vignetteColor"]; - vignetteStartUniform = [filterProgram uniformIndex:@"vignetteStart"]; - vignetteEndUniform = [filterProgram uniformIndex:@"vignetteEnd"]; - - self.vignetteCenter = (CGPoint){ 0.5f, 0.5f }; - self.vignetteColor = (GPUVector3){ 0.0f, 0.0f, 0.0f }; - self.vignetteStart = 0.3; - self.vignetteEnd = 0.75; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setVignetteCenter:(CGPoint)newValue -{ - _vignetteCenter = newValue; - - [self setPoint:newValue forUniform:vignetteCenterUniform program:filterProgram]; -} - -- (void)setVignetteColor:(GPUVector3)newValue -{ - _vignetteColor = newValue; - - [self setVec3:newValue forUniform:vignetteColorUniform program:filterProgram]; -} - -- (void)setVignetteStart:(CGFloat)newValue; -{ - _vignetteStart = newValue; - - [self setFloat:_vignetteStart forUniform:vignetteStartUniform program:filterProgram]; -} - -- (void)setVignetteEnd:(CGFloat)newValue; -{ - _vignetteEnd = newValue; - - [self setFloat:_vignetteEnd forUniform:vignetteEndUniform program:filterProgram]; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageVoronoiConsumerFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageVoronoiConsumerFilter.h deleted file mode 100644 index 659e39d..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageVoronoiConsumerFilter.h +++ /dev/null @@ -1,10 +0,0 @@ -#import "GPUImageTwoInputFilter.h" - -@interface GPUImageVoronoiConsumerFilter : GPUImageTwoInputFilter -{ - GLint sizeUniform; -} - -@property (nonatomic, readwrite) CGSize sizeInPixels; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageVoronoiConsumerFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageVoronoiConsumerFilter.m deleted file mode 100644 index c12c34f..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageVoronoiConsumerFilter.m +++ /dev/null @@ -1,94 +0,0 @@ -#import "GPUImageVoronoiConsumerFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageVoronoiConsumerFragmentShaderString = SHADER_STRING -( - - precision highp float; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - uniform vec2 size; - varying vec2 textureCoordinate; - - vec2 getCoordFromColor(vec4 color) -{ - float z = color.z * 256.0; - float yoff = floor(z / 8.0); - float xoff = mod(z, 8.0); - float x = color.x*256.0 + xoff*256.0; - float y = color.y*256.0 + yoff*256.0; - return vec2(x,y) / size; -} - - void main(void) { - vec4 colorLoc = texture2D(inputImageTexture2, textureCoordinate); - vec4 color = texture2D(inputImageTexture, getCoordFromColor(colorLoc)); - - gl_FragColor = color; - } -); -#else -NSString *const kGPUImageVoronoiConsumerFragmentShaderString = SHADER_STRING -( - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - uniform vec2 size; - varying vec2 textureCoordinate; - - vec2 getCoordFromColor(vec4 color) - { - float z = color.z * 256.0; - float yoff = floor(z / 8.0); - float xoff = mod(z, 8.0); - float x = color.x*256.0 + xoff*256.0; - float y = color.y*256.0 + yoff*256.0; - return vec2(x,y) / size; - } - - void main(void) - { - vec4 colorLoc = texture2D(inputImageTexture2, textureCoordinate); - vec4 color = texture2D(inputImageTexture, getCoordFromColor(colorLoc)); - - gl_FragColor = color; - } -); -#endif - -@implementation GPUImageVoronoiConsumerFilter - -@synthesize sizeInPixels = _sizeInPixels; - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageVoronoiConsumerFragmentShaderString])) - { - return nil; - } - - sizeUniform = [filterProgram uniformIndex:@"size"]; - - return self; -} - --(void)setSizeInPixels:(CGSize)sizeInPixels { - _sizeInPixels = sizeInPixels; - - //validate that it's a power of 2 and square - - float width = log2(sizeInPixels.width); - float height = log2(sizeInPixels.height); - - if (width != height) { - NSLog(@"Voronoi point texture must be square"); - return; - } - if (width != floor(width) || height != floor(height)) { - NSLog(@"Voronoi point texture must be a power of 2. Texture size %f, %f", sizeInPixels.width, sizeInPixels.height); - return; - } - glUniform2f(sizeUniform, _sizeInPixels.width, _sizeInPixels.height); -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageWeakPixelInclusionFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageWeakPixelInclusionFilter.h deleted file mode 100644 index 44b76c6..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageWeakPixelInclusionFilter.h +++ /dev/null @@ -1,5 +0,0 @@ -#import "GPUImage3x3TextureSamplingFilter.h" - -@interface GPUImageWeakPixelInclusionFilter : GPUImage3x3TextureSamplingFilter - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageWeakPixelInclusionFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageWeakPixelInclusionFilter.m deleted file mode 100644 index 4e95ad5..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageWeakPixelInclusionFilter.m +++ /dev/null @@ -1,94 +0,0 @@ -#import "GPUImageWeakPixelInclusionFilter.h" - -@implementation GPUImageWeakPixelInclusionFilter - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageWeakPixelInclusionFragmentShaderString = SHADER_STRING -( - precision lowp float; - - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; - float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r; - float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r; - float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; - float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r; - float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r; - float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r; - float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r; - float centerIntensity = texture2D(inputImageTexture, textureCoordinate).r; - - float pixelIntensitySum = bottomLeftIntensity + topRightIntensity + topLeftIntensity + bottomRightIntensity + leftIntensity + rightIntensity + bottomIntensity + topIntensity + centerIntensity; - float sumTest = step(1.5, pixelIntensitySum); - float pixelTest = step(0.01, centerIntensity); - - gl_FragColor = vec4(vec3(sumTest * pixelTest), 1.0); - } -); -#else -NSString *const kGPUImageWeakPixelInclusionFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; - float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r; - float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r; - float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; - float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r; - float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r; - float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r; - float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r; - float centerIntensity = texture2D(inputImageTexture, textureCoordinate).r; - - float pixelIntensitySum = bottomLeftIntensity + topRightIntensity + topLeftIntensity + bottomRightIntensity + leftIntensity + rightIntensity + bottomIntensity + topIntensity + centerIntensity; - float sumTest = step(1.5, pixelIntensitySum); - float pixelTest = step(0.01, centerIntensity); - - gl_FragColor = vec4(vec3(sumTest * pixelTest), 1.0); - } -); -#endif - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [self initWithFragmentShaderFromString:kGPUImageWeakPixelInclusionFragmentShaderString])) - { - return nil; - } - - return self; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageWhiteBalanceFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageWhiteBalanceFilter.h deleted file mode 100644 index 6b09c33..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageWhiteBalanceFilter.h +++ /dev/null @@ -1,17 +0,0 @@ -#import "GPUImageFilter.h" -/** - * Created by Alaric Cole - * Allows adjustment of color temperature in terms of what an image was effectively shot in. This means higher Kelvin values will warm the image, while lower values will cool it. - - */ -@interface GPUImageWhiteBalanceFilter : GPUImageFilter -{ - GLint temperatureUniform, tintUniform; -} -//choose color temperature, in degrees Kelvin -@property(readwrite, nonatomic) CGFloat temperature; - -//adjust tint to compensate -@property(readwrite, nonatomic) CGFloat tint; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageWhiteBalanceFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageWhiteBalanceFilter.m deleted file mode 100644 index 17c9bce..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageWhiteBalanceFilter.m +++ /dev/null @@ -1,107 +0,0 @@ -#import "GPUImageWhiteBalanceFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageWhiteBalanceFragmentShaderString = SHADER_STRING -( -uniform sampler2D inputImageTexture; -varying highp vec2 textureCoordinate; - -uniform lowp float temperature; -uniform lowp float tint; - -const lowp vec3 warmFilter = vec3(0.93, 0.54, 0.0); - -const mediump mat3 RGBtoYIQ = mat3(0.299, 0.587, 0.114, 0.596, -0.274, -0.322, 0.212, -0.523, 0.311); -const mediump mat3 YIQtoRGB = mat3(1.0, 0.956, 0.621, 1.0, -0.272, -0.647, 1.0, -1.105, 1.702); - -void main() -{ - lowp vec4 source = texture2D(inputImageTexture, textureCoordinate); - - mediump vec3 yiq = RGBtoYIQ * source.rgb; //adjusting tint - yiq.b = clamp(yiq.b + tint*0.5226*0.1, -0.5226, 0.5226); - lowp vec3 rgb = YIQtoRGB * yiq; - - lowp vec3 processed = vec3( - (rgb.r < 0.5 ? (2.0 * rgb.r * warmFilter.r) : (1.0 - 2.0 * (1.0 - rgb.r) * (1.0 - warmFilter.r))), //adjusting temperature - (rgb.g < 0.5 ? (2.0 * rgb.g * warmFilter.g) : (1.0 - 2.0 * (1.0 - rgb.g) * (1.0 - warmFilter.g))), - (rgb.b < 0.5 ? (2.0 * rgb.b * warmFilter.b) : (1.0 - 2.0 * (1.0 - rgb.b) * (1.0 - warmFilter.b)))); - - gl_FragColor = vec4(mix(rgb, processed, temperature), source.a); -} -); -#else -NSString *const kGPUImageWhiteBalanceFragmentShaderString = SHADER_STRING -( - uniform sampler2D inputImageTexture; - varying vec2 textureCoordinate; - - uniform float temperature; - uniform float tint; - - const vec3 warmFilter = vec3(0.93, 0.54, 0.0); - - const mat3 RGBtoYIQ = mat3(0.299, 0.587, 0.114, 0.596, -0.274, -0.322, 0.212, -0.523, 0.311); - const mat3 YIQtoRGB = mat3(1.0, 0.956, 0.621, 1.0, -0.272, -0.647, 1.0, -1.105, 1.702); - - void main() -{ - vec4 source = texture2D(inputImageTexture, textureCoordinate); - - vec3 yiq = RGBtoYIQ * source.rgb; //adjusting tint - yiq.b = clamp(yiq.b + tint*0.5226*0.1, -0.5226, 0.5226); - vec3 rgb = YIQtoRGB * yiq; - - vec3 processed = vec3( - (rgb.r < 0.5 ? (2.0 * rgb.r * warmFilter.r) : (1.0 - 2.0 * (1.0 - rgb.r) * (1.0 - warmFilter.r))), //adjusting temperature - (rgb.g < 0.5 ? (2.0 * rgb.g * warmFilter.g) : (1.0 - 2.0 * (1.0 - rgb.g) * (1.0 - warmFilter.g))), - (rgb.b < 0.5 ? (2.0 * rgb.b * warmFilter.b) : (1.0 - 2.0 * (1.0 - rgb.b) * (1.0 - warmFilter.b)))); - - gl_FragColor = vec4(mix(rgb, processed, temperature), source.a); -} -); -#endif - -@implementation GPUImageWhiteBalanceFilter - -@synthesize temperature = _temperature; -@synthesize tint = _tint; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageWhiteBalanceFragmentShaderString])) - { - return nil; - } - - temperatureUniform = [filterProgram uniformIndex:@"temperature"]; - tintUniform = [filterProgram uniformIndex:@"tint"]; - - self.temperature = 5000.0; - self.tint = 0.0; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setTemperature:(CGFloat)newValue; -{ - _temperature = newValue; - - [self setFloat:_temperature < 5000 ? 0.0004 * (_temperature-5000.0) : 0.00006 * (_temperature-5000.0) forUniform:temperatureUniform program:filterProgram]; -} - -- (void)setTint:(CGFloat)newValue; -{ - _tint = newValue; - - [self setFloat:_tint / 100.0 forUniform:tintUniform program:filterProgram]; -} - -@end - diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageXYDerivativeFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageXYDerivativeFilter.h deleted file mode 100755 index 8db5745..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageXYDerivativeFilter.h +++ /dev/null @@ -1,5 +0,0 @@ -#import "GPUImageSobelEdgeDetectionFilter.h" - -@interface GPUImageXYDerivativeFilter : GPUImageSobelEdgeDetectionFilter - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageXYDerivativeFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageXYDerivativeFilter.m deleted file mode 100755 index 7e19e9d..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageXYDerivativeFilter.m +++ /dev/null @@ -1,106 +0,0 @@ -#import "GPUImageXYDerivativeFilter.h" - -// I'm using the Prewitt operator to obtain the derivative, then squaring the X and Y components and placing the product of the two in Z. -// In tests, Prewitt seemed to be tied with Sobel for the best, and it's just a little cheaper to compute. -// This is primarily intended to be used with corner detection filters. - -@implementation GPUImageXYDerivativeFilter - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageGradientFragmentShaderString = SHADER_STRING -( - precision highp float; - - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform float edgeStrength; - - void main() - { - float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r; - float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r; - float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r; - float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r; - float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; - float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; - float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r; - float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r; - - float verticalDerivative = -topLeftIntensity - topIntensity - topRightIntensity + bottomLeftIntensity + bottomIntensity + bottomRightIntensity; - float horizontalDerivative = -bottomLeftIntensity - leftIntensity - topLeftIntensity + bottomRightIntensity + rightIntensity + topRightIntensity; - verticalDerivative = verticalDerivative * edgeStrength; - horizontalDerivative = horizontalDerivative * edgeStrength; - - // Scaling the X * Y operation so that negative numbers are not clipped in the 0..1 range. This will be expanded in the corner detection filter - gl_FragColor = vec4(horizontalDerivative * horizontalDerivative, verticalDerivative * verticalDerivative, ((verticalDerivative * horizontalDerivative) + 1.0) / 2.0, 1.0); - } -); -#else -NSString *const kGPUImageGradientFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform float edgeStrength; - - void main() - { - float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r; - float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r; - float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r; - float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r; - float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; - float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; - float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r; - float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r; - - float verticalDerivative = -topLeftIntensity - topIntensity - topRightIntensity + bottomLeftIntensity + bottomIntensity + bottomRightIntensity; - float horizontalDerivative = -bottomLeftIntensity - leftIntensity - topLeftIntensity + bottomRightIntensity + rightIntensity + topRightIntensity; - verticalDerivative = verticalDerivative * edgeStrength; - horizontalDerivative = horizontalDerivative * edgeStrength; - - // Scaling the X * Y operation so that negative numbers are not clipped in the 0..1 range. This will be expanded in the corner detection filter - gl_FragColor = vec4(horizontalDerivative * horizontalDerivative, verticalDerivative * verticalDerivative, ((verticalDerivative * horizontalDerivative) + 1.0) / 2.0, 1.0); - } -); -#endif - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [self initWithFragmentShaderFromString:kGPUImageGradientFragmentShaderString])) - { - return nil; - } - - self.edgeStrength = 1.0; - - return self; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageZoomBlurFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageZoomBlurFilter.h deleted file mode 100644 index 744a72c..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageZoomBlurFilter.h +++ /dev/null @@ -1,13 +0,0 @@ -#import "GPUImageFilter.h" - -@interface GPUImageZoomBlurFilter : GPUImageFilter - -/** A multiplier for the blur size, ranging from 0.0 on up, with a default of 1.0 - */ -@property (readwrite, nonatomic) CGFloat blurSize; - -/** The normalized center of the blur. (0.5, 0.5) by default - */ -@property (readwrite, nonatomic) CGPoint blurCenter; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageZoomBlurFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageZoomBlurFilter.m deleted file mode 100644 index 2ae8493..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageZoomBlurFilter.m +++ /dev/null @@ -1,115 +0,0 @@ -#import "GPUImageZoomBlurFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageZoomBlurFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform highp vec2 blurCenter; - uniform highp float blurSize; - - void main() - { - // TODO: Do a more intelligent scaling based on resolution here - highp vec2 samplingOffset = 1.0/100.0 * (blurCenter - textureCoordinate) * blurSize; - - lowp vec4 fragmentColor = texture2D(inputImageTexture, textureCoordinate) * 0.18; - fragmentColor += texture2D(inputImageTexture, textureCoordinate + samplingOffset) * 0.15; - fragmentColor += texture2D(inputImageTexture, textureCoordinate + (2.0 * samplingOffset)) * 0.12; - fragmentColor += texture2D(inputImageTexture, textureCoordinate + (3.0 * samplingOffset)) * 0.09; - fragmentColor += texture2D(inputImageTexture, textureCoordinate + (4.0 * samplingOffset)) * 0.05; - fragmentColor += texture2D(inputImageTexture, textureCoordinate - samplingOffset) * 0.15; - fragmentColor += texture2D(inputImageTexture, textureCoordinate - (2.0 * samplingOffset)) * 0.12; - fragmentColor += texture2D(inputImageTexture, textureCoordinate - (3.0 * samplingOffset)) * 0.09; - fragmentColor += texture2D(inputImageTexture, textureCoordinate - (4.0 * samplingOffset)) * 0.05; - - gl_FragColor = fragmentColor; - } -); -#else -NSString *const kGPUImageZoomBlurFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform vec2 blurCenter; - uniform float blurSize; - - void main() - { - // TODO: Do a more intelligent scaling based on resolution here - vec2 samplingOffset = 1.0/100.0 * (blurCenter - textureCoordinate) * blurSize; - - vec4 fragmentColor = texture2D(inputImageTexture, textureCoordinate) * 0.18; - fragmentColor += texture2D(inputImageTexture, textureCoordinate + samplingOffset) * 0.15; - fragmentColor += texture2D(inputImageTexture, textureCoordinate + (2.0 * samplingOffset)) * 0.12; - fragmentColor += texture2D(inputImageTexture, textureCoordinate + (3.0 * samplingOffset)) * 0.09; - fragmentColor += texture2D(inputImageTexture, textureCoordinate + (4.0 * samplingOffset)) * 0.05; - fragmentColor += texture2D(inputImageTexture, textureCoordinate - samplingOffset) * 0.15; - fragmentColor += texture2D(inputImageTexture, textureCoordinate - (2.0 * samplingOffset)) * 0.12; - fragmentColor += texture2D(inputImageTexture, textureCoordinate - (3.0 * samplingOffset)) * 0.09; - fragmentColor += texture2D(inputImageTexture, textureCoordinate - (4.0 * samplingOffset)) * 0.05; - - gl_FragColor = fragmentColor; - } -); -#endif - -@interface GPUImageZoomBlurFilter() -{ - GLint blurSizeUniform, blurCenterUniform; -} -@end - -@implementation GPUImageZoomBlurFilter - -@synthesize blurSize = _blurSize; -@synthesize blurCenter = _blurCenter; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageZoomBlurFragmentShaderString])) - { - return nil; - } - - blurSizeUniform = [filterProgram uniformIndex:@"blurSize"]; - blurCenterUniform = [filterProgram uniformIndex:@"blurCenter"]; - - self.blurSize = 1.0; - self.blurCenter = CGPointMake(0.5, 0.5); - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; -{ - [super setInputRotation:newInputRotation atIndex:textureIndex]; - [self setBlurCenter:self.blurCenter]; -} - -- (void)setBlurSize:(CGFloat)newValue; -{ - _blurSize = newValue; - - [self setFloat:_blurSize forUniform:blurSizeUniform program:filterProgram]; -} - -- (void)setBlurCenter:(CGPoint)newValue; -{ - _blurCenter = newValue; - - CGPoint rotatedPoint = [self rotatedPoint:_blurCenter forRotation:inputRotation]; - [self setPoint:rotatedPoint forUniform:blurCenterUniform program:filterProgram]; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageiOSBlurFilter.h b/Example/Pods/GPUImage/framework/Source/GPUImageiOSBlurFilter.h deleted file mode 100644 index 261d0d7..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageiOSBlurFilter.h +++ /dev/null @@ -1,31 +0,0 @@ -#import "GPUImageFilterGroup.h" - -@class GPUImageSaturationFilter; -@class GPUImageGaussianBlurFilter; -@class GPUImageLuminanceRangeFilter; - -@interface GPUImageiOSBlurFilter : GPUImageFilterGroup -{ - GPUImageSaturationFilter *saturationFilter; - GPUImageGaussianBlurFilter *blurFilter; - GPUImageLuminanceRangeFilter *luminanceRangeFilter; -} - -/** A radius in pixels to use for the blur, with a default of 12.0. This adjusts the sigma variable in the Gaussian distribution function. - */ -@property (readwrite, nonatomic) CGFloat blurRadiusInPixels; - -/** Saturation ranges from 0.0 (fully desaturated) to 2.0 (max saturation), with 0.8 as the normal level - */ -@property (readwrite, nonatomic) CGFloat saturation; - -/** The degree to which to downsample, then upsample the incoming image to minimize computations within the Gaussian blur, default of 4.0 - */ -@property (readwrite, nonatomic) CGFloat downsampling; - - -/** The degree to reduce the luminance range, from 0.0 to 1.0. Default is 0.6. - */ -@property (readwrite, nonatomic) CGFloat rangeReductionFactor; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/GPUImageiOSBlurFilter.m b/Example/Pods/GPUImage/framework/Source/GPUImageiOSBlurFilter.m deleted file mode 100644 index 1853321..0000000 --- a/Example/Pods/GPUImage/framework/Source/GPUImageiOSBlurFilter.m +++ /dev/null @@ -1,114 +0,0 @@ -#import "GPUImageiOSBlurFilter.h" -#import "GPUImageSaturationFilter.h" -#import "GPUImageGaussianBlurFilter.h" -#import "GPUImageLuminanceRangeFilter.h" - -@implementation GPUImageiOSBlurFilter - -@synthesize blurRadiusInPixels; -@synthesize saturation; -@synthesize downsampling = _downsampling; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super init])) - { - return nil; - } - - // First pass: downsample and desaturate - saturationFilter = [[GPUImageSaturationFilter alloc] init]; - [self addFilter:saturationFilter]; - - // Second pass: apply a strong Gaussian blur - blurFilter = [[GPUImageGaussianBlurFilter alloc] init]; - [self addFilter:blurFilter]; - - // Third pass: upsample and adjust luminance range - luminanceRangeFilter = [[GPUImageLuminanceRangeFilter alloc] init]; - [self addFilter:luminanceRangeFilter]; - - [saturationFilter addTarget:blurFilter]; - [blurFilter addTarget:luminanceRangeFilter]; - - self.initialFilters = [NSArray arrayWithObject:saturationFilter]; - self.terminalFilter = luminanceRangeFilter; - - self.blurRadiusInPixels = 12.0; - self.saturation = 0.8; - self.downsampling = 4.0; - self.rangeReductionFactor = 0.6; - - return self; -} - -- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex; -{ - if (_downsampling > 1.0) - { - CGSize rotatedSize = [saturationFilter rotatedSize:newSize forIndex:textureIndex]; - - [saturationFilter forceProcessingAtSize:CGSizeMake(rotatedSize.width / _downsampling, rotatedSize.height / _downsampling)]; - [luminanceRangeFilter forceProcessingAtSize:rotatedSize]; - } - - [super setInputSize:newSize atIndex:textureIndex]; -} - -#pragma mark - -#pragma mark Accessors - -// From Apple's UIImage+ImageEffects category: - -// A description of how to compute the box kernel width from the Gaussian -// radius (aka standard deviation) appears in the SVG spec: -// http://www.w3.org/TR/SVG/filters.html#feGaussianBlurElement -// -// For larger values of 's' (s >= 2.0), an approximation can be used: Three -// successive box-blurs build a piece-wise quadratic convolution kernel, which -// approximates the Gaussian kernel to within roughly 3%. -// -// let d = floor(s * 3*sqrt(2*pi)/4 + 0.5) -// -// ... if d is odd, use three box-blurs of size 'd', centered on the output pixel. - - -- (void)setBlurRadiusInPixels:(CGFloat)newValue; -{ - blurFilter.blurRadiusInPixels = newValue; -} - -- (CGFloat)blurRadiusInPixels; -{ - return blurFilter.blurRadiusInPixels; -} - -- (void)setSaturation:(CGFloat)newValue; -{ - saturationFilter.saturation = newValue; -} - -- (CGFloat)saturation; -{ - return saturationFilter.saturation; -} - -- (void)setDownsampling:(CGFloat)newValue; -{ - _downsampling = newValue; -} - -- (void)setRangeReductionFactor:(CGFloat)rangeReductionFactor -{ - luminanceRangeFilter.rangeReductionFactor = rangeReductionFactor; -} - -- (CGFloat)rangeReductionFactor -{ - return luminanceRangeFilter.rangeReductionFactor; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/iOS/Framework/GPUImageFramework.h b/Example/Pods/GPUImage/framework/Source/iOS/Framework/GPUImageFramework.h deleted file mode 100644 index ea12ac0..0000000 --- a/Example/Pods/GPUImage/framework/Source/iOS/Framework/GPUImageFramework.h +++ /dev/null @@ -1,172 +0,0 @@ -#import - -//! Project version number for GPUImageFramework. -FOUNDATION_EXPORT double GPUImageFrameworkVersionNumber; - -//! Project version string for GPUImageFramework. -FOUNDATION_EXPORT const unsigned char GPUImageFrameworkVersionString[]; - -#import - -// Base classes -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import - -// Filters -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import diff --git a/Example/Pods/GPUImage/framework/Source/iOS/GPUImageContext.h b/Example/Pods/GPUImage/framework/Source/iOS/GPUImageContext.h deleted file mode 100755 index 7e4fa03..0000000 --- a/Example/Pods/GPUImage/framework/Source/iOS/GPUImageContext.h +++ /dev/null @@ -1,55 +0,0 @@ -#import "GLProgram.h" -#import "GPUImageFramebuffer.h" -#import "GPUImageFramebufferCache.h" - -#define GPUImageRotationSwapsWidthAndHeight(rotation) ((rotation) == kGPUImageRotateLeft || (rotation) == kGPUImageRotateRight || (rotation) == kGPUImageRotateRightFlipVertical || (rotation) == kGPUImageRotateRightFlipHorizontal) - -typedef enum { kGPUImageNoRotation, kGPUImageRotateLeft, kGPUImageRotateRight, kGPUImageFlipVertical, kGPUImageFlipHorizonal, kGPUImageRotateRightFlipVertical, kGPUImageRotateRightFlipHorizontal, kGPUImageRotate180 } GPUImageRotationMode; - -@interface GPUImageContext : NSObject - -@property(readonly, nonatomic) dispatch_queue_t contextQueue; -@property(readwrite, retain, nonatomic) GLProgram *currentShaderProgram; -@property(readonly, retain, nonatomic) EAGLContext *context; -@property(readonly) CVOpenGLESTextureCacheRef coreVideoTextureCache; -@property(readonly) GPUImageFramebufferCache *framebufferCache; - -+ (void *)contextKey; -+ (GPUImageContext *)sharedImageProcessingContext; -+ (dispatch_queue_t)sharedContextQueue; -+ (GPUImageFramebufferCache *)sharedFramebufferCache; -+ (void)useImageProcessingContext; -- (void)useAsCurrentContext; -+ (void)setActiveShaderProgram:(GLProgram *)shaderProgram; -- (void)setContextShaderProgram:(GLProgram *)shaderProgram; -+ (GLint)maximumTextureSizeForThisDevice; -+ (GLint)maximumTextureUnitsForThisDevice; -+ (GLint)maximumVaryingVectorsForThisDevice; -+ (BOOL)deviceSupportsOpenGLESExtension:(NSString *)extension; -+ (BOOL)deviceSupportsRedTextures; -+ (BOOL)deviceSupportsFramebufferReads; -+ (CGSize)sizeThatFitsWithinATextureForSize:(CGSize)inputSize; - -- (void)presentBufferForDisplay; -- (GLProgram *)programForVertexShaderString:(NSString *)vertexShaderString fragmentShaderString:(NSString *)fragmentShaderString; - -- (void)useSharegroup:(EAGLSharegroup *)sharegroup; - -// Manage fast texture upload -+ (BOOL)supportsFastTextureUpload; - -@end - -@protocol GPUImageInput -- (void)newFrameReadyAtTime:(CMTime)frameTime atIndex:(NSInteger)textureIndex; -- (void)setInputFramebuffer:(GPUImageFramebuffer *)newInputFramebuffer atIndex:(NSInteger)textureIndex; -- (NSInteger)nextAvailableTextureIndex; -- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex; -- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; -- (CGSize)maximumOutputSize; -- (void)endProcessing; -- (BOOL)shouldIgnoreUpdatesToThisTarget; -- (BOOL)enabled; -- (BOOL)wantsMonochromeInput; -- (void)setCurrentlyReceivingMonochromeInput:(BOOL)newValue; -@end diff --git a/Example/Pods/GPUImage/framework/Source/iOS/GPUImageContext.m b/Example/Pods/GPUImage/framework/Source/iOS/GPUImageContext.m deleted file mode 100755 index 19546ba..0000000 --- a/Example/Pods/GPUImage/framework/Source/iOS/GPUImageContext.m +++ /dev/null @@ -1,318 +0,0 @@ -#import "GPUImageContext.h" -#import -#import - -#define MAXSHADERPROGRAMSALLOWEDINCACHE 40 - -@interface GPUImageContext() -{ - NSMutableDictionary *shaderProgramCache; - NSMutableArray *shaderProgramUsageHistory; - EAGLSharegroup *_sharegroup; -} - -@end - -@implementation GPUImageContext - -@synthesize context = _context; -@synthesize currentShaderProgram = _currentShaderProgram; -@synthesize contextQueue = _contextQueue; -@synthesize coreVideoTextureCache = _coreVideoTextureCache; -@synthesize framebufferCache = _framebufferCache; - -static void *openGLESContextQueueKey; - -- (id)init; -{ - if (!(self = [super init])) - { - return nil; - } - - openGLESContextQueueKey = &openGLESContextQueueKey; - _contextQueue = dispatch_queue_create("com.sunsetlakesoftware.GPUImage.openGLESContextQueue", NULL); - -#if OS_OBJECT_USE_OBJC - dispatch_queue_set_specific(_contextQueue, openGLESContextQueueKey, (__bridge void *)self, NULL); -#endif - shaderProgramCache = [[NSMutableDictionary alloc] init]; - shaderProgramUsageHistory = [[NSMutableArray alloc] init]; - - return self; -} - -+ (void *)contextKey { - return openGLESContextQueueKey; -} - -// Based on Colin Wheeler's example here: http://cocoasamurai.blogspot.com/2011/04/singletons-your-doing-them-wrong.html -+ (GPUImageContext *)sharedImageProcessingContext; -{ - static dispatch_once_t pred; - static GPUImageContext *sharedImageProcessingContext = nil; - - dispatch_once(&pred, ^{ - sharedImageProcessingContext = [[[self class] alloc] init]; - }); - return sharedImageProcessingContext; -} - -+ (dispatch_queue_t)sharedContextQueue; -{ - return [[self sharedImageProcessingContext] contextQueue]; -} - -+ (GPUImageFramebufferCache *)sharedFramebufferCache; -{ - return [[self sharedImageProcessingContext] framebufferCache]; -} - -+ (void)useImageProcessingContext; -{ - [[GPUImageContext sharedImageProcessingContext] useAsCurrentContext]; -} - -- (void)useAsCurrentContext; -{ - EAGLContext *imageProcessingContext = [self context]; - if ([EAGLContext currentContext] != imageProcessingContext) - { - [EAGLContext setCurrentContext:imageProcessingContext]; - } -} - -+ (void)setActiveShaderProgram:(GLProgram *)shaderProgram; -{ - GPUImageContext *sharedContext = [GPUImageContext sharedImageProcessingContext]; - [sharedContext setContextShaderProgram:shaderProgram]; -} - -- (void)setContextShaderProgram:(GLProgram *)shaderProgram; -{ - EAGLContext *imageProcessingContext = [self context]; - if ([EAGLContext currentContext] != imageProcessingContext) - { - [EAGLContext setCurrentContext:imageProcessingContext]; - } - - if (self.currentShaderProgram != shaderProgram) - { - self.currentShaderProgram = shaderProgram; - [shaderProgram use]; - } -} - -+ (GLint)maximumTextureSizeForThisDevice; -{ - static dispatch_once_t pred; - static GLint maxTextureSize = 0; - - dispatch_once(&pred, ^{ - [self useImageProcessingContext]; - glGetIntegerv(GL_MAX_TEXTURE_SIZE, &maxTextureSize); - }); - - return maxTextureSize; -} - -+ (GLint)maximumTextureUnitsForThisDevice; -{ - static dispatch_once_t pred; - static GLint maxTextureUnits = 0; - - dispatch_once(&pred, ^{ - [self useImageProcessingContext]; - glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS, &maxTextureUnits); - }); - - return maxTextureUnits; -} - -+ (GLint)maximumVaryingVectorsForThisDevice; -{ - static dispatch_once_t pred; - static GLint maxVaryingVectors = 0; - - dispatch_once(&pred, ^{ - [self useImageProcessingContext]; - glGetIntegerv(GL_MAX_VARYING_VECTORS, &maxVaryingVectors); - }); - - return maxVaryingVectors; -} - -+ (BOOL)deviceSupportsOpenGLESExtension:(NSString *)extension; -{ - static dispatch_once_t pred; - static NSArray *extensionNames = nil; - - // Cache extensions for later quick reference, since this won't change for a given device - dispatch_once(&pred, ^{ - [GPUImageContext useImageProcessingContext]; - NSString *extensionsString = [NSString stringWithCString:(const char *)glGetString(GL_EXTENSIONS) encoding:NSASCIIStringEncoding]; - extensionNames = [extensionsString componentsSeparatedByString:@" "]; - }); - - return [extensionNames containsObject:extension]; -} - - -// http://www.khronos.org/registry/gles/extensions/EXT/EXT_texture_rg.txt - -+ (BOOL)deviceSupportsRedTextures; -{ - static dispatch_once_t pred; - static BOOL supportsRedTextures = NO; - - dispatch_once(&pred, ^{ - supportsRedTextures = [GPUImageContext deviceSupportsOpenGLESExtension:@"GL_EXT_texture_rg"]; - }); - - return supportsRedTextures; -} - -+ (BOOL)deviceSupportsFramebufferReads; -{ - static dispatch_once_t pred; - static BOOL supportsFramebufferReads = NO; - - dispatch_once(&pred, ^{ - supportsFramebufferReads = [GPUImageContext deviceSupportsOpenGLESExtension:@"GL_EXT_shader_framebuffer_fetch"]; - }); - - return supportsFramebufferReads; -} - -+ (CGSize)sizeThatFitsWithinATextureForSize:(CGSize)inputSize; -{ - GLint maxTextureSize = [self maximumTextureSizeForThisDevice]; - if ( (inputSize.width < maxTextureSize) && (inputSize.height < maxTextureSize) ) - { - return inputSize; - } - - CGSize adjustedSize; - if (inputSize.width > inputSize.height) - { - adjustedSize.width = (CGFloat)maxTextureSize; - adjustedSize.height = ((CGFloat)maxTextureSize / inputSize.width) * inputSize.height; - } - else - { - adjustedSize.height = (CGFloat)maxTextureSize; - adjustedSize.width = ((CGFloat)maxTextureSize / inputSize.height) * inputSize.width; - } - - return adjustedSize; -} - -- (void)presentBufferForDisplay; -{ - [self.context presentRenderbuffer:GL_RENDERBUFFER]; -} - -- (GLProgram *)programForVertexShaderString:(NSString *)vertexShaderString fragmentShaderString:(NSString *)fragmentShaderString; -{ - NSString *lookupKeyForShaderProgram = [NSString stringWithFormat:@"V: %@ - F: %@", vertexShaderString, fragmentShaderString]; - GLProgram *programFromCache = [shaderProgramCache objectForKey:lookupKeyForShaderProgram]; - - if (programFromCache == nil) - { - programFromCache = [[GLProgram alloc] initWithVertexShaderString:vertexShaderString fragmentShaderString:fragmentShaderString]; - [shaderProgramCache setObject:programFromCache forKey:lookupKeyForShaderProgram]; -// [shaderProgramUsageHistory addObject:lookupKeyForShaderProgram]; -// if ([shaderProgramUsageHistory count] >= MAXSHADERPROGRAMSALLOWEDINCACHE) -// { -// for (NSUInteger currentShaderProgramRemovedFromCache = 0; currentShaderProgramRemovedFromCache < 10; currentShaderProgramRemovedFromCache++) -// { -// NSString *shaderProgramToRemoveFromCache = [shaderProgramUsageHistory objectAtIndex:0]; -// [shaderProgramUsageHistory removeObjectAtIndex:0]; -// [shaderProgramCache removeObjectForKey:shaderProgramToRemoveFromCache]; -// } -// } - } - - return programFromCache; -} - -- (void)useSharegroup:(EAGLSharegroup *)sharegroup; -{ - NSAssert(_context == nil, @"Unable to use a share group when the context has already been created. Call this method before you use the context for the first time."); - - _sharegroup = sharegroup; -} - -- (EAGLContext *)createContext; -{ - EAGLContext *context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2 sharegroup:_sharegroup]; - NSAssert(context != nil, @"Unable to create an OpenGL ES 2.0 context. The GPUImage framework requires OpenGL ES 2.0 support to work."); - return context; -} - - -#pragma mark - -#pragma mark Manage fast texture upload - -+ (BOOL)supportsFastTextureUpload; -{ -#if TARGET_IPHONE_SIMULATOR - return NO; -#else - -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wtautological-pointer-compare" - return (CVOpenGLESTextureCacheCreate != NULL); -#pragma clang diagnostic pop - -#endif -} - -#pragma mark - -#pragma mark Accessors - -- (EAGLContext *)context; -{ - if (_context == nil) - { - _context = [self createContext]; - [EAGLContext setCurrentContext:_context]; - - // Set up a few global settings for the image processing pipeline - glDisable(GL_DEPTH_TEST); - } - - return _context; -} - -- (CVOpenGLESTextureCacheRef)coreVideoTextureCache; -{ - if (_coreVideoTextureCache == NULL) - { -#if defined(__IPHONE_6_0) - CVReturn err = CVOpenGLESTextureCacheCreate(kCFAllocatorDefault, NULL, [self context], NULL, &_coreVideoTextureCache); -#else - CVReturn err = CVOpenGLESTextureCacheCreate(kCFAllocatorDefault, NULL, (__bridge void *)[self context], NULL, &_coreVideoTextureCache); -#endif - - if (err) - { - NSAssert(NO, @"Error at CVOpenGLESTextureCacheCreate %d", err); - } - - } - - return _coreVideoTextureCache; -} - -- (GPUImageFramebufferCache *)framebufferCache; -{ - if (_framebufferCache == nil) - { - _framebufferCache = [[GPUImageFramebufferCache alloc] init]; - } - - return _framebufferCache; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/iOS/GPUImageMovieWriter.h b/Example/Pods/GPUImage/framework/Source/iOS/GPUImageMovieWriter.h deleted file mode 100755 index f0b2c6a..0000000 --- a/Example/Pods/GPUImage/framework/Source/iOS/GPUImageMovieWriter.h +++ /dev/null @@ -1,67 +0,0 @@ -#import -#import -#import "GPUImageContext.h" - -extern NSString *const kGPUImageColorSwizzlingFragmentShaderString; - -@protocol GPUImageMovieWriterDelegate - -@optional -- (void)movieRecordingCompleted; -- (void)movieRecordingFailedWithError:(NSError*)error; - -@end - -@interface GPUImageMovieWriter : NSObject -{ - BOOL alreadyFinishedRecording; - - NSURL *movieURL; - NSString *fileType; - AVAssetWriter *assetWriter; - AVAssetWriterInput *assetWriterAudioInput; - AVAssetWriterInput *assetWriterVideoInput; - AVAssetWriterInputPixelBufferAdaptor *assetWriterPixelBufferInput; - - GPUImageContext *_movieWriterContext; - CVPixelBufferRef renderTarget; - CVOpenGLESTextureRef renderTexture; - - CGSize videoSize; - GPUImageRotationMode inputRotation; -} - -@property(readwrite, nonatomic) BOOL hasAudioTrack; -@property(readwrite, nonatomic) BOOL shouldPassthroughAudio; -@property(readwrite, nonatomic) BOOL shouldInvalidateAudioSampleWhenDone; -@property(nonatomic, copy) void(^completionBlock)(void); -@property(nonatomic, copy) void(^failureBlock)(NSError*); -@property(nonatomic, assign) id delegate; -@property(readwrite, nonatomic) BOOL encodingLiveVideo; -@property(nonatomic, copy) BOOL(^videoInputReadyCallback)(void); -@property(nonatomic, copy) BOOL(^audioInputReadyCallback)(void); -@property(nonatomic, copy) void(^audioProcessingCallback)(SInt16 **samplesRef, CMItemCount numSamplesInBuffer); -@property(nonatomic) BOOL enabled; -@property(nonatomic, readonly) AVAssetWriter *assetWriter; -@property(nonatomic, readonly) CMTime duration; -@property(nonatomic, assign) CGAffineTransform transform; -@property(nonatomic, copy) NSArray *metaData; -@property(nonatomic, assign, getter = isPaused) BOOL paused; -@property(nonatomic, retain) GPUImageContext *movieWriterContext; - -// Initialization and teardown -- (id)initWithMovieURL:(NSURL *)newMovieURL size:(CGSize)newSize; -- (id)initWithMovieURL:(NSURL *)newMovieURL size:(CGSize)newSize fileType:(NSString *)newFileType outputSettings:(NSDictionary *)outputSettings; - -- (void)setHasAudioTrack:(BOOL)hasAudioTrack audioSettings:(NSDictionary *)audioOutputSettings; - -// Movie recording -- (void)startRecording; -- (void)startRecordingInOrientation:(CGAffineTransform)orientationTransform; -- (void)finishRecording; -- (void)finishRecordingWithCompletionHandler:(void (^)(void))handler; -- (void)cancelRecording; -- (void)processAudioBuffer:(CMSampleBufferRef)audioBuffer; -- (void)enableSynchronizationCallbacks; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/iOS/GPUImageMovieWriter.m b/Example/Pods/GPUImage/framework/Source/iOS/GPUImageMovieWriter.m deleted file mode 100755 index 8ced0df..0000000 --- a/Example/Pods/GPUImage/framework/Source/iOS/GPUImageMovieWriter.m +++ /dev/null @@ -1,934 +0,0 @@ -#import "GPUImageMovieWriter.h" - -#import "GPUImageContext.h" -#import "GLProgram.h" -#import "GPUImageFilter.h" - -NSString *const kGPUImageColorSwizzlingFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - gl_FragColor = texture2D(inputImageTexture, textureCoordinate).bgra; - } -); - - -@interface GPUImageMovieWriter () -{ - GLuint movieFramebuffer, movieRenderbuffer; - - GLProgram *colorSwizzlingProgram; - GLint colorSwizzlingPositionAttribute, colorSwizzlingTextureCoordinateAttribute; - GLint colorSwizzlingInputTextureUniform; - - GPUImageFramebuffer *firstInputFramebuffer; - - CMTime startTime, previousFrameTime, previousAudioTime; - - dispatch_queue_t audioQueue, videoQueue; - BOOL audioEncodingIsFinished, videoEncodingIsFinished; - - BOOL isRecording; -} - -// Movie recording -- (void)initializeMovieWithOutputSettings:(NSMutableDictionary *)outputSettings; - -// Frame rendering -- (void)createDataFBO; -- (void)destroyDataFBO; -- (void)setFilterFBO; - -- (void)renderAtInternalSizeUsingFramebuffer:(GPUImageFramebuffer *)inputFramebufferToUse; - -@end - -@implementation GPUImageMovieWriter - -@synthesize hasAudioTrack = _hasAudioTrack; -@synthesize encodingLiveVideo = _encodingLiveVideo; -@synthesize shouldPassthroughAudio = _shouldPassthroughAudio; -@synthesize completionBlock; -@synthesize failureBlock; -@synthesize videoInputReadyCallback; -@synthesize audioInputReadyCallback; -@synthesize enabled; -@synthesize shouldInvalidateAudioSampleWhenDone = _shouldInvalidateAudioSampleWhenDone; -@synthesize paused = _paused; -@synthesize movieWriterContext = _movieWriterContext; - -@synthesize delegate = _delegate; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)initWithMovieURL:(NSURL *)newMovieURL size:(CGSize)newSize; -{ - return [self initWithMovieURL:newMovieURL size:newSize fileType:AVFileTypeQuickTimeMovie outputSettings:nil]; -} - -- (id)initWithMovieURL:(NSURL *)newMovieURL size:(CGSize)newSize fileType:(NSString *)newFileType outputSettings:(NSMutableDictionary *)outputSettings; -{ - if (!(self = [super init])) - { - return nil; - } - - _shouldInvalidateAudioSampleWhenDone = NO; - - self.enabled = YES; - alreadyFinishedRecording = NO; - videoEncodingIsFinished = NO; - audioEncodingIsFinished = NO; - - videoSize = newSize; - movieURL = newMovieURL; - fileType = newFileType; - startTime = kCMTimeInvalid; - _encodingLiveVideo = [[outputSettings objectForKey:@"EncodingLiveVideo"] isKindOfClass:[NSNumber class]] ? [[outputSettings objectForKey:@"EncodingLiveVideo"] boolValue] : YES; - previousFrameTime = kCMTimeNegativeInfinity; - previousAudioTime = kCMTimeNegativeInfinity; - inputRotation = kGPUImageNoRotation; - - _movieWriterContext = [[GPUImageContext alloc] init]; - [_movieWriterContext useSharegroup:[[[GPUImageContext sharedImageProcessingContext] context] sharegroup]]; - - runSynchronouslyOnContextQueue(_movieWriterContext, ^{ - [_movieWriterContext useAsCurrentContext]; - - if ([GPUImageContext supportsFastTextureUpload]) - { - colorSwizzlingProgram = [_movieWriterContext programForVertexShaderString:kGPUImageVertexShaderString fragmentShaderString:kGPUImagePassthroughFragmentShaderString]; - } - else - { - colorSwizzlingProgram = [_movieWriterContext programForVertexShaderString:kGPUImageVertexShaderString fragmentShaderString:kGPUImageColorSwizzlingFragmentShaderString]; - } - - if (!colorSwizzlingProgram.initialized) - { - [colorSwizzlingProgram addAttribute:@"position"]; - [colorSwizzlingProgram addAttribute:@"inputTextureCoordinate"]; - - if (![colorSwizzlingProgram link]) - { - NSString *progLog = [colorSwizzlingProgram programLog]; - NSLog(@"Program link log: %@", progLog); - NSString *fragLog = [colorSwizzlingProgram fragmentShaderLog]; - NSLog(@"Fragment shader compile log: %@", fragLog); - NSString *vertLog = [colorSwizzlingProgram vertexShaderLog]; - NSLog(@"Vertex shader compile log: %@", vertLog); - colorSwizzlingProgram = nil; - NSAssert(NO, @"Filter shader link failed"); - } - } - - colorSwizzlingPositionAttribute = [colorSwizzlingProgram attributeIndex:@"position"]; - colorSwizzlingTextureCoordinateAttribute = [colorSwizzlingProgram attributeIndex:@"inputTextureCoordinate"]; - colorSwizzlingInputTextureUniform = [colorSwizzlingProgram uniformIndex:@"inputImageTexture"]; - - [_movieWriterContext setContextShaderProgram:colorSwizzlingProgram]; - - glEnableVertexAttribArray(colorSwizzlingPositionAttribute); - glEnableVertexAttribArray(colorSwizzlingTextureCoordinateAttribute); - }); - - [self initializeMovieWithOutputSettings:outputSettings]; - - return self; -} - -- (void)dealloc; -{ - [self destroyDataFBO]; - -#if !OS_OBJECT_USE_OBJC - if( audioQueue != NULL ) - { - dispatch_release(audioQueue); - } - if( videoQueue != NULL ) - { - dispatch_release(videoQueue); - } -#endif -} - -#pragma mark - -#pragma mark Movie recording - -- (void)initializeMovieWithOutputSettings:(NSDictionary *)outputSettings; -{ - isRecording = NO; - - self.enabled = YES; - NSError *error = nil; - assetWriter = [[AVAssetWriter alloc] initWithURL:movieURL fileType:fileType error:&error]; - if (error != nil) - { - NSLog(@"Error: %@", error); - if (failureBlock) - { - failureBlock(error); - } - else - { - if(self.delegate && [self.delegate respondsToSelector:@selector(movieRecordingFailedWithError:)]) - { - [self.delegate movieRecordingFailedWithError:error]; - } - } - } - - // Set this to make sure that a functional movie is produced, even if the recording is cut off mid-stream. Only the last second should be lost in that case. - assetWriter.movieFragmentInterval = CMTimeMakeWithSeconds(1.0, 1000); - - // use default output settings if none specified - if (outputSettings == nil) - { - NSMutableDictionary *settings = [[NSMutableDictionary alloc] init]; - [settings setObject:AVVideoCodecH264 forKey:AVVideoCodecKey]; - [settings setObject:[NSNumber numberWithInt:videoSize.width] forKey:AVVideoWidthKey]; - [settings setObject:[NSNumber numberWithInt:videoSize.height] forKey:AVVideoHeightKey]; - outputSettings = settings; - } - // custom output settings specified - else - { - NSString *videoCodec = [outputSettings objectForKey:AVVideoCodecKey]; - NSNumber *width = [outputSettings objectForKey:AVVideoWidthKey]; - NSNumber *height = [outputSettings objectForKey:AVVideoHeightKey]; - - NSAssert(videoCodec && width && height, @"OutputSettings is missing required parameters."); - - if( [outputSettings objectForKey:@"EncodingLiveVideo"] ) { - NSMutableDictionary *tmp = [outputSettings mutableCopy]; - [tmp removeObjectForKey:@"EncodingLiveVideo"]; - outputSettings = tmp; - } - } - - /* - NSDictionary *videoCleanApertureSettings = [NSDictionary dictionaryWithObjectsAndKeys: - [NSNumber numberWithInt:videoSize.width], AVVideoCleanApertureWidthKey, - [NSNumber numberWithInt:videoSize.height], AVVideoCleanApertureHeightKey, - [NSNumber numberWithInt:0], AVVideoCleanApertureHorizontalOffsetKey, - [NSNumber numberWithInt:0], AVVideoCleanApertureVerticalOffsetKey, - nil]; - - NSDictionary *videoAspectRatioSettings = [NSDictionary dictionaryWithObjectsAndKeys: - [NSNumber numberWithInt:3], AVVideoPixelAspectRatioHorizontalSpacingKey, - [NSNumber numberWithInt:3], AVVideoPixelAspectRatioVerticalSpacingKey, - nil]; - - NSMutableDictionary * compressionProperties = [[NSMutableDictionary alloc] init]; - [compressionProperties setObject:videoCleanApertureSettings forKey:AVVideoCleanApertureKey]; - [compressionProperties setObject:videoAspectRatioSettings forKey:AVVideoPixelAspectRatioKey]; - [compressionProperties setObject:[NSNumber numberWithInt: 2000000] forKey:AVVideoAverageBitRateKey]; - [compressionProperties setObject:[NSNumber numberWithInt: 16] forKey:AVVideoMaxKeyFrameIntervalKey]; - [compressionProperties setObject:AVVideoProfileLevelH264Main31 forKey:AVVideoProfileLevelKey]; - - [outputSettings setObject:compressionProperties forKey:AVVideoCompressionPropertiesKey]; - */ - - assetWriterVideoInput = [AVAssetWriterInput assetWriterInputWithMediaType:AVMediaTypeVideo outputSettings:outputSettings]; - assetWriterVideoInput.expectsMediaDataInRealTime = _encodingLiveVideo; - - // You need to use BGRA for the video in order to get realtime encoding. I use a color-swizzling shader to line up glReadPixels' normal RGBA output with the movie input's BGRA. - NSDictionary *sourcePixelBufferAttributesDictionary = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithInt:kCVPixelFormatType_32BGRA], kCVPixelBufferPixelFormatTypeKey, - [NSNumber numberWithInt:videoSize.width], kCVPixelBufferWidthKey, - [NSNumber numberWithInt:videoSize.height], kCVPixelBufferHeightKey, - nil]; -// NSDictionary *sourcePixelBufferAttributesDictionary = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithInt:kCVPixelFormatType_32ARGB], kCVPixelBufferPixelFormatTypeKey, -// nil]; - - assetWriterPixelBufferInput = [AVAssetWriterInputPixelBufferAdaptor assetWriterInputPixelBufferAdaptorWithAssetWriterInput:assetWriterVideoInput sourcePixelBufferAttributes:sourcePixelBufferAttributesDictionary]; - - [assetWriter addInput:assetWriterVideoInput]; -} - -- (void)setEncodingLiveVideo:(BOOL) value -{ - _encodingLiveVideo = value; - if (isRecording) { - NSAssert(NO, @"Can not change Encoding Live Video while recording"); - } - else - { - assetWriterVideoInput.expectsMediaDataInRealTime = _encodingLiveVideo; - assetWriterAudioInput.expectsMediaDataInRealTime = _encodingLiveVideo; - } -} - -- (void)startRecording; -{ - alreadyFinishedRecording = NO; - startTime = kCMTimeInvalid; - runSynchronouslyOnContextQueue(_movieWriterContext, ^{ - if (audioInputReadyCallback == NULL) - { - [assetWriter startWriting]; - } - }); - isRecording = YES; - // [assetWriter startSessionAtSourceTime:kCMTimeZero]; -} - -- (void)startRecordingInOrientation:(CGAffineTransform)orientationTransform; -{ - assetWriterVideoInput.transform = orientationTransform; - - [self startRecording]; -} - -- (void)cancelRecording; -{ - if (assetWriter.status == AVAssetWriterStatusCompleted) - { - return; - } - - isRecording = NO; - runSynchronouslyOnContextQueue(_movieWriterContext, ^{ - alreadyFinishedRecording = YES; - - if( assetWriter.status == AVAssetWriterStatusWriting && ! videoEncodingIsFinished ) - { - videoEncodingIsFinished = YES; - [assetWriterVideoInput markAsFinished]; - } - if( assetWriter.status == AVAssetWriterStatusWriting && ! audioEncodingIsFinished ) - { - audioEncodingIsFinished = YES; - [assetWriterAudioInput markAsFinished]; - } - [assetWriter cancelWriting]; - }); -} - -- (void)finishRecording; -{ - [self finishRecordingWithCompletionHandler:NULL]; -} - -- (void)finishRecordingWithCompletionHandler:(void (^)(void))handler; -{ - runSynchronouslyOnContextQueue(_movieWriterContext, ^{ - isRecording = NO; - - if (assetWriter.status == AVAssetWriterStatusCompleted || assetWriter.status == AVAssetWriterStatusCancelled || assetWriter.status == AVAssetWriterStatusUnknown) - { - if (handler) - runAsynchronouslyOnContextQueue(_movieWriterContext, handler); - return; - } - if( assetWriter.status == AVAssetWriterStatusWriting && ! videoEncodingIsFinished ) - { - videoEncodingIsFinished = YES; - [assetWriterVideoInput markAsFinished]; - } - if( assetWriter.status == AVAssetWriterStatusWriting && ! audioEncodingIsFinished ) - { - audioEncodingIsFinished = YES; - [assetWriterAudioInput markAsFinished]; - } -#if (!defined(__IPHONE_6_0) || (__IPHONE_OS_VERSION_MAX_ALLOWED < __IPHONE_6_0)) - // Not iOS 6 SDK - [assetWriter finishWriting]; - if (handler) - runAsynchronouslyOnContextQueue(_movieWriterContext,handler); -#else - // iOS 6 SDK - if ([assetWriter respondsToSelector:@selector(finishWritingWithCompletionHandler:)]) { - // Running iOS 6 - [assetWriter finishWritingWithCompletionHandler:(handler ?: ^{ })]; - } - else { - // Not running iOS 6 -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - [assetWriter finishWriting]; -#pragma clang diagnostic pop - if (handler) - runAsynchronouslyOnContextQueue(_movieWriterContext, handler); - } -#endif - }); -} - -- (void)processAudioBuffer:(CMSampleBufferRef)audioBuffer; -{ - if (!isRecording) - { - return; - } - -// if (_hasAudioTrack && CMTIME_IS_VALID(startTime)) - if (_hasAudioTrack) - { - CFRetain(audioBuffer); - - CMTime currentSampleTime = CMSampleBufferGetOutputPresentationTimeStamp(audioBuffer); - - if (CMTIME_IS_INVALID(startTime)) - { - runSynchronouslyOnContextQueue(_movieWriterContext, ^{ - if ((audioInputReadyCallback == NULL) && (assetWriter.status != AVAssetWriterStatusWriting)) - { - [assetWriter startWriting]; - } - [assetWriter startSessionAtSourceTime:currentSampleTime]; - startTime = currentSampleTime; - }); - } - - if (!assetWriterAudioInput.readyForMoreMediaData && _encodingLiveVideo) - { - NSLog(@"1: Had to drop an audio frame: %@", CFBridgingRelease(CMTimeCopyDescription(kCFAllocatorDefault, currentSampleTime))); - if (_shouldInvalidateAudioSampleWhenDone) - { - CMSampleBufferInvalidate(audioBuffer); - } - CFRelease(audioBuffer); - return; - } - - previousAudioTime = currentSampleTime; - - //if the consumer wants to do something with the audio samples before writing, let him. - if (self.audioProcessingCallback) { - //need to introspect into the opaque CMBlockBuffer structure to find its raw sample buffers. - CMBlockBufferRef buffer = CMSampleBufferGetDataBuffer(audioBuffer); - CMItemCount numSamplesInBuffer = CMSampleBufferGetNumSamples(audioBuffer); - AudioBufferList audioBufferList; - - CMSampleBufferGetAudioBufferListWithRetainedBlockBuffer(audioBuffer, - NULL, - &audioBufferList, - sizeof(audioBufferList), - NULL, - NULL, - kCMSampleBufferFlag_AudioBufferList_Assure16ByteAlignment, - &buffer - ); - //passing a live pointer to the audio buffers, try to process them in-place or we might have syncing issues. - for (int bufferCount=0; bufferCount < audioBufferList.mNumberBuffers; bufferCount++) { - SInt16 *samples = (SInt16 *)audioBufferList.mBuffers[bufferCount].mData; - self.audioProcessingCallback(&samples, numSamplesInBuffer); - } - } - -// NSLog(@"Recorded audio sample time: %lld, %d, %lld", currentSampleTime.value, currentSampleTime.timescale, currentSampleTime.epoch); - void(^write)() = ^() { - while( ! assetWriterAudioInput.readyForMoreMediaData && ! _encodingLiveVideo && ! audioEncodingIsFinished ) { - NSDate *maxDate = [NSDate dateWithTimeIntervalSinceNow:0.5]; - //NSLog(@"audio waiting..."); - [[NSRunLoop currentRunLoop] runUntilDate:maxDate]; - } - if (!assetWriterAudioInput.readyForMoreMediaData) - { - NSLog(@"2: Had to drop an audio frame %@", CFBridgingRelease(CMTimeCopyDescription(kCFAllocatorDefault, currentSampleTime))); - } - else if(assetWriter.status == AVAssetWriterStatusWriting) - { - if (![assetWriterAudioInput appendSampleBuffer:audioBuffer]) - NSLog(@"Problem appending audio buffer at time: %@", CFBridgingRelease(CMTimeCopyDescription(kCFAllocatorDefault, currentSampleTime))); - } - else - { - //NSLog(@"Wrote an audio frame %@", CFBridgingRelease(CMTimeCopyDescription(kCFAllocatorDefault, currentSampleTime))); - } - - if (_shouldInvalidateAudioSampleWhenDone) - { - CMSampleBufferInvalidate(audioBuffer); - } - CFRelease(audioBuffer); - }; -// runAsynchronouslyOnContextQueue(_movieWriterContext, write); - if( _encodingLiveVideo ) - - { - runAsynchronouslyOnContextQueue(_movieWriterContext, write); - } - else - { - write(); - } - } -} - -- (void)enableSynchronizationCallbacks; -{ - if (videoInputReadyCallback != NULL) - { - if( assetWriter.status != AVAssetWriterStatusWriting ) - { - [assetWriter startWriting]; - } - videoQueue = dispatch_queue_create("com.sunsetlakesoftware.GPUImage.videoReadingQueue", NULL); - [assetWriterVideoInput requestMediaDataWhenReadyOnQueue:videoQueue usingBlock:^{ - if( _paused ) - { - //NSLog(@"video requestMediaDataWhenReadyOnQueue paused"); - // if we don't sleep, we'll get called back almost immediately, chewing up CPU - usleep(10000); - return; - } - //NSLog(@"video requestMediaDataWhenReadyOnQueue begin"); - while( assetWriterVideoInput.readyForMoreMediaData && ! _paused ) - { - if( videoInputReadyCallback && ! videoInputReadyCallback() && ! videoEncodingIsFinished ) - { - runAsynchronouslyOnContextQueue(_movieWriterContext, ^{ - if( assetWriter.status == AVAssetWriterStatusWriting && ! videoEncodingIsFinished ) - { - videoEncodingIsFinished = YES; - [assetWriterVideoInput markAsFinished]; - } - }); - } - } - //NSLog(@"video requestMediaDataWhenReadyOnQueue end"); - }]; - } - - if (audioInputReadyCallback != NULL) - { - audioQueue = dispatch_queue_create("com.sunsetlakesoftware.GPUImage.audioReadingQueue", NULL); - [assetWriterAudioInput requestMediaDataWhenReadyOnQueue:audioQueue usingBlock:^{ - if( _paused ) - { - //NSLog(@"audio requestMediaDataWhenReadyOnQueue paused"); - // if we don't sleep, we'll get called back almost immediately, chewing up CPU - usleep(10000); - return; - } - //NSLog(@"audio requestMediaDataWhenReadyOnQueue begin"); - while( assetWriterAudioInput.readyForMoreMediaData && ! _paused ) - { - if( audioInputReadyCallback && ! audioInputReadyCallback() && ! audioEncodingIsFinished ) - { - runAsynchronouslyOnContextQueue(_movieWriterContext, ^{ - if( assetWriter.status == AVAssetWriterStatusWriting && ! audioEncodingIsFinished ) - { - audioEncodingIsFinished = YES; - [assetWriterAudioInput markAsFinished]; - } - }); - } - } - //NSLog(@"audio requestMediaDataWhenReadyOnQueue end"); - }]; - } - -} - -#pragma mark - -#pragma mark Frame rendering - -- (void)createDataFBO; -{ - glActiveTexture(GL_TEXTURE1); - glGenFramebuffers(1, &movieFramebuffer); - glBindFramebuffer(GL_FRAMEBUFFER, movieFramebuffer); - - if ([GPUImageContext supportsFastTextureUpload]) - { - // Code originally sourced from http://allmybrain.com/2011/12/08/rendering-to-a-texture-with-ios-5-texture-cache-api/ - - - CVPixelBufferPoolCreatePixelBuffer (NULL, [assetWriterPixelBufferInput pixelBufferPool], &renderTarget); - - /* AVAssetWriter will use BT.601 conversion matrix for RGB to YCbCr conversion - * regardless of the kCVImageBufferYCbCrMatrixKey value. - * Tagging the resulting video file as BT.601, is the best option right now. - * Creating a proper BT.709 video is not possible at the moment. - */ - CVBufferSetAttachment(renderTarget, kCVImageBufferColorPrimariesKey, kCVImageBufferColorPrimaries_ITU_R_709_2, kCVAttachmentMode_ShouldPropagate); - CVBufferSetAttachment(renderTarget, kCVImageBufferYCbCrMatrixKey, kCVImageBufferYCbCrMatrix_ITU_R_601_4, kCVAttachmentMode_ShouldPropagate); - CVBufferSetAttachment(renderTarget, kCVImageBufferTransferFunctionKey, kCVImageBufferTransferFunction_ITU_R_709_2, kCVAttachmentMode_ShouldPropagate); - - CVOpenGLESTextureCacheCreateTextureFromImage (kCFAllocatorDefault, [_movieWriterContext coreVideoTextureCache], renderTarget, - NULL, // texture attributes - GL_TEXTURE_2D, - GL_RGBA, // opengl format - (int)videoSize.width, - (int)videoSize.height, - GL_BGRA, // native iOS format - GL_UNSIGNED_BYTE, - 0, - &renderTexture); - - glBindTexture(CVOpenGLESTextureGetTarget(renderTexture), CVOpenGLESTextureGetName(renderTexture)); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - - glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, CVOpenGLESTextureGetName(renderTexture), 0); - } - else - { - glGenRenderbuffers(1, &movieRenderbuffer); - glBindRenderbuffer(GL_RENDERBUFFER, movieRenderbuffer); - glRenderbufferStorage(GL_RENDERBUFFER, GL_RGBA8_OES, (int)videoSize.width, (int)videoSize.height); - glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, movieRenderbuffer); - } - - - GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER); - - NSAssert(status == GL_FRAMEBUFFER_COMPLETE, @"Incomplete filter FBO: %d", status); -} - -- (void)destroyDataFBO; -{ - runSynchronouslyOnContextQueue(_movieWriterContext, ^{ - [_movieWriterContext useAsCurrentContext]; - - if (movieFramebuffer) - { - glDeleteFramebuffers(1, &movieFramebuffer); - movieFramebuffer = 0; - } - - if (movieRenderbuffer) - { - glDeleteRenderbuffers(1, &movieRenderbuffer); - movieRenderbuffer = 0; - } - - if ([GPUImageContext supportsFastTextureUpload]) - { - if (renderTexture) - { - CFRelease(renderTexture); - } - if (renderTarget) - { - CVPixelBufferRelease(renderTarget); - } - - } - }); -} - -- (void)setFilterFBO; -{ - if (!movieFramebuffer) - { - [self createDataFBO]; - } - - glBindFramebuffer(GL_FRAMEBUFFER, movieFramebuffer); - - glViewport(0, 0, (int)videoSize.width, (int)videoSize.height); -} - -- (void)renderAtInternalSizeUsingFramebuffer:(GPUImageFramebuffer *)inputFramebufferToUse; -{ - [_movieWriterContext useAsCurrentContext]; - [self setFilterFBO]; - - [_movieWriterContext setContextShaderProgram:colorSwizzlingProgram]; - - glClearColor(1.0f, 0.0f, 0.0f, 1.0f); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - // This needs to be flipped to write out to video correctly - static const GLfloat squareVertices[] = { - -1.0f, -1.0f, - 1.0f, -1.0f, - -1.0f, 1.0f, - 1.0f, 1.0f, - }; - - const GLfloat *textureCoordinates = [GPUImageFilter textureCoordinatesForRotation:inputRotation]; - - glActiveTexture(GL_TEXTURE4); - glBindTexture(GL_TEXTURE_2D, [inputFramebufferToUse texture]); - glUniform1i(colorSwizzlingInputTextureUniform, 4); - -// NSLog(@"Movie writer framebuffer: %@", inputFramebufferToUse); - - glVertexAttribPointer(colorSwizzlingPositionAttribute, 2, GL_FLOAT, 0, 0, squareVertices); - glVertexAttribPointer(colorSwizzlingTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, textureCoordinates); - - glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); - glFinish(); -} - -#pragma mark - -#pragma mark GPUImageInput protocol - -- (void)newFrameReadyAtTime:(CMTime)frameTime atIndex:(NSInteger)textureIndex; -{ - if (!isRecording) - { - [firstInputFramebuffer unlock]; - return; - } - - // Drop frames forced by images and other things with no time constants - // Also, if two consecutive times with the same value are added to the movie, it aborts recording, so I bail on that case - if ( (CMTIME_IS_INVALID(frameTime)) || (CMTIME_COMPARE_INLINE(frameTime, ==, previousFrameTime)) || (CMTIME_IS_INDEFINITE(frameTime)) ) - { - [firstInputFramebuffer unlock]; - return; - } - - if (CMTIME_IS_INVALID(startTime)) - { - runSynchronouslyOnContextQueue(_movieWriterContext, ^{ - if ((videoInputReadyCallback == NULL) && (assetWriter.status != AVAssetWriterStatusWriting)) - { - [assetWriter startWriting]; - } - - [assetWriter startSessionAtSourceTime:frameTime]; - startTime = frameTime; - }); - } - - GPUImageFramebuffer *inputFramebufferForBlock = firstInputFramebuffer; - glFinish(); - - runAsynchronouslyOnContextQueue(_movieWriterContext, ^{ - if (!assetWriterVideoInput.readyForMoreMediaData && _encodingLiveVideo) - { - [inputFramebufferForBlock unlock]; - NSLog(@"1: Had to drop a video frame: %@", CFBridgingRelease(CMTimeCopyDescription(kCFAllocatorDefault, frameTime))); - return; - } - - // Render the frame with swizzled colors, so that they can be uploaded quickly as BGRA frames - [_movieWriterContext useAsCurrentContext]; - [self renderAtInternalSizeUsingFramebuffer:inputFramebufferForBlock]; - - CVPixelBufferRef pixel_buffer = NULL; - - if ([GPUImageContext supportsFastTextureUpload]) - { - pixel_buffer = renderTarget; - CVPixelBufferLockBaseAddress(pixel_buffer, 0); - } - else - { - CVReturn status = CVPixelBufferPoolCreatePixelBuffer (NULL, [assetWriterPixelBufferInput pixelBufferPool], &pixel_buffer); - if ((pixel_buffer == NULL) || (status != kCVReturnSuccess)) - { - CVPixelBufferRelease(pixel_buffer); - return; - } - else - { - CVPixelBufferLockBaseAddress(pixel_buffer, 0); - - GLubyte *pixelBufferData = (GLubyte *)CVPixelBufferGetBaseAddress(pixel_buffer); - glReadPixels(0, 0, videoSize.width, videoSize.height, GL_RGBA, GL_UNSIGNED_BYTE, pixelBufferData); - } - } - - void(^write)() = ^() { - while( ! assetWriterVideoInput.readyForMoreMediaData && ! _encodingLiveVideo && ! videoEncodingIsFinished ) { - NSDate *maxDate = [NSDate dateWithTimeIntervalSinceNow:0.1]; - // NSLog(@"video waiting..."); - [[NSRunLoop currentRunLoop] runUntilDate:maxDate]; - } - if (!assetWriterVideoInput.readyForMoreMediaData) - { - NSLog(@"2: Had to drop a video frame: %@", CFBridgingRelease(CMTimeCopyDescription(kCFAllocatorDefault, frameTime))); - } - else if(self.assetWriter.status == AVAssetWriterStatusWriting) - { - if (![assetWriterPixelBufferInput appendPixelBuffer:pixel_buffer withPresentationTime:frameTime]) - NSLog(@"Problem appending pixel buffer at time: %@", CFBridgingRelease(CMTimeCopyDescription(kCFAllocatorDefault, frameTime))); - } - else - { - NSLog(@"Couldn't write a frame"); - //NSLog(@"Wrote a video frame: %@", CFBridgingRelease(CMTimeCopyDescription(kCFAllocatorDefault, frameTime))); - } - CVPixelBufferUnlockBaseAddress(pixel_buffer, 0); - - previousFrameTime = frameTime; - - if (![GPUImageContext supportsFastTextureUpload]) - { - CVPixelBufferRelease(pixel_buffer); - } - }; - - write(); - - [inputFramebufferForBlock unlock]; - }); -} - -- (NSInteger)nextAvailableTextureIndex; -{ - return 0; -} - -- (void)setInputFramebuffer:(GPUImageFramebuffer *)newInputFramebuffer atIndex:(NSInteger)textureIndex; -{ - [newInputFramebuffer lock]; -// runSynchronouslyOnContextQueue(_movieWriterContext, ^{ - firstInputFramebuffer = newInputFramebuffer; -// }); -} - -- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; -{ - inputRotation = newInputRotation; -} - -- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex; -{ -} - -- (CGSize)maximumOutputSize; -{ - return videoSize; -} - -- (void)endProcessing -{ - if (completionBlock) - { - if (!alreadyFinishedRecording) - { - alreadyFinishedRecording = YES; - completionBlock(); - } - } - else - { - if (_delegate && [_delegate respondsToSelector:@selector(movieRecordingCompleted)]) - { - [_delegate movieRecordingCompleted]; - } - } -} - -- (BOOL)shouldIgnoreUpdatesToThisTarget; -{ - return NO; -} - -- (BOOL)wantsMonochromeInput; -{ - return NO; -} - -- (void)setCurrentlyReceivingMonochromeInput:(BOOL)newValue; -{ - -} - -#pragma mark - -#pragma mark Accessors - -- (void)setHasAudioTrack:(BOOL)newValue -{ - [self setHasAudioTrack:newValue audioSettings:nil]; -} - -- (void)setHasAudioTrack:(BOOL)newValue audioSettings:(NSDictionary *)audioOutputSettings; -{ - _hasAudioTrack = newValue; - - if (_hasAudioTrack) - { - if (_shouldPassthroughAudio) - { - // Do not set any settings so audio will be the same as passthrough - audioOutputSettings = nil; - } - else if (audioOutputSettings == nil) - { - AVAudioSession *sharedAudioSession = [AVAudioSession sharedInstance]; - double preferredHardwareSampleRate; - - if ([sharedAudioSession respondsToSelector:@selector(sampleRate)]) - { - preferredHardwareSampleRate = [sharedAudioSession sampleRate]; - } - else - { -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - preferredHardwareSampleRate = [[AVAudioSession sharedInstance] currentHardwareSampleRate]; -#pragma clang diagnostic pop - } - - AudioChannelLayout acl; - bzero( &acl, sizeof(acl)); - acl.mChannelLayoutTag = kAudioChannelLayoutTag_Mono; - - audioOutputSettings = [NSDictionary dictionaryWithObjectsAndKeys: - [ NSNumber numberWithInt: kAudioFormatMPEG4AAC], AVFormatIDKey, - [ NSNumber numberWithInt: 1 ], AVNumberOfChannelsKey, - [ NSNumber numberWithFloat: preferredHardwareSampleRate ], AVSampleRateKey, - [ NSData dataWithBytes: &acl length: sizeof( acl ) ], AVChannelLayoutKey, - //[ NSNumber numberWithInt:AVAudioQualityLow], AVEncoderAudioQualityKey, - [ NSNumber numberWithInt: 64000 ], AVEncoderBitRateKey, - nil]; -/* - AudioChannelLayout acl; - bzero( &acl, sizeof(acl)); - acl.mChannelLayoutTag = kAudioChannelLayoutTag_Mono; - - audioOutputSettings = [NSDictionary dictionaryWithObjectsAndKeys: - [ NSNumber numberWithInt: kAudioFormatMPEG4AAC ], AVFormatIDKey, - [ NSNumber numberWithInt: 1 ], AVNumberOfChannelsKey, - [ NSNumber numberWithFloat: 44100.0 ], AVSampleRateKey, - [ NSNumber numberWithInt: 64000 ], AVEncoderBitRateKey, - [ NSData dataWithBytes: &acl length: sizeof( acl ) ], AVChannelLayoutKey, - nil];*/ - } - - assetWriterAudioInput = [AVAssetWriterInput assetWriterInputWithMediaType:AVMediaTypeAudio outputSettings:audioOutputSettings]; - [assetWriter addInput:assetWriterAudioInput]; - assetWriterAudioInput.expectsMediaDataInRealTime = _encodingLiveVideo; - } - else - { - // Remove audio track if it exists - } -} - -- (NSArray*)metaData { - return assetWriter.metadata; -} - -- (void)setMetaData:(NSArray*)metaData { - assetWriter.metadata = metaData; -} - -- (CMTime)duration { - if( ! CMTIME_IS_VALID(startTime) ) - return kCMTimeZero; - if( ! CMTIME_IS_NEGATIVE_INFINITY(previousFrameTime) ) - return CMTimeSubtract(previousFrameTime, startTime); - if( ! CMTIME_IS_NEGATIVE_INFINITY(previousAudioTime) ) - return CMTimeSubtract(previousAudioTime, startTime); - return kCMTimeZero; -} - -- (CGAffineTransform)transform { - return assetWriterVideoInput.transform; -} - -- (void)setTransform:(CGAffineTransform)transform { - assetWriterVideoInput.transform = transform; -} - -- (AVAssetWriter*)assetWriter { - return assetWriter; -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/iOS/GPUImagePicture+TextureSubimage.h b/Example/Pods/GPUImage/framework/Source/iOS/GPUImagePicture+TextureSubimage.h deleted file mode 100644 index 03c631b..0000000 --- a/Example/Pods/GPUImage/framework/Source/iOS/GPUImagePicture+TextureSubimage.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// GPUImagePicture+TextureSubimage.h -// GPUImage -// -// Created by Jack Wu on 2014-05-28. -// Copyright (c) 2014 Brad Larson. All rights reserved. -// - -#import "GPUImagePicture.h" - -@interface GPUImagePicture (TextureSubimage) - -- (void)replaceTextureWithSubimage:(UIImage*)subimage; -- (void)replaceTextureWithSubCGImage:(CGImageRef)subimageSource; - -- (void)replaceTextureWithSubimage:(UIImage*)subimage inRect:(CGRect)subRect; -- (void)replaceTextureWithSubCGImage:(CGImageRef)subimageSource inRect:(CGRect)subRect; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/iOS/GPUImagePicture+TextureSubimage.m b/Example/Pods/GPUImage/framework/Source/iOS/GPUImagePicture+TextureSubimage.m deleted file mode 100644 index 71ef8f9..0000000 --- a/Example/Pods/GPUImage/framework/Source/iOS/GPUImagePicture+TextureSubimage.m +++ /dev/null @@ -1,103 +0,0 @@ -// -// GPUImagePicture+TextureSubimage.m -// GPUImage -// -// Created by Jack Wu on 2014-05-28. -// Copyright (c) 2014 Brad Larson. All rights reserved. -// - -#import "GPUImagePicture+TextureSubimage.h" - -@implementation GPUImagePicture (TextureSubimage) - -- (void)replaceTextureWithSubimage:(UIImage*)subimage { - return [self replaceTextureWithSubCGImage:[subimage CGImage]]; -} - -- (void)replaceTextureWithSubCGImage:(CGImageRef)subimageSource { - CGRect rect = (CGRect) {.origin = CGPointZero, .size = (CGSize){.width = CGImageGetWidth(subimageSource), .height = CGImageGetHeight(subimageSource)}}; - return [self replaceTextureWithSubCGImage:subimageSource inRect:rect]; -} - -- (void)replaceTextureWithSubimage:(UIImage*)subimage inRect:(CGRect)subRect { - return [self replaceTextureWithSubCGImage:[subimage CGImage] inRect:subRect]; -} - -- (void)replaceTextureWithSubCGImage:(CGImageRef)subimageSource inRect:(CGRect)subRect { - NSAssert(outputFramebuffer, @"Picture must be initialized first before replacing subtexture"); - NSAssert(self.framebufferForOutput.textureOptions.internalFormat == GL_RGBA, @"For replacing subtexture the internal texture format must be GL_RGBA."); - - CGRect subimageRect = (CGRect){.origin = CGPointZero, .size = (CGSize){.width = CGImageGetWidth(subimageSource), .height = CGImageGetHeight(subimageSource)}}; - NSAssert(!CGRectIsEmpty(subimageRect), @"Passed sub image must not be empty - it should be at least 1px tall and wide"); - NSAssert(!CGRectIsEmpty(subRect), @"Passed sub rect must not be empty"); - - NSAssert(CGSizeEqualToSize(subimageRect.size, subRect.size), @"Subimage size must match the size of sub rect"); - - // We don't have to worry about scaling the subimage or finding a power of two size. - // The initialization has taken care of that for us. - - dispatch_semaphore_signal(imageUpdateSemaphore); - - BOOL shouldRedrawUsingCoreGraphics = NO; - - // Since internal format is always RGBA, we need the input data in RGBA as well. - CGBitmapInfo bitmapInfo = CGImageGetBitmapInfo(subimageSource); - CGBitmapInfo byteOrderInfo = bitmapInfo & kCGBitmapByteOrderMask; - if (byteOrderInfo != kCGBitmapByteOrderDefault && byteOrderInfo != kCGBitmapByteOrder32Big) { - shouldRedrawUsingCoreGraphics = YES; - } - else { - CGImageAlphaInfo alphaInfo = bitmapInfo & kCGBitmapAlphaInfoMask; - if (alphaInfo != kCGImageAlphaPremultipliedLast && alphaInfo != kCGImageAlphaLast && alphaInfo != kCGImageAlphaNoneSkipLast) { - shouldRedrawUsingCoreGraphics = YES; - } - } - - GLubyte *imageData = NULL; - CFDataRef dataFromImageDataProvider; - if (shouldRedrawUsingCoreGraphics) - { - // For resized or incompatible image: redraw - imageData = (GLubyte *) calloc(1, (int)subimageRect.size.width * (int)subimageRect.size.height * 4); - - CGColorSpaceRef genericRGBColorspace = CGColorSpaceCreateDeviceRGB(); - - CGContextRef imageContext = CGBitmapContextCreate(imageData, (size_t)subimageRect.size.width, (size_t)subimageRect.size.height, 8, (size_t)subimageRect.size.width * 4, genericRGBColorspace, kCGBitmapByteOrderDefault | kCGImageAlphaPremultipliedLast); - - CGContextDrawImage(imageContext, CGRectMake(0.0, 0.0, subimageRect.size.width, subimageRect.size.height), subimageSource); - CGContextRelease(imageContext); - CGColorSpaceRelease(genericRGBColorspace); - } - else - { - // Access the raw image bytes directly - dataFromImageDataProvider = CGDataProviderCopyData(CGImageGetDataProvider(subimageSource)); - imageData = (GLubyte *)CFDataGetBytePtr(dataFromImageDataProvider); - } - - runSynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext useImageProcessingContext]; - [outputFramebuffer disableReferenceCounting]; - - glBindTexture(GL_TEXTURE_2D, [outputFramebuffer texture]); - - // no need to use self.outputTextureOptions here since pictures need this texture formats and type - glTexSubImage2D(GL_TEXTURE_2D, 0, subRect.origin.x, subRect.origin.y, (GLint)subRect.size.width, subRect.size.height, GL_RGBA, GL_UNSIGNED_BYTE, imageData); - - if (self.shouldSmoothlyScaleOutput) - { - glGenerateMipmap(GL_TEXTURE_2D); - } - glBindTexture(GL_TEXTURE_2D, 0); - }); - - if (shouldRedrawUsingCoreGraphics) - { - free(imageData); - } - else - { - CFRelease(dataFromImageDataProvider); - } -} -@end diff --git a/Example/Pods/GPUImage/framework/Source/iOS/GPUImagePicture.h b/Example/Pods/GPUImage/framework/Source/iOS/GPUImagePicture.h deleted file mode 100755 index 1ae0ef4..0000000 --- a/Example/Pods/GPUImage/framework/Source/iOS/GPUImagePicture.h +++ /dev/null @@ -1,34 +0,0 @@ -#import -#import "GPUImageOutput.h" - - -@interface GPUImagePicture : GPUImageOutput -{ - CGSize pixelSizeOfImage; - BOOL hasProcessedImage; - - dispatch_semaphore_t imageUpdateSemaphore; -} - -// Initialization and teardown -- (id)initWithURL:(NSURL *)url; -- (id)initWithImage:(UIImage *)newImageSource; -- (id)initWithCGImage:(CGImageRef)newImageSource; -- (id)initWithImage:(UIImage *)newImageSource smoothlyScaleOutput:(BOOL)smoothlyScaleOutput; -- (id)initWithCGImage:(CGImageRef)newImageSource smoothlyScaleOutput:(BOOL)smoothlyScaleOutput; - -// Image rendering -- (void)processImage; -- (CGSize)outputImageSize; - -/** - * Process image with all targets and filters asynchronously - * The completion handler is called after processing finished in the - * GPU's dispatch queue - and only if this method did not return NO. - * - * @returns NO if resource is blocked and processing is discarded, YES otherwise - */ -- (BOOL)processImageWithCompletionHandler:(void (^)(void))completion; -- (void)processImageUpToFilter:(GPUImageOutput *)finalFilterInChain withCompletionHandler:(void (^)(UIImage *processedImage))block; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/iOS/GPUImagePicture.m b/Example/Pods/GPUImage/framework/Source/iOS/GPUImagePicture.m deleted file mode 100755 index 97602cf..0000000 --- a/Example/Pods/GPUImage/framework/Source/iOS/GPUImagePicture.m +++ /dev/null @@ -1,304 +0,0 @@ -#import "GPUImagePicture.h" - -@implementation GPUImagePicture - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)initWithURL:(NSURL *)url; -{ - NSData *imageData = [[NSData alloc] initWithContentsOfURL:url]; - - if (!(self = [self initWithData:imageData])) - { - return nil; - } - - return self; -} - -- (id)initWithData:(NSData *)imageData; -{ - UIImage *inputImage = [[UIImage alloc] initWithData:imageData]; - - if (!(self = [self initWithImage:inputImage])) - { - return nil; - } - - return self; -} - -- (id)initWithImage:(UIImage *)newImageSource; -{ - if (!(self = [self initWithImage:newImageSource smoothlyScaleOutput:NO])) - { - return nil; - } - - return self; -} - -- (id)initWithCGImage:(CGImageRef)newImageSource; -{ - if (!(self = [self initWithCGImage:newImageSource smoothlyScaleOutput:NO])) - { - return nil; - } - return self; -} - -- (id)initWithImage:(UIImage *)newImageSource smoothlyScaleOutput:(BOOL)smoothlyScaleOutput; -{ - return [self initWithCGImage:[newImageSource CGImage] smoothlyScaleOutput:smoothlyScaleOutput]; -} - -- (id)initWithCGImage:(CGImageRef)newImageSource smoothlyScaleOutput:(BOOL)smoothlyScaleOutput; -{ - if (!(self = [super init])) - { - return nil; - } - - hasProcessedImage = NO; - self.shouldSmoothlyScaleOutput = smoothlyScaleOutput; - imageUpdateSemaphore = dispatch_semaphore_create(0); - dispatch_semaphore_signal(imageUpdateSemaphore); - - - // TODO: Dispatch this whole thing asynchronously to move image loading off main thread - CGFloat widthOfImage = CGImageGetWidth(newImageSource); - CGFloat heightOfImage = CGImageGetHeight(newImageSource); - - // If passed an empty image reference, CGContextDrawImage will fail in future versions of the SDK. - NSAssert( widthOfImage > 0 && heightOfImage > 0, @"Passed image must not be empty - it should be at least 1px tall and wide"); - - pixelSizeOfImage = CGSizeMake(widthOfImage, heightOfImage); - CGSize pixelSizeToUseForTexture = pixelSizeOfImage; - - BOOL shouldRedrawUsingCoreGraphics = NO; - - // For now, deal with images larger than the maximum texture size by resizing to be within that limit - CGSize scaledImageSizeToFitOnGPU = [GPUImageContext sizeThatFitsWithinATextureForSize:pixelSizeOfImage]; - if (!CGSizeEqualToSize(scaledImageSizeToFitOnGPU, pixelSizeOfImage)) - { - pixelSizeOfImage = scaledImageSizeToFitOnGPU; - pixelSizeToUseForTexture = pixelSizeOfImage; - shouldRedrawUsingCoreGraphics = YES; - } - - if (self.shouldSmoothlyScaleOutput) - { - // In order to use mipmaps, you need to provide power-of-two textures, so convert to the next largest power of two and stretch to fill - CGFloat powerClosestToWidth = ceil(log2(pixelSizeOfImage.width)); - CGFloat powerClosestToHeight = ceil(log2(pixelSizeOfImage.height)); - - pixelSizeToUseForTexture = CGSizeMake(pow(2.0, powerClosestToWidth), pow(2.0, powerClosestToHeight)); - - shouldRedrawUsingCoreGraphics = YES; - } - - GLubyte *imageData = NULL; - CFDataRef dataFromImageDataProvider = NULL; - GLenum format = GL_BGRA; - - if (!shouldRedrawUsingCoreGraphics) { - /* Check that the memory layout is compatible with GL, as we cannot use glPixelStore to - * tell GL about the memory layout with GLES. - */ - if (CGImageGetBytesPerRow(newImageSource) != CGImageGetWidth(newImageSource) * 4 || - CGImageGetBitsPerPixel(newImageSource) != 32 || - CGImageGetBitsPerComponent(newImageSource) != 8) - { - shouldRedrawUsingCoreGraphics = YES; - } else { - /* Check that the bitmap pixel format is compatible with GL */ - CGBitmapInfo bitmapInfo = CGImageGetBitmapInfo(newImageSource); - if ((bitmapInfo & kCGBitmapFloatComponents) != 0) { - /* We don't support float components for use directly in GL */ - shouldRedrawUsingCoreGraphics = YES; - } else { - CGBitmapInfo byteOrderInfo = bitmapInfo & kCGBitmapByteOrderMask; - if (byteOrderInfo == kCGBitmapByteOrder32Little) { - /* Little endian, for alpha-first we can use this bitmap directly in GL */ - CGImageAlphaInfo alphaInfo = bitmapInfo & kCGBitmapAlphaInfoMask; - if (alphaInfo != kCGImageAlphaPremultipliedFirst && alphaInfo != kCGImageAlphaFirst && - alphaInfo != kCGImageAlphaNoneSkipFirst) { - shouldRedrawUsingCoreGraphics = YES; - } - } else if (byteOrderInfo == kCGBitmapByteOrderDefault || byteOrderInfo == kCGBitmapByteOrder32Big) { - /* Big endian, for alpha-last we can use this bitmap directly in GL */ - CGImageAlphaInfo alphaInfo = bitmapInfo & kCGBitmapAlphaInfoMask; - if (alphaInfo != kCGImageAlphaPremultipliedLast && alphaInfo != kCGImageAlphaLast && - alphaInfo != kCGImageAlphaNoneSkipLast) { - shouldRedrawUsingCoreGraphics = YES; - } else { - /* Can access directly using GL_RGBA pixel format */ - format = GL_RGBA; - } - } - } - } - } - - // CFAbsoluteTime elapsedTime, startTime = CFAbsoluteTimeGetCurrent(); - - if (shouldRedrawUsingCoreGraphics) - { - // For resized or incompatible image: redraw - imageData = (GLubyte *) calloc(1, (int)pixelSizeToUseForTexture.width * (int)pixelSizeToUseForTexture.height * 4); - - CGColorSpaceRef genericRGBColorspace = CGColorSpaceCreateDeviceRGB(); - - CGContextRef imageContext = CGBitmapContextCreate(imageData, (size_t)pixelSizeToUseForTexture.width, (size_t)pixelSizeToUseForTexture.height, 8, (size_t)pixelSizeToUseForTexture.width * 4, genericRGBColorspace, kCGBitmapByteOrder32Little | kCGImageAlphaPremultipliedFirst); - // CGContextSetBlendMode(imageContext, kCGBlendModeCopy); // From Technical Q&A QA1708: http://developer.apple.com/library/ios/#qa/qa1708/_index.html - CGContextDrawImage(imageContext, CGRectMake(0.0, 0.0, pixelSizeToUseForTexture.width, pixelSizeToUseForTexture.height), newImageSource); - CGContextRelease(imageContext); - CGColorSpaceRelease(genericRGBColorspace); - } - else - { - // Access the raw image bytes directly - dataFromImageDataProvider = CGDataProviderCopyData(CGImageGetDataProvider(newImageSource)); - imageData = (GLubyte *)CFDataGetBytePtr(dataFromImageDataProvider); - } - - // elapsedTime = (CFAbsoluteTimeGetCurrent() - startTime) * 1000.0; - // NSLog(@"Core Graphics drawing time: %f", elapsedTime); - - // CGFloat currentRedTotal = 0.0f, currentGreenTotal = 0.0f, currentBlueTotal = 0.0f, currentAlphaTotal = 0.0f; - // NSUInteger totalNumberOfPixels = round(pixelSizeToUseForTexture.width * pixelSizeToUseForTexture.height); - // - // for (NSUInteger currentPixel = 0; currentPixel < totalNumberOfPixels; currentPixel++) - // { - // currentBlueTotal += (CGFloat)imageData[(currentPixel * 4)] / 255.0f; - // currentGreenTotal += (CGFloat)imageData[(currentPixel * 4) + 1] / 255.0f; - // currentRedTotal += (CGFloat)imageData[(currentPixel * 4 + 2)] / 255.0f; - // currentAlphaTotal += (CGFloat)imageData[(currentPixel * 4) + 3] / 255.0f; - // } - // - // NSLog(@"Debug, average input image red: %f, green: %f, blue: %f, alpha: %f", currentRedTotal / (CGFloat)totalNumberOfPixels, currentGreenTotal / (CGFloat)totalNumberOfPixels, currentBlueTotal / (CGFloat)totalNumberOfPixels, currentAlphaTotal / (CGFloat)totalNumberOfPixels); - - runSynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext useImageProcessingContext]; - - outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:pixelSizeToUseForTexture onlyTexture:YES]; - [outputFramebuffer disableReferenceCounting]; - - glBindTexture(GL_TEXTURE_2D, [outputFramebuffer texture]); - if (self.shouldSmoothlyScaleOutput) - { - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); - } - // no need to use self.outputTextureOptions here since pictures need this texture formats and type - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, (int)pixelSizeToUseForTexture.width, (int)pixelSizeToUseForTexture.height, 0, format, GL_UNSIGNED_BYTE, imageData); - - if (self.shouldSmoothlyScaleOutput) - { - glGenerateMipmap(GL_TEXTURE_2D); - } - glBindTexture(GL_TEXTURE_2D, 0); - }); - - if (shouldRedrawUsingCoreGraphics) - { - free(imageData); - } - else - { - if (dataFromImageDataProvider) - { - CFRelease(dataFromImageDataProvider); - } - } - - return self; -} - -// ARC forbids explicit message send of 'release'; since iOS 6 even for dispatch_release() calls: stripping it out in that case is required. -- (void)dealloc; -{ - [outputFramebuffer enableReferenceCounting]; - [outputFramebuffer unlock]; - -#if !OS_OBJECT_USE_OBJC - if (imageUpdateSemaphore != NULL) - { - dispatch_release(imageUpdateSemaphore); - } -#endif -} - -#pragma mark - -#pragma mark Image rendering - -- (void)removeAllTargets; -{ - [super removeAllTargets]; - hasProcessedImage = NO; -} - -- (void)processImage; -{ - [self processImageWithCompletionHandler:nil]; -} - -- (BOOL)processImageWithCompletionHandler:(void (^)(void))completion; -{ - hasProcessedImage = YES; - - // dispatch_semaphore_wait(imageUpdateSemaphore, DISPATCH_TIME_FOREVER); - - if (dispatch_semaphore_wait(imageUpdateSemaphore, DISPATCH_TIME_NOW) != 0) - { - return NO; - } - - runAsynchronouslyOnVideoProcessingQueue(^{ - for (id currentTarget in targets) - { - NSInteger indexOfObject = [targets indexOfObject:currentTarget]; - NSInteger textureIndexOfTarget = [[targetTextureIndices objectAtIndex:indexOfObject] integerValue]; - - [currentTarget setCurrentlyReceivingMonochromeInput:NO]; - [currentTarget setInputSize:pixelSizeOfImage atIndex:textureIndexOfTarget]; - [currentTarget setInputFramebuffer:outputFramebuffer atIndex:textureIndexOfTarget]; - [currentTarget newFrameReadyAtTime:kCMTimeIndefinite atIndex:textureIndexOfTarget]; - } - - dispatch_semaphore_signal(imageUpdateSemaphore); - - if (completion != nil) { - completion(); - } - }); - - return YES; -} - -- (void)processImageUpToFilter:(GPUImageOutput *)finalFilterInChain withCompletionHandler:(void (^)(UIImage *processedImage))block; -{ - [finalFilterInChain useNextFrameForImageCapture]; - [self processImageWithCompletionHandler:^{ - UIImage *imageFromFilter = [finalFilterInChain imageFromCurrentFramebuffer]; - block(imageFromFilter); - }]; -} - -- (CGSize)outputImageSize; -{ - return pixelSizeOfImage; -} - -- (void)addTarget:(id)newTarget atTextureLocation:(NSInteger)textureLocation; -{ - [super addTarget:newTarget atTextureLocation:textureLocation]; - - if (hasProcessedImage) - { - [newTarget setInputSize:pixelSizeOfImage atIndex:textureLocation]; - [newTarget newFrameReadyAtTime:kCMTimeIndefinite atIndex:textureLocation]; - } -} - -@end diff --git a/Example/Pods/GPUImage/framework/Source/iOS/GPUImageView.h b/Example/Pods/GPUImage/framework/Source/iOS/GPUImageView.h deleted file mode 100755 index 03e12ee..0000000 --- a/Example/Pods/GPUImage/framework/Source/iOS/GPUImageView.h +++ /dev/null @@ -1,39 +0,0 @@ -#import -#import "GPUImageContext.h" - -typedef enum { - kGPUImageFillModeStretch, // Stretch to fill the full view, which may distort the image outside of its normal aspect ratio - kGPUImageFillModePreserveAspectRatio, // Maintains the aspect ratio of the source image, adding bars of the specified background color - kGPUImageFillModePreserveAspectRatioAndFill // Maintains the aspect ratio of the source image, zooming in on its center to fill the view -} GPUImageFillModeType; - -/** - UIView subclass to use as an endpoint for displaying GPUImage outputs - */ -@interface GPUImageView : UIView -{ - GPUImageRotationMode inputRotation; -} - -/** The fill mode dictates how images are fit in the view, with the default being kGPUImageFillModePreserveAspectRatio - */ -@property(readwrite, nonatomic) GPUImageFillModeType fillMode; - -/** This calculates the current display size, in pixels, taking into account Retina scaling factors - */ -@property(readonly, nonatomic) CGSize sizeInPixels; - -@property(nonatomic) BOOL enabled; - -/** Handling fill mode - - @param redComponent Red component for background color - @param greenComponent Green component for background color - @param blueComponent Blue component for background color - @param alphaComponent Alpha component for background color - */ -- (void)setBackgroundColorRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent alpha:(GLfloat)alphaComponent; - -- (void)setCurrentlyReceivingMonochromeInput:(BOOL)newValue; - -@end diff --git a/Example/Pods/GPUImage/framework/Source/iOS/GPUImageView.m b/Example/Pods/GPUImage/framework/Source/iOS/GPUImageView.m deleted file mode 100755 index 5def624..0000000 --- a/Example/Pods/GPUImage/framework/Source/iOS/GPUImageView.m +++ /dev/null @@ -1,481 +0,0 @@ -#import "GPUImageView.h" -#import -#import -#import "GPUImageContext.h" -#import "GPUImageFilter.h" -#import - -#pragma mark - -#pragma mark Private methods and instance variables - -@interface GPUImageView () -{ - GPUImageFramebuffer *inputFramebufferForDisplay; - GLuint displayRenderbuffer, displayFramebuffer; - - GLProgram *displayProgram; - GLint displayPositionAttribute, displayTextureCoordinateAttribute; - GLint displayInputTextureUniform; - - CGSize inputImageSize; - GLfloat imageVertices[8]; - GLfloat backgroundColorRed, backgroundColorGreen, backgroundColorBlue, backgroundColorAlpha; - - CGSize boundsSizeAtFrameBufferEpoch; -} - -@property (assign, nonatomic) NSUInteger aspectRatio; - -// Initialization and teardown -- (void)commonInit; - -// Managing the display FBOs -- (void)createDisplayFramebuffer; -- (void)destroyDisplayFramebuffer; - -// Handling fill mode -- (void)recalculateViewGeometry; - -@end - -@implementation GPUImageView - -@synthesize aspectRatio; -@synthesize sizeInPixels = _sizeInPixels; -@synthesize fillMode = _fillMode; -@synthesize enabled; - -#pragma mark - -#pragma mark Initialization and teardown - -+ (Class)layerClass -{ - return [CAEAGLLayer class]; -} - -- (id)initWithFrame:(CGRect)frame -{ - if (!(self = [super initWithFrame:frame])) - { - return nil; - } - - [self commonInit]; - - return self; -} - --(id)initWithCoder:(NSCoder *)coder -{ - if (!(self = [super initWithCoder:coder])) - { - return nil; - } - - [self commonInit]; - - return self; -} - -- (void)commonInit; -{ - // Set scaling to account for Retina display - if ([self respondsToSelector:@selector(setContentScaleFactor:)]) - { - self.contentScaleFactor = [[UIScreen mainScreen] scale]; - } - - inputRotation = kGPUImageNoRotation; - self.opaque = YES; - self.hidden = NO; - CAEAGLLayer *eaglLayer = (CAEAGLLayer *)self.layer; - eaglLayer.opaque = YES; - eaglLayer.drawableProperties = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:NO], kEAGLDrawablePropertyRetainedBacking, kEAGLColorFormatRGBA8, kEAGLDrawablePropertyColorFormat, nil]; - - self.enabled = YES; - - runSynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext useImageProcessingContext]; - - displayProgram = [[GPUImageContext sharedImageProcessingContext] programForVertexShaderString:kGPUImageVertexShaderString fragmentShaderString:kGPUImagePassthroughFragmentShaderString]; - if (!displayProgram.initialized) - { - [displayProgram addAttribute:@"position"]; - [displayProgram addAttribute:@"inputTextureCoordinate"]; - - if (![displayProgram link]) - { - NSString *progLog = [displayProgram programLog]; - NSLog(@"Program link log: %@", progLog); - NSString *fragLog = [displayProgram fragmentShaderLog]; - NSLog(@"Fragment shader compile log: %@", fragLog); - NSString *vertLog = [displayProgram vertexShaderLog]; - NSLog(@"Vertex shader compile log: %@", vertLog); - displayProgram = nil; - NSAssert(NO, @"Filter shader link failed"); - } - } - - displayPositionAttribute = [displayProgram attributeIndex:@"position"]; - displayTextureCoordinateAttribute = [displayProgram attributeIndex:@"inputTextureCoordinate"]; - displayInputTextureUniform = [displayProgram uniformIndex:@"inputImageTexture"]; // This does assume a name of "inputTexture" for the fragment shader - - [GPUImageContext setActiveShaderProgram:displayProgram]; - glEnableVertexAttribArray(displayPositionAttribute); - glEnableVertexAttribArray(displayTextureCoordinateAttribute); - - [self setBackgroundColorRed:0.0 green:0.0 blue:0.0 alpha:1.0]; - _fillMode = kGPUImageFillModePreserveAspectRatio; - [self createDisplayFramebuffer]; - }); -} - -- (void)layoutSubviews { - [super layoutSubviews]; - - // The frame buffer needs to be trashed and re-created when the view size changes. - if (!CGSizeEqualToSize(self.bounds.size, boundsSizeAtFrameBufferEpoch) && - !CGSizeEqualToSize(self.bounds.size, CGSizeZero)) { - runSynchronouslyOnVideoProcessingQueue(^{ - [self destroyDisplayFramebuffer]; - [self createDisplayFramebuffer]; - [self recalculateViewGeometry]; - }); - } -} - -- (void)dealloc -{ - runSynchronouslyOnVideoProcessingQueue(^{ - [self destroyDisplayFramebuffer]; - }); -} - -#pragma mark - -#pragma mark Managing the display FBOs - -- (void)createDisplayFramebuffer; -{ - [GPUImageContext useImageProcessingContext]; - - glGenFramebuffers(1, &displayFramebuffer); - glBindFramebuffer(GL_FRAMEBUFFER, displayFramebuffer); - - glGenRenderbuffers(1, &displayRenderbuffer); - glBindRenderbuffer(GL_RENDERBUFFER, displayRenderbuffer); - - [[[GPUImageContext sharedImageProcessingContext] context] renderbufferStorage:GL_RENDERBUFFER fromDrawable:(CAEAGLLayer*)self.layer]; - - GLint backingWidth, backingHeight; - - glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_WIDTH, &backingWidth); - glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_HEIGHT, &backingHeight); - - if ( (backingWidth == 0) || (backingHeight == 0) ) - { - [self destroyDisplayFramebuffer]; - return; - } - - _sizeInPixels.width = (CGFloat)backingWidth; - _sizeInPixels.height = (CGFloat)backingHeight; - -// NSLog(@"Backing width: %d, height: %d", backingWidth, backingHeight); - - glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, displayRenderbuffer); - - GLuint framebufferCreationStatus = glCheckFramebufferStatus(GL_FRAMEBUFFER); - NSAssert(framebufferCreationStatus == GL_FRAMEBUFFER_COMPLETE, @"Failure with display framebuffer generation for display of size: %f, %f", self.bounds.size.width, self.bounds.size.height); - boundsSizeAtFrameBufferEpoch = self.bounds.size; -} - -- (void)destroyDisplayFramebuffer; -{ - [GPUImageContext useImageProcessingContext]; - - if (displayFramebuffer) - { - glDeleteFramebuffers(1, &displayFramebuffer); - displayFramebuffer = 0; - } - - if (displayRenderbuffer) - { - glDeleteRenderbuffers(1, &displayRenderbuffer); - displayRenderbuffer = 0; - } -} - -- (void)setDisplayFramebuffer; -{ - if (!displayFramebuffer) - { - [self createDisplayFramebuffer]; - } - - glBindFramebuffer(GL_FRAMEBUFFER, displayFramebuffer); - - glViewport(0, 0, (GLint)_sizeInPixels.width, (GLint)_sizeInPixels.height); -} - -- (void)presentFramebuffer; -{ - glBindRenderbuffer(GL_RENDERBUFFER, displayRenderbuffer); - [[GPUImageContext sharedImageProcessingContext] presentBufferForDisplay]; -} - -#pragma mark - -#pragma mark Handling fill mode - -- (void)recalculateViewGeometry; -{ - runSynchronouslyOnVideoProcessingQueue(^{ - CGFloat heightScaling, widthScaling; - - CGSize currentViewSize = self.bounds.size; - - // CGFloat imageAspectRatio = inputImageSize.width / inputImageSize.height; - // CGFloat viewAspectRatio = currentViewSize.width / currentViewSize.height; - - CGRect insetRect = AVMakeRectWithAspectRatioInsideRect(inputImageSize, self.bounds); - - switch(_fillMode) - { - case kGPUImageFillModeStretch: - { - widthScaling = 1.0; - heightScaling = 1.0; - }; break; - case kGPUImageFillModePreserveAspectRatio: - { - widthScaling = insetRect.size.width / currentViewSize.width; - heightScaling = insetRect.size.height / currentViewSize.height; - }; break; - case kGPUImageFillModePreserveAspectRatioAndFill: - { - // CGFloat widthHolder = insetRect.size.width / currentViewSize.width; - widthScaling = currentViewSize.height / insetRect.size.height; - heightScaling = currentViewSize.width / insetRect.size.width; - }; break; - } - - imageVertices[0] = -widthScaling; - imageVertices[1] = -heightScaling; - imageVertices[2] = widthScaling; - imageVertices[3] = -heightScaling; - imageVertices[4] = -widthScaling; - imageVertices[5] = heightScaling; - imageVertices[6] = widthScaling; - imageVertices[7] = heightScaling; - }); - -// static const GLfloat imageVertices[] = { -// -1.0f, -1.0f, -// 1.0f, -1.0f, -// -1.0f, 1.0f, -// 1.0f, 1.0f, -// }; -} - -- (void)setBackgroundColorRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent alpha:(GLfloat)alphaComponent; -{ - backgroundColorRed = redComponent; - backgroundColorGreen = greenComponent; - backgroundColorBlue = blueComponent; - backgroundColorAlpha = alphaComponent; -} - -+ (const GLfloat *)textureCoordinatesForRotation:(GPUImageRotationMode)rotationMode; -{ -// static const GLfloat noRotationTextureCoordinates[] = { -// 0.0f, 0.0f, -// 1.0f, 0.0f, -// 0.0f, 1.0f, -// 1.0f, 1.0f, -// }; - - static const GLfloat noRotationTextureCoordinates[] = { - 0.0f, 1.0f, - 1.0f, 1.0f, - 0.0f, 0.0f, - 1.0f, 0.0f, - }; - - static const GLfloat rotateRightTextureCoordinates[] = { - 1.0f, 1.0f, - 1.0f, 0.0f, - 0.0f, 1.0f, - 0.0f, 0.0f, - }; - - static const GLfloat rotateLeftTextureCoordinates[] = { - 0.0f, 0.0f, - 0.0f, 1.0f, - 1.0f, 0.0f, - 1.0f, 1.0f, - }; - - static const GLfloat verticalFlipTextureCoordinates[] = { - 0.0f, 0.0f, - 1.0f, 0.0f, - 0.0f, 1.0f, - 1.0f, 1.0f, - }; - - static const GLfloat horizontalFlipTextureCoordinates[] = { - 1.0f, 1.0f, - 0.0f, 1.0f, - 1.0f, 0.0f, - 0.0f, 0.0f, - }; - - static const GLfloat rotateRightVerticalFlipTextureCoordinates[] = { - 1.0f, 0.0f, - 1.0f, 1.0f, - 0.0f, 0.0f, - 0.0f, 1.0f, - }; - - static const GLfloat rotateRightHorizontalFlipTextureCoordinates[] = { - 1.0f, 1.0f, - 1.0f, 0.0f, - 0.0f, 1.0f, - 0.0f, 0.0f, - }; - - static const GLfloat rotate180TextureCoordinates[] = { - 1.0f, 0.0f, - 0.0f, 0.0f, - 1.0f, 1.0f, - 0.0f, 1.0f, - }; - - switch(rotationMode) - { - case kGPUImageNoRotation: return noRotationTextureCoordinates; - case kGPUImageRotateLeft: return rotateLeftTextureCoordinates; - case kGPUImageRotateRight: return rotateRightTextureCoordinates; - case kGPUImageFlipVertical: return verticalFlipTextureCoordinates; - case kGPUImageFlipHorizonal: return horizontalFlipTextureCoordinates; - case kGPUImageRotateRightFlipVertical: return rotateRightVerticalFlipTextureCoordinates; - case kGPUImageRotateRightFlipHorizontal: return rotateRightHorizontalFlipTextureCoordinates; - case kGPUImageRotate180: return rotate180TextureCoordinates; - } -} - -#pragma mark - -#pragma mark GPUInput protocol - -- (void)newFrameReadyAtTime:(CMTime)frameTime atIndex:(NSInteger)textureIndex; -{ - runSynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext setActiveShaderProgram:displayProgram]; - [self setDisplayFramebuffer]; - - glClearColor(backgroundColorRed, backgroundColorGreen, backgroundColorBlue, backgroundColorAlpha); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glActiveTexture(GL_TEXTURE4); - glBindTexture(GL_TEXTURE_2D, [inputFramebufferForDisplay texture]); - glUniform1i(displayInputTextureUniform, 4); - - glVertexAttribPointer(displayPositionAttribute, 2, GL_FLOAT, 0, 0, imageVertices); - glVertexAttribPointer(displayTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, [GPUImageView textureCoordinatesForRotation:inputRotation]); - - glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); - - [self presentFramebuffer]; - [inputFramebufferForDisplay unlock]; - inputFramebufferForDisplay = nil; - }); -} - -- (NSInteger)nextAvailableTextureIndex; -{ - return 0; -} - -- (void)setInputFramebuffer:(GPUImageFramebuffer *)newInputFramebuffer atIndex:(NSInteger)textureIndex; -{ - inputFramebufferForDisplay = newInputFramebuffer; - [inputFramebufferForDisplay lock]; -} - -- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; -{ - inputRotation = newInputRotation; -} - -- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex; -{ - runSynchronouslyOnVideoProcessingQueue(^{ - CGSize rotatedSize = newSize; - - if (GPUImageRotationSwapsWidthAndHeight(inputRotation)) - { - rotatedSize.width = newSize.height; - rotatedSize.height = newSize.width; - } - - if (!CGSizeEqualToSize(inputImageSize, rotatedSize)) - { - inputImageSize = rotatedSize; - [self recalculateViewGeometry]; - } - }); -} - -- (CGSize)maximumOutputSize; -{ - if ([self respondsToSelector:@selector(setContentScaleFactor:)]) - { - CGSize pointSize = self.bounds.size; - return CGSizeMake(self.contentScaleFactor * pointSize.width, self.contentScaleFactor * pointSize.height); - } - else - { - return self.bounds.size; - } -} - -- (void)endProcessing -{ -} - -- (BOOL)shouldIgnoreUpdatesToThisTarget; -{ - return NO; -} - -- (BOOL)wantsMonochromeInput; -{ - return NO; -} - -- (void)setCurrentlyReceivingMonochromeInput:(BOOL)newValue; -{ - -} - -#pragma mark - -#pragma mark Accessors - -- (CGSize)sizeInPixels; -{ - if (CGSizeEqualToSize(_sizeInPixels, CGSizeZero)) - { - return [self maximumOutputSize]; - } - else - { - return _sizeInPixels; - } -} - -- (void)setFillMode:(GPUImageFillModeType)newValue; -{ - _fillMode = newValue; - [self recalculateViewGeometry]; -} - -@end diff --git a/Example/Pods/HappyDNS/HappyDNS/Common/QNDnsManager.m b/Example/Pods/HappyDNS/HappyDNS/Common/QNDnsManager.m index 3742f99..0b94cf7 100644 --- a/Example/Pods/HappyDNS/HappyDNS/Common/QNDnsManager.m +++ b/Example/Pods/HappyDNS/HappyDNS/Common/QNDnsManager.m @@ -10,6 +10,7 @@ #import "QNDomain.h" #import "QNHosts.h" #import "QNIP.h" +#import "QNLruCache.h" #import "QNNetworkInfo.h" #import "QNRecord.h" #import "QNResolverDelegate.h" @@ -20,7 +21,7 @@ @interface QNDnsManager () -@property (nonatomic, strong) NSCache *cache; +@property (nonatomic, strong) QNLruCache *cache; @property (atomic) QNNetworkInfo *curNetwork; @property (nonatomic) NSArray *resolvers; @property (atomic) UInt32 resolverStatus; @@ -66,7 +67,7 @@ static inline UInt32 bits_leadingZeros(UInt32 x) { return n - x; } -static NSArray *trimCname(NSArray *records) { +static NSMutableArray *trimCname(NSArray *records) { NSMutableArray *array = [[NSMutableArray alloc] init]; for (QNRecord *r in records) { if (r.type == kQNTypeA || r.type == kQNTypeAAAA) { @@ -84,23 +85,15 @@ static inline UInt32 bits_leadingZeros(UInt32 x) { return array; } -@interface Shuffle : NSObject +@interface DummySorter : NSObject @end -@implementation Shuffle +@implementation DummySorter +//sorted already - (NSArray *)sort:(NSArray *)ips { - if (ips == nil || ips.count <= 1) { - return ips; - } - int skip = arc4random() % ips.count; - NSMutableArray *ret = [[NSMutableArray alloc] initWithCapacity:ips.count]; - for (int i = 0; i < ips.count; i++) { - NSString *ip = [ips objectAtIndex:((i + skip) % ips.count)]; - [ret addObject:ip]; - } - return ret; + return ips; } @end @@ -114,6 +107,9 @@ - (NSArray *)queryWithDomain:(QNDomain *)domain { if (domain.domain == nil) { return nil; } + if ([QNIP mayBeIpV4:domain.domain]) { + return [NSArray arrayWithObject:domain.domain]; + } NSArray *ips = [self queryInternalWithDomain:domain]; return [_sorter sort:ips]; } @@ -125,13 +121,18 @@ - (NSArray *)queryInternalWithDomain:(QNDomain *)domain { return ret; } } - NSArray *result; + NSMutableArray *result; @synchronized(_cache) { if ([_curNetwork isEqualToInfo:[QNNetworkInfo normal]] && [QNNetworkInfo isNetworkChanged]) { [_cache removeAllObjects]; _resolverStatus = 0; } else { result = [_cache objectForKey:domain.domain]; + if (result != nil && result.count > 1) { + QNRecord *first = [result firstObject]; + [result removeObjectAtIndex:0]; + [result addObject:first]; + } } } @@ -163,7 +164,7 @@ - (NSArray *)queryInternalWithDomain:(QNDomain *)domain { _resolverStatus = bits_set(_resolverStatus, pos); } } else { - NSArray *ret = trimCname(records); + NSMutableArray *ret = trimCname(records); if (_curNetwork == previousNetwork && [previousIp isEqualToString:[QNNetworkInfo getIp]]) { @synchronized(_cache) { [_cache setObject:ret forKey:domain.domain]; @@ -185,13 +186,12 @@ - (instancetype)init:(NSArray *)resolvers networkInfo:(QNNetworkInfo *)netInfo { - (instancetype)init:(NSArray *)resolvers networkInfo:(QNNetworkInfo *)netInfo sorter:(id)sorter { if (self = [super init]) { - _cache = [[NSCache alloc] init]; - _cache.countLimit = 1024; + _cache = [[QNLruCache alloc] init:1024]; _curNetwork = netInfo; _resolvers = [[NSArray alloc] initWithArray:resolvers]; _hosts = [[QNHosts alloc] init]; if (sorter == nil) { - _sorter = [[Shuffle alloc] init]; + _sorter = [[DummySorter alloc] init]; } else { _sorter = sorter; } diff --git a/Example/Pods/HappyDNS/HappyDNS/Common/QNLruCache.h b/Example/Pods/HappyDNS/HappyDNS/Common/QNLruCache.h new file mode 100644 index 0000000..e6c8785 --- /dev/null +++ b/Example/Pods/HappyDNS/HappyDNS/Common/QNLruCache.h @@ -0,0 +1,23 @@ +// +// QNLruCache.h +// HappyDNS +// +// Created by bailong on 16/7/5. +// Copyright © 2016年 Qiniu Cloud Storage. All rights reserved. +// + +#import + +@interface QNLruCache : NSObject + +- (instancetype)init:(NSUInteger)limit; + +- (void)removeAllObjects; + +- (void)removeObjectForKey:(NSString *)key; + +- (id)objectForKey:(NSString *)key; + +- (void)setObject:(id)obj forKey:(NSString *)key; + +@end diff --git a/Example/Pods/HappyDNS/HappyDNS/Common/QNLruCache.m b/Example/Pods/HappyDNS/HappyDNS/Common/QNLruCache.m new file mode 100644 index 0000000..e318959 --- /dev/null +++ b/Example/Pods/HappyDNS/HappyDNS/Common/QNLruCache.m @@ -0,0 +1,90 @@ +// +// QNLruCache.m +// HappyDNS +// +// Created by bailong on 16/7/5. +// Copyright © 2016年 Qiniu Cloud Storage. All rights reserved. +// + +#import "QNLruCache.h" + +@interface QNLruCache () + +@property (nonatomic, readonly) NSUInteger limit; + +@property (nonatomic, readonly) NSMutableDictionary* cache; + +@property (nonatomic, readonly) NSMutableArray* list; + +@end + +@interface _QNElement : NSObject +@property (nonatomic, readonly, strong) NSString* key; +@property (nonatomic, strong) id obj; +- (instancetype)initObject:(id)obj forKey:(NSString*)key; +@end + +@implementation _QNElement + +- (instancetype)initObject:(id)obj forKey:(NSString*)key { + if (self = [super init]) { + _key = key; + _obj = obj; + } + return self; +} + +@end + +@implementation QNLruCache + +- (instancetype)init:(NSUInteger)limit { + if (self = [super init]) { + _limit = limit; + _cache = [NSMutableDictionary new]; + _list = [NSMutableArray new]; + } + return self; +} + +- (void)removeAllObjects { + [_cache removeAllObjects]; + [_list removeAllObjects]; +} + +- (void)removeObjectForKey:(NSString*)key { + _QNElement* obj = [_cache objectForKey:key]; + if (obj == nil) { + return; + } + [_cache removeObjectForKey:key]; + [_list removeObjectIdenticalTo:obj]; +} + +- (id)objectForKey:(NSString*)key { + _QNElement* obj = [_cache objectForKey:key]; + if (obj != nil) { + [_list removeObjectIdenticalTo:obj]; + [_list insertObject:obj atIndex:0]; + } + return obj.obj; +} + +- (void)setObject:(id)obj forKey:(NSString*)key { + _QNElement* old = [_cache objectForKey:key]; + if (old) { + old.obj = obj; + [_list removeObjectIdenticalTo:old]; + [_list insertObject:old atIndex:0]; + return; + } else if (_list.count == _limit) { + old = [_list lastObject]; + [_list removeLastObject]; + [_cache removeObjectForKey:old.key]; + } + _QNElement* newElement = [[_QNElement alloc] initObject:obj forKey:key]; + [_cache setObject:newElement forKey:key]; + [_list insertObject:newElement atIndex:0]; +} + +@end diff --git a/Example/Pods/HappyDNS/HappyDNS/Common/QNResolverDelegate.h b/Example/Pods/HappyDNS/HappyDNS/Common/QNResolverDelegate.h index c1630ba..584b3c8 100644 --- a/Example/Pods/HappyDNS/HappyDNS/Common/QNResolverDelegate.h +++ b/Example/Pods/HappyDNS/HappyDNS/Common/QNResolverDelegate.h @@ -12,6 +12,8 @@ extern const int kQNDomainHijackingCode; extern const int kQNDomainNotOwnCode; extern const int kQNDomainSeverError; +#define QN_DNS_DEFAULT_TIMEOUT 20 //seconds + @class QNDomain; @class QNNetworkInfo; @protocol QNResolverDelegate diff --git a/Example/Pods/HappyDNS/HappyDNS/Http/QNDnspodEnterprise.h b/Example/Pods/HappyDNS/HappyDNS/Http/QNDnspodEnterprise.h index 95fa898..0320bbc 100644 --- a/Example/Pods/HappyDNS/HappyDNS/Http/QNDnspodEnterprise.h +++ b/Example/Pods/HappyDNS/HappyDNS/Http/QNDnspodEnterprise.h @@ -13,7 +13,6 @@ extern const int kQN_ENCRYPT_FAILED; extern const int kQN_DECRYPT_FAILED; @interface QNDnspodEnterprise : NSObject -@property (readonly, strong) NSString *server; - (instancetype)initWithId:(NSString *)userId key:(NSString *)key; @@ -22,5 +21,10 @@ extern const int kQN_DECRYPT_FAILED; key:(NSString *)key server:(NSString *)server; +- (instancetype)initWithId:(NSString *)userId + key:(NSString *)key + server:(NSString *)server + timeout:(NSUInteger)time; + - (NSArray *)query:(QNDomain *)domain networkInfo:(QNNetworkInfo *)netInfo error:(NSError *__autoreleasing *)error; @end diff --git a/Example/Pods/HappyDNS/HappyDNS/Http/QNDnspodEnterprise.m b/Example/Pods/HappyDNS/HappyDNS/Http/QNDnspodEnterprise.m index 75a2199..6d3d60f 100644 --- a/Example/Pods/HappyDNS/HappyDNS/Http/QNDnspodEnterprise.m +++ b/Example/Pods/HappyDNS/HappyDNS/Http/QNDnspodEnterprise.m @@ -19,9 +19,10 @@ const int kQN_DECRYPT_FAILED = -10002; @interface QNDnspodEnterprise () - +@property (readonly, strong) NSString *server; @property (nonatomic, strong) NSString *userId; @property (nonatomic, strong) QNDes *des; +@property (nonatomic) NSUInteger timeout; @end @@ -35,10 +36,18 @@ - (instancetype)initWithId:(NSString *)userId - (instancetype)initWithId:(NSString *)userId key:(NSString *)key server:(NSString *)server { + return [self initWithId:userId key:key server:@"119.29.29.29" timeout:QN_DNS_DEFAULT_TIMEOUT]; +} + +- (instancetype)initWithId:(NSString *)userId + key:(NSString *)key + server:(NSString *)server + timeout:(NSUInteger)time { if (self = [super init]) { _server = server; _userId = userId; _des = [[QNDes alloc] init:[key dataUsingEncoding:NSUTF8StringEncoding]]; + _timeout = time; } return self; } @@ -74,7 +83,7 @@ - (NSArray *)query:(QNDomain *)domain networkInfo:(QNNetworkInfo *)netInfo error return nil; } NSString *url = [NSString stringWithFormat:@"http://%@/d?ttl=1&dn=%@&id=%@", [QNIP ipHost:_server], encrypt, _userId]; - NSURLRequest *urlRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:url]]; + NSURLRequest *urlRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:url] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:_timeout]; NSHTTPURLResponse *response = nil; NSError *httpError = nil; NSData *data = [NSURLConnection sendSynchronousRequest:urlRequest diff --git a/Example/Pods/HappyDNS/HappyDNS/Http/QNDnspodFree.h b/Example/Pods/HappyDNS/HappyDNS/Http/QNDnspodFree.h index b8d303a..506acf5 100644 --- a/Example/Pods/HappyDNS/HappyDNS/Http/QNDnspodFree.h +++ b/Example/Pods/HappyDNS/HappyDNS/Http/QNDnspodFree.h @@ -10,10 +10,11 @@ #import @interface QNDnspodFree : NSObject -@property (readonly, strong) NSString *server; - (NSArray *)query:(QNDomain *)domain networkInfo:(QNNetworkInfo *)netInfo error:(NSError *__autoreleasing *)error; - (instancetype)init; - (instancetype)initWithServer:(NSString *)server; +- (instancetype)initWithServer:(NSString *)server + timeout:(NSUInteger)time; @end diff --git a/Example/Pods/HappyDNS/HappyDNS/Http/QNDnspodFree.m b/Example/Pods/HappyDNS/HappyDNS/Http/QNDnspodFree.m index 5550bd0..6dccec1 100644 --- a/Example/Pods/HappyDNS/HappyDNS/Http/QNDnspodFree.m +++ b/Example/Pods/HappyDNS/HappyDNS/Http/QNDnspodFree.m @@ -11,22 +11,32 @@ #import "QNIP.h" #import "QNRecord.h" +@interface QNDnspodFree () +@property (readonly, nonatomic, strong) NSString *server; +@property (readonly, nonatomic) NSUInteger timeout; +@end + @implementation QNDnspodFree - (instancetype)init { return [self initWithServer:@"119.29.29.29"]; } - (instancetype)initWithServer:(NSString *)server { + return [self initWithServer:@"119.29.29.29" timeout:QN_DNS_DEFAULT_TIMEOUT]; +} + +- (instancetype)initWithServer:(NSString *)server + timeout:(NSUInteger)time { if (self = [super init]) { - // _server = [QNIP adaptiveIp:server]; _server = server; + _timeout = time; } return self; } - (NSArray *)query:(QNDomain *)domain networkInfo:(QNNetworkInfo *)netInfo error:(NSError *__autoreleasing *)error { NSString *url = [NSString stringWithFormat:@"http://%@/d?ttl=1&dn=%@", [QNIP ipHost:_server], domain.domain]; - NSURLRequest *urlRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:url]]; + NSURLRequest *urlRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:url] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:_timeout]; NSHTTPURLResponse *response = nil; NSError *httpError = nil; NSData *data = [NSURLConnection sendSynchronousRequest:urlRequest diff --git a/Example/Pods/HappyDNS/HappyDNS/Local/QNHosts.m b/Example/Pods/HappyDNS/HappyDNS/Local/QNHosts.m index 420b508..899b885 100644 --- a/Example/Pods/HappyDNS/HappyDNS/Local/QNHosts.m +++ b/Example/Pods/HappyDNS/HappyDNS/Local/QNHosts.m @@ -60,6 +60,11 @@ - (NSArray *)query:(QNDomain *)domain networkInfo:(QNNetworkInfo *)netInfo { if (x == nil || x.count == 0) { return nil; } + if (x.count >= 2) { + QNHostsValue *first = [x firstObject]; + [x removeObjectAtIndex:0]; + [x addObject:first]; + } return filter(x, netInfo.provider); } diff --git a/Example/Pods/HappyDNS/HappyDNS/Local/QNResolvUtil.h b/Example/Pods/HappyDNS/HappyDNS/Local/QNResolvUtil.h index a01c2de..56778e6 100644 --- a/Example/Pods/HappyDNS/HappyDNS/Local/QNResolvUtil.h +++ b/Example/Pods/HappyDNS/HappyDNS/Local/QNResolvUtil.h @@ -11,6 +11,6 @@ extern BOOL isV6(NSString *address); -extern int setup_dns_server(void *res, NSString *dns_server); +extern int setup_dns_server(void *res, NSString *dns_server, NSUInteger timeout); #endif /* QNResolv_h */ diff --git a/Example/Pods/HappyDNS/HappyDNS/Local/QNResolvUtil.m b/Example/Pods/HappyDNS/HappyDNS/Local/QNResolvUtil.m index d11197f..fe11763 100644 --- a/Example/Pods/HappyDNS/HappyDNS/Local/QNResolvUtil.m +++ b/Example/Pods/HappyDNS/HappyDNS/Local/QNResolvUtil.m @@ -29,15 +29,18 @@ BOOL isV6(NSString *address) { return strchr(address.UTF8String, ':') != NULL; } -int setup_dns_server(void *_res_state, NSString *dns_server) { +int setup_dns_server(void *_res_state, NSString *dns_server, NSUInteger timeout) { res_state res = (res_state)_res_state; int r = res_ninit(res); if (r != 0) { return r; } + res->retrans = (int)timeout; + res->retry = 1; if (dns_server == nil) { return 0; } + res->options |= RES_IGNTC; union res_sockaddr_union server = {0}; @@ -46,7 +49,7 @@ int setup_dns_server(void *_res_state, NSString *dns_server) { hints.ai_socktype = SOCK_STREAM; int ret = getaddrinfo(dns_server.UTF8String, "53", &hints, &ai); if (ret != 0) { - return -1; + return ret; } int family = ai->ai_family; @@ -57,7 +60,6 @@ int setup_dns_server(void *_res_state, NSString *dns_server) { server.sin = *((struct sockaddr_in *)ai->ai_addr); } -#ifdef __IPHONE_OS_VERSION_MAX_ALLOWED if (![QNIP isIpV6FullySupported] && family == AF_INET) { if ([QNIP isV6]) { freeaddrinfo(ai); @@ -75,7 +77,6 @@ int setup_dns_server(void *_res_state, NSString *dns_server) { server.sin6 = *((struct sockaddr_in6 *)ai->ai_addr); } } -#endif freeaddrinfo(ai); res_setservers(res, &server, 1); diff --git a/Example/Pods/HappyDNS/HappyDNS/Local/QNResolver.h b/Example/Pods/HappyDNS/HappyDNS/Local/QNResolver.h index d03597d..90471ea 100644 --- a/Example/Pods/HappyDNS/HappyDNS/Local/QNResolver.h +++ b/Example/Pods/HappyDNS/HappyDNS/Local/QNResolver.h @@ -11,7 +11,15 @@ @interface QNResolver : NSObject - (NSArray *)query:(QNDomain *)domain networkInfo:(QNNetworkInfo *)netInfo error:(NSError *__autoreleasing *)error; -- (instancetype)initWithAddres:(NSString *)address; + +// @deprecated typo +- (instancetype)initWithAddres:(NSString *)address DEPRECATED_ATTRIBUTE; + +- (instancetype)initWithAddress:(NSString *)address; + +- (instancetype)initWithAddress:(NSString *)address + timeout:(NSUInteger)time; + + (instancetype)systemResolver; + (NSString *)systemDnsServer; @end diff --git a/Example/Pods/HappyDNS/HappyDNS/Local/QNResolver.m b/Example/Pods/HappyDNS/HappyDNS/Local/QNResolver.m index 7a23250..063e360 100644 --- a/Example/Pods/HappyDNS/HappyDNS/Local/QNResolver.m +++ b/Example/Pods/HappyDNS/HappyDNS/Local/QNResolver.m @@ -29,7 +29,8 @@ #endif @interface QNResolver () -@property (nonatomic) NSString *address; +@property (nonatomic, readonly, strong) NSString *address; +@property (nonatomic, readonly) NSUInteger timeout; @end static NSArray *query_ip_v4(res_state res, const char *host) { @@ -79,8 +80,18 @@ @interface QNResolver () @implementation QNResolver - (instancetype)initWithAddres:(NSString *)address { + return [self initWithAddress:address]; +} + +- (instancetype)initWithAddress:(NSString *)address { + return [self initWithAddress:address timeout:QN_DNS_DEFAULT_TIMEOUT]; +} + +- (instancetype)initWithAddress:(NSString *)address + timeout:(NSUInteger)time { if (self = [super init]) { _address = address; + _timeout = time; } return self; } @@ -88,8 +99,11 @@ - (instancetype)initWithAddres:(NSString *)address { - (NSArray *)query:(QNDomain *)domain networkInfo:(QNNetworkInfo *)netInfo error:(NSError *__autoreleasing *)error { struct __res_state res; - int r = setup_dns_server(&res, _address); + int r = setup_dns_server(&res, _address, _timeout); if (r != 0) { + if (error != nil) { + *error = [[NSError alloc] initWithDomain:@"qiniu.dns" code:kQNDomainSeverError userInfo:nil]; + } return nil; } @@ -97,11 +111,14 @@ - (NSArray *)query:(QNDomain *)domain networkInfo:(QNNetworkInfo *)netInfo error if (ret != nil && ret.count != 0) { return ret; } + if (error != nil) { + *error = [[NSError alloc] initWithDomain:@"qiniu.dns" code:NSURLErrorDNSLookupFailed userInfo:nil]; + } return nil; } + (instancetype)systemResolver { - return [[QNResolver alloc] initWithAddres:nil]; + return [[QNResolver alloc] initWithAddress:nil]; } + (NSString *)systemDnsServer { diff --git a/Example/Pods/HappyDNS/HappyDNS/Local/QNTxtResolver.h b/Example/Pods/HappyDNS/HappyDNS/Local/QNTxtResolver.h index a8d7a72..2e5df0e 100644 --- a/Example/Pods/HappyDNS/HappyDNS/Local/QNTxtResolver.h +++ b/Example/Pods/HappyDNS/HappyDNS/Local/QNTxtResolver.h @@ -17,5 +17,7 @@ * * @param address DNS 服务器地址,nil 表示系统的 */ -- (instancetype)initWithAddres:(NSString *)address; +- (instancetype)initWithAddress:(NSString *)address; + +- (instancetype)initWithAddress:(NSString *)address timeout:(NSUInteger)time; @end diff --git a/Example/Pods/HappyDNS/HappyDNS/Local/QNTxtResolver.m b/Example/Pods/HappyDNS/HappyDNS/Local/QNTxtResolver.m index 3de4de5..c2422ee 100644 --- a/Example/Pods/HappyDNS/HappyDNS/Local/QNTxtResolver.m +++ b/Example/Pods/HappyDNS/HappyDNS/Local/QNTxtResolver.m @@ -24,7 +24,8 @@ #import "QNResolver.h" @interface QNTxtResolver () -@property (nonatomic) NSString *address; +@property (nonatomic, readonly, strong) NSString *address; +@property (nonatomic, readonly) NSUInteger timeout; @end static NSArray *query_ip(res_state res, const char *host) { @@ -75,9 +76,14 @@ @interface QNTxtResolver () } @implementation QNTxtResolver -- (instancetype)initWithAddres:(NSString *)address { +- (instancetype)initWithAddress:(NSString *)address { + return [self initWithAddress:address timeout:QN_DNS_DEFAULT_TIMEOUT]; +} + +- (instancetype)initWithAddress:(NSString *)address timeout:(NSUInteger)time { if (self = [super init]) { _address = address; + _timeout = time; } return self; } @@ -85,12 +91,19 @@ - (instancetype)initWithAddres:(NSString *)address { - (NSArray *)query:(QNDomain *)domain networkInfo:(QNNetworkInfo *)netInfo error:(NSError *__autoreleasing *)error { struct __res_state res; - int r = setup_dns_server(&res, _address); + int r = setup_dns_server(&res, _address, _timeout); if (r != 0) { + if (error != nil) { + *error = [[NSError alloc] initWithDomain:@"qiniu.dns" code:kQNDomainSeverError userInfo:nil]; + } return nil; } - return query_ip(&res, [domain.domain cStringUsingEncoding:NSUTF8StringEncoding]); + NSArray *ret = query_ip(&res, [domain.domain cStringUsingEncoding:NSUTF8StringEncoding]); + if (ret == nil && error != nil) { + *error = [[NSError alloc] initWithDomain:@"qiniu.dns" code:NSURLErrorDNSLookupFailed userInfo:nil]; + } + return ret; } @end diff --git a/Example/Pods/HappyDNS/HappyDNS/Util/QNIP.h b/Example/Pods/HappyDNS/HappyDNS/Util/QNIP.h index d21e6cb..d425b68 100644 --- a/Example/Pods/HappyDNS/HappyDNS/Util/QNIP.h +++ b/Example/Pods/HappyDNS/HappyDNS/Util/QNIP.h @@ -25,4 +25,7 @@ extern void qn_nat64(char *buf, int buf_size, uint32_t ipv4_addr); + (NSString *)nat64:(NSString *)ip; + (BOOL)isIpV6FullySupported; + ++ (BOOL)mayBeIpV4:(NSString *)domain; + @end diff --git a/Example/Pods/HappyDNS/HappyDNS/Util/QNIP.m b/Example/Pods/HappyDNS/HappyDNS/Util/QNIP.m index fc28c55..463fda7 100644 --- a/Example/Pods/HappyDNS/HappyDNS/Util/QNIP.m +++ b/Example/Pods/HappyDNS/HappyDNS/Util/QNIP.m @@ -209,4 +209,23 @@ + (BOOL)isIpV6FullySupported { #endif return YES; } + ++ (BOOL)mayBeIpV4:(NSString *)domain { + NSUInteger l = domain.length; + if (l > 15 || l < 7) { + return NO; + } + const char *str = domain.UTF8String; + if (str == nil) { + return NO; + } + + for (const char *p = str; p < str + l; p++) { + if ((*p < '0' || *p > '9') && *p != '.') { + return NO; + } + } + return YES; +} + @end diff --git a/Example/Pods/HappyDNS/LICENSE b/Example/Pods/HappyDNS/LICENSE index ba646be..f635da2 100644 --- a/Example/Pods/HappyDNS/LICENSE +++ b/Example/Pods/HappyDNS/LICENSE @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2014 Qiniu, Ltd. +Copyright (c) 2014-2016 Qiniu, Ltd. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/Example/Pods/Headers/Private/GPUImage/GLProgram.h b/Example/Pods/Headers/Private/GPUImage/GLProgram.h deleted file mode 120000 index 7b517c7..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GLProgram.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GLProgram.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImage.h b/Example/Pods/Headers/Private/GPUImage/GPUImage.h deleted file mode 120000 index bca8af3..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImage.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImage.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImage3x3ConvolutionFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImage3x3ConvolutionFilter.h deleted file mode 120000 index 810319a..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImage3x3ConvolutionFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImage3x3ConvolutionFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImage3x3TextureSamplingFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImage3x3TextureSamplingFilter.h deleted file mode 120000 index 6e5da5e..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImage3x3TextureSamplingFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImage3x3TextureSamplingFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageAdaptiveThresholdFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageAdaptiveThresholdFilter.h deleted file mode 120000 index 547be3d..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageAdaptiveThresholdFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageAdaptiveThresholdFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageAddBlendFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageAddBlendFilter.h deleted file mode 120000 index c0020c2..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageAddBlendFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageAddBlendFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageAlphaBlendFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageAlphaBlendFilter.h deleted file mode 120000 index 8d030c7..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageAlphaBlendFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageAlphaBlendFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageAmatorkaFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageAmatorkaFilter.h deleted file mode 120000 index c357f5e..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageAmatorkaFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageAmatorkaFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageAverageColor.h b/Example/Pods/Headers/Private/GPUImage/GPUImageAverageColor.h deleted file mode 120000 index 702913c..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageAverageColor.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageAverageColor.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageAverageLuminanceThresholdFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageAverageLuminanceThresholdFilter.h deleted file mode 120000 index fabcf09..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageAverageLuminanceThresholdFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageAverageLuminanceThresholdFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageBilateralFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageBilateralFilter.h deleted file mode 120000 index 6498b00..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageBilateralFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageBilateralFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageBoxBlurFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageBoxBlurFilter.h deleted file mode 120000 index 9a4d8f0..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageBoxBlurFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageBoxBlurFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageBrightnessFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageBrightnessFilter.h deleted file mode 120000 index 1b81b6a..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageBrightnessFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageBrightnessFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageBuffer.h b/Example/Pods/Headers/Private/GPUImage/GPUImageBuffer.h deleted file mode 120000 index 220ce7f..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageBuffer.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageBuffer.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageBulgeDistortionFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageBulgeDistortionFilter.h deleted file mode 120000 index ab66632..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageBulgeDistortionFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageBulgeDistortionFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageCGAColorspaceFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageCGAColorspaceFilter.h deleted file mode 120000 index 3086aeb..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageCGAColorspaceFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageCGAColorspaceFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageCannyEdgeDetectionFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageCannyEdgeDetectionFilter.h deleted file mode 120000 index 39e89d5..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageCannyEdgeDetectionFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageCannyEdgeDetectionFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageChromaKeyBlendFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageChromaKeyBlendFilter.h deleted file mode 120000 index cd3ea80..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageChromaKeyBlendFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageChromaKeyBlendFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageChromaKeyFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageChromaKeyFilter.h deleted file mode 120000 index bdecab2..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageChromaKeyFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageChromaKeyFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageClosingFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageClosingFilter.h deleted file mode 120000 index 5b16384..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageClosingFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageClosingFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageColorBlendFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageColorBlendFilter.h deleted file mode 120000 index f72172b..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageColorBlendFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageColorBlendFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageColorBurnBlendFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageColorBurnBlendFilter.h deleted file mode 120000 index a45ffd4..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageColorBurnBlendFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageColorBurnBlendFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageColorDodgeBlendFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageColorDodgeBlendFilter.h deleted file mode 120000 index 10e12cb..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageColorDodgeBlendFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageColorDodgeBlendFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageColorInvertFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageColorInvertFilter.h deleted file mode 120000 index 6961f69..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageColorInvertFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageColorInvertFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageColorMatrixFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageColorMatrixFilter.h deleted file mode 120000 index 4e8d4d5..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageColorMatrixFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageColorMatrixFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageColorPackingFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageColorPackingFilter.h deleted file mode 120000 index b6ce55c..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageColorPackingFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageColorPackingFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageContext.h b/Example/Pods/Headers/Private/GPUImage/GPUImageContext.h deleted file mode 120000 index 40791f1..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageContext.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/iOS/GPUImageContext.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageContrastFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageContrastFilter.h deleted file mode 120000 index 2205749..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageContrastFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageContrastFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageCropFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageCropFilter.h deleted file mode 120000 index d136ed7..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageCropFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageCropFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageCrosshairGenerator.h b/Example/Pods/Headers/Private/GPUImage/GPUImageCrosshairGenerator.h deleted file mode 120000 index 2112ba2..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageCrosshairGenerator.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageCrosshairGenerator.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageCrosshatchFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageCrosshatchFilter.h deleted file mode 120000 index 7706d91..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageCrosshatchFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageCrosshatchFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageDarkenBlendFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageDarkenBlendFilter.h deleted file mode 120000 index 8fdf8cd..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageDarkenBlendFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageDarkenBlendFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageDifferenceBlendFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageDifferenceBlendFilter.h deleted file mode 120000 index 6a41b87..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageDifferenceBlendFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageDifferenceBlendFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageDilationFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageDilationFilter.h deleted file mode 120000 index 1b82a7a..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageDilationFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageDilationFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageDirectionalNonMaximumSuppressionFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageDirectionalNonMaximumSuppressionFilter.h deleted file mode 120000 index c5820fa..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageDirectionalNonMaximumSuppressionFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageDirectionalNonMaximumSuppressionFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageDirectionalSobelEdgeDetectionFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageDirectionalSobelEdgeDetectionFilter.h deleted file mode 120000 index ebc6b5b..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageDirectionalSobelEdgeDetectionFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageDirectionalSobelEdgeDetectionFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageDissolveBlendFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageDissolveBlendFilter.h deleted file mode 120000 index c40a814..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageDissolveBlendFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageDissolveBlendFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageDivideBlendFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageDivideBlendFilter.h deleted file mode 120000 index e21f300..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageDivideBlendFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageDivideBlendFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageEmbossFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageEmbossFilter.h deleted file mode 120000 index 93a8ac2..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageEmbossFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageEmbossFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageErosionFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageErosionFilter.h deleted file mode 120000 index 66c4b92..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageErosionFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageErosionFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageExclusionBlendFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageExclusionBlendFilter.h deleted file mode 120000 index ee6a437..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageExclusionBlendFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageExclusionBlendFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageExposureFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageExposureFilter.h deleted file mode 120000 index cb3ec5e..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageExposureFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageExposureFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageFASTCornerDetectionFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageFASTCornerDetectionFilter.h deleted file mode 120000 index 6f73c3e..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageFASTCornerDetectionFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageFASTCornerDetectionFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageFalseColorFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageFalseColorFilter.h deleted file mode 120000 index 161cc44..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageFalseColorFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageFalseColorFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageFilter.h deleted file mode 120000 index c703694..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageFilterGroup.h b/Example/Pods/Headers/Private/GPUImage/GPUImageFilterGroup.h deleted file mode 120000 index c15625a..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageFilterGroup.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageFilterGroup.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageFilterPipeline.h b/Example/Pods/Headers/Private/GPUImage/GPUImageFilterPipeline.h deleted file mode 120000 index e3d54cd..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageFilterPipeline.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageFilterPipeline.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageFramebuffer.h b/Example/Pods/Headers/Private/GPUImage/GPUImageFramebuffer.h deleted file mode 120000 index 912489a..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageFramebuffer.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageFramebuffer.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageFramebufferCache.h b/Example/Pods/Headers/Private/GPUImage/GPUImageFramebufferCache.h deleted file mode 120000 index 14e9553..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageFramebufferCache.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageFramebufferCache.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageFramework.h b/Example/Pods/Headers/Private/GPUImage/GPUImageFramework.h deleted file mode 120000 index ade56d4..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageFramework.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/iOS/Framework/GPUImageFramework.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageGammaFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageGammaFilter.h deleted file mode 120000 index 127ab2c..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageGammaFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageGammaFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageGaussianBlurFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageGaussianBlurFilter.h deleted file mode 120000 index 2a9ecae..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageGaussianBlurFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageGaussianBlurFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageGaussianBlurPositionFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageGaussianBlurPositionFilter.h deleted file mode 120000 index 423c806..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageGaussianBlurPositionFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageGaussianBlurPositionFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageGaussianSelectiveBlurFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageGaussianSelectiveBlurFilter.h deleted file mode 120000 index 6d41014..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageGaussianSelectiveBlurFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageGaussianSelectiveBlurFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageGlassSphereFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageGlassSphereFilter.h deleted file mode 120000 index e01a6f5..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageGlassSphereFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageGlassSphereFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageGrayscaleFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageGrayscaleFilter.h deleted file mode 120000 index 8332833..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageGrayscaleFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageGrayscaleFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageHSBFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageHSBFilter.h deleted file mode 120000 index df50e69..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageHSBFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageHSBFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageHalftoneFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageHalftoneFilter.h deleted file mode 120000 index f6151b4..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageHalftoneFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageHalftoneFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageHardLightBlendFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageHardLightBlendFilter.h deleted file mode 120000 index e857cd3..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageHardLightBlendFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageHardLightBlendFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageHarrisCornerDetectionFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageHarrisCornerDetectionFilter.h deleted file mode 120000 index cf78593..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageHarrisCornerDetectionFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageHarrisCornerDetectionFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageHazeFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageHazeFilter.h deleted file mode 120000 index 5b2806e..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageHazeFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageHazeFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageHighPassFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageHighPassFilter.h deleted file mode 120000 index f5063f1..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageHighPassFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageHighPassFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageHighlightShadowFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageHighlightShadowFilter.h deleted file mode 120000 index 33329bd..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageHighlightShadowFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageHighlightShadowFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageHistogramEqualizationFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageHistogramEqualizationFilter.h deleted file mode 120000 index 8a2721b..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageHistogramEqualizationFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageHistogramEqualizationFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageHistogramFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageHistogramFilter.h deleted file mode 120000 index b2f9767..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageHistogramFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageHistogramFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageHistogramGenerator.h b/Example/Pods/Headers/Private/GPUImage/GPUImageHistogramGenerator.h deleted file mode 120000 index 03c93a1..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageHistogramGenerator.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageHistogramGenerator.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageHoughTransformLineDetector.h b/Example/Pods/Headers/Private/GPUImage/GPUImageHoughTransformLineDetector.h deleted file mode 120000 index 2d5da6a..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageHoughTransformLineDetector.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageHoughTransformLineDetector.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageHueBlendFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageHueBlendFilter.h deleted file mode 120000 index 97d05aa..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageHueBlendFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageHueBlendFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageHueFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageHueFilter.h deleted file mode 120000 index 62c976c..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageHueFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageHueFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageJFAVoronoiFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageJFAVoronoiFilter.h deleted file mode 120000 index f02faeb..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageJFAVoronoiFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageJFAVoronoiFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageKuwaharaFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageKuwaharaFilter.h deleted file mode 120000 index e64abda..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageKuwaharaFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageKuwaharaFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageKuwaharaRadius3Filter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageKuwaharaRadius3Filter.h deleted file mode 120000 index 3e2aec8..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageKuwaharaRadius3Filter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageKuwaharaRadius3Filter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageLanczosResamplingFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageLanczosResamplingFilter.h deleted file mode 120000 index b036cbb..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageLanczosResamplingFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageLanczosResamplingFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageLaplacianFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageLaplacianFilter.h deleted file mode 120000 index d663c47..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageLaplacianFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageLaplacianFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageLevelsFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageLevelsFilter.h deleted file mode 120000 index 2d92e6b..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageLevelsFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageLevelsFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageLightenBlendFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageLightenBlendFilter.h deleted file mode 120000 index 425d16c..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageLightenBlendFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageLightenBlendFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageLineGenerator.h b/Example/Pods/Headers/Private/GPUImage/GPUImageLineGenerator.h deleted file mode 120000 index 5a99911..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageLineGenerator.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageLineGenerator.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageLinearBurnBlendFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageLinearBurnBlendFilter.h deleted file mode 120000 index f471fdb..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageLinearBurnBlendFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageLinearBurnBlendFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageLocalBinaryPatternFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageLocalBinaryPatternFilter.h deleted file mode 120000 index 93395da..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageLocalBinaryPatternFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageLocalBinaryPatternFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageLookupFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageLookupFilter.h deleted file mode 120000 index 0ea51d7..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageLookupFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageLookupFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageLowPassFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageLowPassFilter.h deleted file mode 120000 index 59aca2a..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageLowPassFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageLowPassFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageLuminanceRangeFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageLuminanceRangeFilter.h deleted file mode 120000 index 9855a2a..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageLuminanceRangeFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageLuminanceRangeFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageLuminanceThresholdFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageLuminanceThresholdFilter.h deleted file mode 120000 index 0b1478a..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageLuminanceThresholdFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageLuminanceThresholdFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageLuminosity.h b/Example/Pods/Headers/Private/GPUImage/GPUImageLuminosity.h deleted file mode 120000 index c20086f..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageLuminosity.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageLuminosity.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageLuminosityBlendFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageLuminosityBlendFilter.h deleted file mode 120000 index 19ef857..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageLuminosityBlendFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageLuminosityBlendFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageMaskFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageMaskFilter.h deleted file mode 120000 index 29e6989..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageMaskFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageMaskFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageMedianFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageMedianFilter.h deleted file mode 120000 index 7e68c25..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageMedianFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageMedianFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageMissEtikateFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageMissEtikateFilter.h deleted file mode 120000 index a0afc5b..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageMissEtikateFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageMissEtikateFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageMonochromeFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageMonochromeFilter.h deleted file mode 120000 index 8c4201d..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageMonochromeFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageMonochromeFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageMosaicFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageMosaicFilter.h deleted file mode 120000 index 8f8a328..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageMosaicFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageMosaicFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageMotionBlurFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageMotionBlurFilter.h deleted file mode 120000 index f2e2b8e..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageMotionBlurFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageMotionBlurFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageMotionDetector.h b/Example/Pods/Headers/Private/GPUImage/GPUImageMotionDetector.h deleted file mode 120000 index 8c5b0e1..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageMotionDetector.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageMotionDetector.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageMovie.h b/Example/Pods/Headers/Private/GPUImage/GPUImageMovie.h deleted file mode 120000 index 4d6e879..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageMovie.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageMovie.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageMovieComposition.h b/Example/Pods/Headers/Private/GPUImage/GPUImageMovieComposition.h deleted file mode 120000 index 9359814..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageMovieComposition.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageMovieComposition.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageMovieWriter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageMovieWriter.h deleted file mode 120000 index 0981109..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageMovieWriter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/iOS/GPUImageMovieWriter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageMultiplyBlendFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageMultiplyBlendFilter.h deleted file mode 120000 index 0b39ea1..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageMultiplyBlendFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageMultiplyBlendFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageNobleCornerDetectionFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageNobleCornerDetectionFilter.h deleted file mode 120000 index e4ea499..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageNobleCornerDetectionFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageNobleCornerDetectionFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageNonMaximumSuppressionFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageNonMaximumSuppressionFilter.h deleted file mode 120000 index b5f7957..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageNonMaximumSuppressionFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageNonMaximumSuppressionFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageNormalBlendFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageNormalBlendFilter.h deleted file mode 120000 index 5d0b343..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageNormalBlendFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageNormalBlendFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageOpacityFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageOpacityFilter.h deleted file mode 120000 index 1bcca48..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageOpacityFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageOpacityFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageOpeningFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageOpeningFilter.h deleted file mode 120000 index b68bb06..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageOpeningFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageOpeningFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageOutput.h b/Example/Pods/Headers/Private/GPUImage/GPUImageOutput.h deleted file mode 120000 index dcb6fab..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageOutput.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageOutput.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageOverlayBlendFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageOverlayBlendFilter.h deleted file mode 120000 index 34b88fb..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageOverlayBlendFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageOverlayBlendFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageParallelCoordinateLineTransformFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageParallelCoordinateLineTransformFilter.h deleted file mode 120000 index 8f0d06f..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageParallelCoordinateLineTransformFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageParallelCoordinateLineTransformFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImagePerlinNoiseFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImagePerlinNoiseFilter.h deleted file mode 120000 index 00c2bfe..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImagePerlinNoiseFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImagePerlinNoiseFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImagePicture+TextureSubimage.h b/Example/Pods/Headers/Private/GPUImage/GPUImagePicture+TextureSubimage.h deleted file mode 120000 index 97e1390..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImagePicture+TextureSubimage.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/iOS/GPUImagePicture+TextureSubimage.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImagePicture.h b/Example/Pods/Headers/Private/GPUImage/GPUImagePicture.h deleted file mode 120000 index 9999ee8..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImagePicture.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/iOS/GPUImagePicture.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImagePinchDistortionFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImagePinchDistortionFilter.h deleted file mode 120000 index 561065b..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImagePinchDistortionFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImagePinchDistortionFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImagePixellateFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImagePixellateFilter.h deleted file mode 120000 index 65d5092..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImagePixellateFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImagePixellateFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImagePixellatePositionFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImagePixellatePositionFilter.h deleted file mode 120000 index 06e3b7e..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImagePixellatePositionFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImagePixellatePositionFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImagePoissonBlendFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImagePoissonBlendFilter.h deleted file mode 120000 index c852272..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImagePoissonBlendFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImagePoissonBlendFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImagePolarPixellateFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImagePolarPixellateFilter.h deleted file mode 120000 index 752176d..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImagePolarPixellateFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImagePolarPixellateFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImagePolkaDotFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImagePolkaDotFilter.h deleted file mode 120000 index dba6db1..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImagePolkaDotFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImagePolkaDotFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImagePosterizeFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImagePosterizeFilter.h deleted file mode 120000 index 215ea1b..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImagePosterizeFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImagePosterizeFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImagePrewittEdgeDetectionFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImagePrewittEdgeDetectionFilter.h deleted file mode 120000 index c620cde..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImagePrewittEdgeDetectionFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImagePrewittEdgeDetectionFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageRGBClosingFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageRGBClosingFilter.h deleted file mode 120000 index e958b6d..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageRGBClosingFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageRGBClosingFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageRGBDilationFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageRGBDilationFilter.h deleted file mode 120000 index 406dea3..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageRGBDilationFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageRGBDilationFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageRGBErosionFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageRGBErosionFilter.h deleted file mode 120000 index b0bea95..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageRGBErosionFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageRGBErosionFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageRGBFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageRGBFilter.h deleted file mode 120000 index 64f0f29..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageRGBFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageRGBFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageRGBOpeningFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageRGBOpeningFilter.h deleted file mode 120000 index b08322d..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageRGBOpeningFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageRGBOpeningFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageRawDataInput.h b/Example/Pods/Headers/Private/GPUImage/GPUImageRawDataInput.h deleted file mode 120000 index 3ac1817..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageRawDataInput.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageRawDataInput.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageRawDataOutput.h b/Example/Pods/Headers/Private/GPUImage/GPUImageRawDataOutput.h deleted file mode 120000 index a08dd75..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageRawDataOutput.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageRawDataOutput.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageSaturationBlendFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageSaturationBlendFilter.h deleted file mode 120000 index 128968a..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageSaturationBlendFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageSaturationBlendFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageSaturationFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageSaturationFilter.h deleted file mode 120000 index 9b56c3c..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageSaturationFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageSaturationFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageScreenBlendFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageScreenBlendFilter.h deleted file mode 120000 index c09274d..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageScreenBlendFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageScreenBlendFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageSepiaFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageSepiaFilter.h deleted file mode 120000 index 6af3120..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageSepiaFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageSepiaFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageSharpenFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageSharpenFilter.h deleted file mode 120000 index a736679..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageSharpenFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageSharpenFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageShiTomasiFeatureDetectionFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageShiTomasiFeatureDetectionFilter.h deleted file mode 120000 index 6bfa8c5..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageShiTomasiFeatureDetectionFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageShiTomasiFeatureDetectionFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageSingleComponentGaussianBlurFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageSingleComponentGaussianBlurFilter.h deleted file mode 120000 index dd64250..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageSingleComponentGaussianBlurFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageSingleComponentGaussianBlurFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageSketchFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageSketchFilter.h deleted file mode 120000 index 9aafd15..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageSketchFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageSketchFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageSmoothToonFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageSmoothToonFilter.h deleted file mode 120000 index 8091466..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageSmoothToonFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageSmoothToonFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageSobelEdgeDetectionFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageSobelEdgeDetectionFilter.h deleted file mode 120000 index 019a83d..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageSobelEdgeDetectionFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageSobelEdgeDetectionFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageSoftEleganceFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageSoftEleganceFilter.h deleted file mode 120000 index ae0fe89..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageSoftEleganceFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageSoftEleganceFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageSoftLightBlendFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageSoftLightBlendFilter.h deleted file mode 120000 index ec5c188..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageSoftLightBlendFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageSoftLightBlendFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageSolidColorGenerator.h b/Example/Pods/Headers/Private/GPUImage/GPUImageSolidColorGenerator.h deleted file mode 120000 index 4eb09f8..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageSolidColorGenerator.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageSolidColorGenerator.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageSourceOverBlendFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageSourceOverBlendFilter.h deleted file mode 120000 index 50dee17..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageSourceOverBlendFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageSourceOverBlendFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageSphereRefractionFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageSphereRefractionFilter.h deleted file mode 120000 index 9ebdd7c..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageSphereRefractionFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageSphereRefractionFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageStillCamera.h b/Example/Pods/Headers/Private/GPUImage/GPUImageStillCamera.h deleted file mode 120000 index 52fd54f..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageStillCamera.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageStillCamera.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageStretchDistortionFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageStretchDistortionFilter.h deleted file mode 120000 index 261fca3..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageStretchDistortionFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageStretchDistortionFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageSubtractBlendFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageSubtractBlendFilter.h deleted file mode 120000 index dfc7cb0..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageSubtractBlendFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageSubtractBlendFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageSwirlFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageSwirlFilter.h deleted file mode 120000 index 8409138..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageSwirlFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageSwirlFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageTextureInput.h b/Example/Pods/Headers/Private/GPUImage/GPUImageTextureInput.h deleted file mode 120000 index da1350a..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageTextureInput.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageTextureInput.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageTextureOutput.h b/Example/Pods/Headers/Private/GPUImage/GPUImageTextureOutput.h deleted file mode 120000 index da55e4d..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageTextureOutput.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageTextureOutput.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageThreeInputFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageThreeInputFilter.h deleted file mode 120000 index c3a2659..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageThreeInputFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageThreeInputFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageThresholdEdgeDetectionFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageThresholdEdgeDetectionFilter.h deleted file mode 120000 index 69d9d2c..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageThresholdEdgeDetectionFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageThresholdEdgeDetectionFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageThresholdSketchFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageThresholdSketchFilter.h deleted file mode 120000 index eb97d3b..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageThresholdSketchFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageThresholdSketchFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageThresholdedNonMaximumSuppressionFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageThresholdedNonMaximumSuppressionFilter.h deleted file mode 120000 index 7ccd235..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageThresholdedNonMaximumSuppressionFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageThresholdedNonMaximumSuppressionFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageTiltShiftFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageTiltShiftFilter.h deleted file mode 120000 index 939825c..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageTiltShiftFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageTiltShiftFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageToneCurveFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageToneCurveFilter.h deleted file mode 120000 index 74c0912..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageToneCurveFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageToneCurveFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageToonFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageToonFilter.h deleted file mode 120000 index 19aca50..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageToonFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageToonFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageTransformFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageTransformFilter.h deleted file mode 120000 index 647b8d5..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageTransformFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageTransformFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageTwoInputCrossTextureSamplingFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageTwoInputCrossTextureSamplingFilter.h deleted file mode 120000 index 37e2521..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageTwoInputCrossTextureSamplingFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageTwoInputCrossTextureSamplingFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageTwoInputFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageTwoInputFilter.h deleted file mode 120000 index c5d5ae1..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageTwoInputFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageTwoInputFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageTwoPassFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageTwoPassFilter.h deleted file mode 120000 index 9ee4bf0..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageTwoPassFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageTwoPassFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageTwoPassTextureSamplingFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageTwoPassTextureSamplingFilter.h deleted file mode 120000 index 0bd3775..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageTwoPassTextureSamplingFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageTwoPassTextureSamplingFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageUIElement.h b/Example/Pods/Headers/Private/GPUImage/GPUImageUIElement.h deleted file mode 120000 index cccc685..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageUIElement.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageUIElement.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageUnsharpMaskFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageUnsharpMaskFilter.h deleted file mode 120000 index 0d612ec..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageUnsharpMaskFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageUnsharpMaskFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageVideoCamera.h b/Example/Pods/Headers/Private/GPUImage/GPUImageVideoCamera.h deleted file mode 120000 index e5a2daf..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageVideoCamera.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageVideoCamera.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageView.h b/Example/Pods/Headers/Private/GPUImage/GPUImageView.h deleted file mode 120000 index 47efed9..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageView.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/iOS/GPUImageView.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageVignetteFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageVignetteFilter.h deleted file mode 120000 index 82aeec2..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageVignetteFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageVignetteFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageVoronoiConsumerFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageVoronoiConsumerFilter.h deleted file mode 120000 index 31810f6..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageVoronoiConsumerFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageVoronoiConsumerFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageWeakPixelInclusionFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageWeakPixelInclusionFilter.h deleted file mode 120000 index 851aebf..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageWeakPixelInclusionFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageWeakPixelInclusionFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageWhiteBalanceFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageWhiteBalanceFilter.h deleted file mode 120000 index d2318ca..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageWhiteBalanceFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageWhiteBalanceFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageXYDerivativeFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageXYDerivativeFilter.h deleted file mode 120000 index d6024a3..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageXYDerivativeFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageXYDerivativeFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageZoomBlurFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageZoomBlurFilter.h deleted file mode 120000 index 67da120..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageZoomBlurFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageZoomBlurFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/GPUImage/GPUImageiOSBlurFilter.h b/Example/Pods/Headers/Private/GPUImage/GPUImageiOSBlurFilter.h deleted file mode 120000 index 2bf9dc1..0000000 --- a/Example/Pods/Headers/Private/GPUImage/GPUImageiOSBlurFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageiOSBlurFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/HappyDNS/QNLruCache.h b/Example/Pods/Headers/Private/HappyDNS/QNLruCache.h new file mode 120000 index 0000000..fdd32f1 --- /dev/null +++ b/Example/Pods/Headers/Private/HappyDNS/QNLruCache.h @@ -0,0 +1 @@ +../../../HappyDNS/HappyDNS/Common/QNLruCache.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GLProgram.h b/Example/Pods/Headers/Public/GPUImage/GLProgram.h deleted file mode 120000 index 7b517c7..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GLProgram.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GLProgram.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImage.h b/Example/Pods/Headers/Public/GPUImage/GPUImage.h deleted file mode 120000 index bca8af3..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImage.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImage.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImage3x3ConvolutionFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImage3x3ConvolutionFilter.h deleted file mode 120000 index 810319a..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImage3x3ConvolutionFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImage3x3ConvolutionFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImage3x3TextureSamplingFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImage3x3TextureSamplingFilter.h deleted file mode 120000 index 6e5da5e..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImage3x3TextureSamplingFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImage3x3TextureSamplingFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageAdaptiveThresholdFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageAdaptiveThresholdFilter.h deleted file mode 120000 index 547be3d..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageAdaptiveThresholdFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageAdaptiveThresholdFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageAddBlendFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageAddBlendFilter.h deleted file mode 120000 index c0020c2..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageAddBlendFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageAddBlendFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageAlphaBlendFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageAlphaBlendFilter.h deleted file mode 120000 index 8d030c7..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageAlphaBlendFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageAlphaBlendFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageAmatorkaFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageAmatorkaFilter.h deleted file mode 120000 index c357f5e..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageAmatorkaFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageAmatorkaFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageAverageColor.h b/Example/Pods/Headers/Public/GPUImage/GPUImageAverageColor.h deleted file mode 120000 index 702913c..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageAverageColor.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageAverageColor.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageAverageLuminanceThresholdFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageAverageLuminanceThresholdFilter.h deleted file mode 120000 index fabcf09..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageAverageLuminanceThresholdFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageAverageLuminanceThresholdFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageBilateralFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageBilateralFilter.h deleted file mode 120000 index 6498b00..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageBilateralFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageBilateralFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageBoxBlurFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageBoxBlurFilter.h deleted file mode 120000 index 9a4d8f0..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageBoxBlurFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageBoxBlurFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageBrightnessFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageBrightnessFilter.h deleted file mode 120000 index 1b81b6a..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageBrightnessFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageBrightnessFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageBuffer.h b/Example/Pods/Headers/Public/GPUImage/GPUImageBuffer.h deleted file mode 120000 index 220ce7f..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageBuffer.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageBuffer.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageBulgeDistortionFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageBulgeDistortionFilter.h deleted file mode 120000 index ab66632..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageBulgeDistortionFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageBulgeDistortionFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageCGAColorspaceFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageCGAColorspaceFilter.h deleted file mode 120000 index 3086aeb..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageCGAColorspaceFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageCGAColorspaceFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageCannyEdgeDetectionFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageCannyEdgeDetectionFilter.h deleted file mode 120000 index 39e89d5..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageCannyEdgeDetectionFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageCannyEdgeDetectionFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageChromaKeyBlendFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageChromaKeyBlendFilter.h deleted file mode 120000 index cd3ea80..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageChromaKeyBlendFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageChromaKeyBlendFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageChromaKeyFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageChromaKeyFilter.h deleted file mode 120000 index bdecab2..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageChromaKeyFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageChromaKeyFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageClosingFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageClosingFilter.h deleted file mode 120000 index 5b16384..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageClosingFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageClosingFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageColorBlendFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageColorBlendFilter.h deleted file mode 120000 index f72172b..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageColorBlendFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageColorBlendFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageColorBurnBlendFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageColorBurnBlendFilter.h deleted file mode 120000 index a45ffd4..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageColorBurnBlendFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageColorBurnBlendFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageColorDodgeBlendFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageColorDodgeBlendFilter.h deleted file mode 120000 index 10e12cb..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageColorDodgeBlendFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageColorDodgeBlendFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageColorInvertFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageColorInvertFilter.h deleted file mode 120000 index 6961f69..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageColorInvertFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageColorInvertFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageColorMatrixFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageColorMatrixFilter.h deleted file mode 120000 index 4e8d4d5..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageColorMatrixFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageColorMatrixFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageColorPackingFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageColorPackingFilter.h deleted file mode 120000 index b6ce55c..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageColorPackingFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageColorPackingFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageContext.h b/Example/Pods/Headers/Public/GPUImage/GPUImageContext.h deleted file mode 120000 index 40791f1..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageContext.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/iOS/GPUImageContext.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageContrastFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageContrastFilter.h deleted file mode 120000 index 2205749..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageContrastFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageContrastFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageCropFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageCropFilter.h deleted file mode 120000 index d136ed7..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageCropFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageCropFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageCrosshairGenerator.h b/Example/Pods/Headers/Public/GPUImage/GPUImageCrosshairGenerator.h deleted file mode 120000 index 2112ba2..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageCrosshairGenerator.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageCrosshairGenerator.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageCrosshatchFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageCrosshatchFilter.h deleted file mode 120000 index 7706d91..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageCrosshatchFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageCrosshatchFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageDarkenBlendFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageDarkenBlendFilter.h deleted file mode 120000 index 8fdf8cd..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageDarkenBlendFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageDarkenBlendFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageDifferenceBlendFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageDifferenceBlendFilter.h deleted file mode 120000 index 6a41b87..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageDifferenceBlendFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageDifferenceBlendFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageDilationFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageDilationFilter.h deleted file mode 120000 index 1b82a7a..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageDilationFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageDilationFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageDirectionalNonMaximumSuppressionFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageDirectionalNonMaximumSuppressionFilter.h deleted file mode 120000 index c5820fa..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageDirectionalNonMaximumSuppressionFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageDirectionalNonMaximumSuppressionFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageDirectionalSobelEdgeDetectionFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageDirectionalSobelEdgeDetectionFilter.h deleted file mode 120000 index ebc6b5b..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageDirectionalSobelEdgeDetectionFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageDirectionalSobelEdgeDetectionFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageDissolveBlendFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageDissolveBlendFilter.h deleted file mode 120000 index c40a814..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageDissolveBlendFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageDissolveBlendFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageDivideBlendFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageDivideBlendFilter.h deleted file mode 120000 index e21f300..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageDivideBlendFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageDivideBlendFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageEmbossFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageEmbossFilter.h deleted file mode 120000 index 93a8ac2..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageEmbossFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageEmbossFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageErosionFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageErosionFilter.h deleted file mode 120000 index 66c4b92..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageErosionFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageErosionFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageExclusionBlendFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageExclusionBlendFilter.h deleted file mode 120000 index ee6a437..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageExclusionBlendFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageExclusionBlendFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageExposureFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageExposureFilter.h deleted file mode 120000 index cb3ec5e..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageExposureFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageExposureFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageFASTCornerDetectionFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageFASTCornerDetectionFilter.h deleted file mode 120000 index 6f73c3e..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageFASTCornerDetectionFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageFASTCornerDetectionFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageFalseColorFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageFalseColorFilter.h deleted file mode 120000 index 161cc44..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageFalseColorFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageFalseColorFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageFilter.h deleted file mode 120000 index c703694..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageFilterGroup.h b/Example/Pods/Headers/Public/GPUImage/GPUImageFilterGroup.h deleted file mode 120000 index c15625a..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageFilterGroup.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageFilterGroup.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageFilterPipeline.h b/Example/Pods/Headers/Public/GPUImage/GPUImageFilterPipeline.h deleted file mode 120000 index e3d54cd..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageFilterPipeline.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageFilterPipeline.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageFramebuffer.h b/Example/Pods/Headers/Public/GPUImage/GPUImageFramebuffer.h deleted file mode 120000 index 912489a..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageFramebuffer.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageFramebuffer.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageFramebufferCache.h b/Example/Pods/Headers/Public/GPUImage/GPUImageFramebufferCache.h deleted file mode 120000 index 14e9553..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageFramebufferCache.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageFramebufferCache.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageFramework.h b/Example/Pods/Headers/Public/GPUImage/GPUImageFramework.h deleted file mode 120000 index ade56d4..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageFramework.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/iOS/Framework/GPUImageFramework.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageGammaFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageGammaFilter.h deleted file mode 120000 index 127ab2c..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageGammaFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageGammaFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageGaussianBlurFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageGaussianBlurFilter.h deleted file mode 120000 index 2a9ecae..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageGaussianBlurFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageGaussianBlurFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageGaussianBlurPositionFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageGaussianBlurPositionFilter.h deleted file mode 120000 index 423c806..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageGaussianBlurPositionFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageGaussianBlurPositionFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageGaussianSelectiveBlurFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageGaussianSelectiveBlurFilter.h deleted file mode 120000 index 6d41014..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageGaussianSelectiveBlurFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageGaussianSelectiveBlurFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageGlassSphereFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageGlassSphereFilter.h deleted file mode 120000 index e01a6f5..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageGlassSphereFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageGlassSphereFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageGrayscaleFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageGrayscaleFilter.h deleted file mode 120000 index 8332833..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageGrayscaleFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageGrayscaleFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageHSBFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageHSBFilter.h deleted file mode 120000 index df50e69..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageHSBFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageHSBFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageHalftoneFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageHalftoneFilter.h deleted file mode 120000 index f6151b4..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageHalftoneFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageHalftoneFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageHardLightBlendFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageHardLightBlendFilter.h deleted file mode 120000 index e857cd3..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageHardLightBlendFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageHardLightBlendFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageHarrisCornerDetectionFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageHarrisCornerDetectionFilter.h deleted file mode 120000 index cf78593..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageHarrisCornerDetectionFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageHarrisCornerDetectionFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageHazeFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageHazeFilter.h deleted file mode 120000 index 5b2806e..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageHazeFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageHazeFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageHighPassFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageHighPassFilter.h deleted file mode 120000 index f5063f1..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageHighPassFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageHighPassFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageHighlightShadowFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageHighlightShadowFilter.h deleted file mode 120000 index 33329bd..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageHighlightShadowFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageHighlightShadowFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageHistogramEqualizationFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageHistogramEqualizationFilter.h deleted file mode 120000 index 8a2721b..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageHistogramEqualizationFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageHistogramEqualizationFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageHistogramFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageHistogramFilter.h deleted file mode 120000 index b2f9767..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageHistogramFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageHistogramFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageHistogramGenerator.h b/Example/Pods/Headers/Public/GPUImage/GPUImageHistogramGenerator.h deleted file mode 120000 index 03c93a1..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageHistogramGenerator.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageHistogramGenerator.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageHoughTransformLineDetector.h b/Example/Pods/Headers/Public/GPUImage/GPUImageHoughTransformLineDetector.h deleted file mode 120000 index 2d5da6a..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageHoughTransformLineDetector.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageHoughTransformLineDetector.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageHueBlendFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageHueBlendFilter.h deleted file mode 120000 index 97d05aa..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageHueBlendFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageHueBlendFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageHueFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageHueFilter.h deleted file mode 120000 index 62c976c..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageHueFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageHueFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageJFAVoronoiFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageJFAVoronoiFilter.h deleted file mode 120000 index f02faeb..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageJFAVoronoiFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageJFAVoronoiFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageKuwaharaFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageKuwaharaFilter.h deleted file mode 120000 index e64abda..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageKuwaharaFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageKuwaharaFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageKuwaharaRadius3Filter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageKuwaharaRadius3Filter.h deleted file mode 120000 index 3e2aec8..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageKuwaharaRadius3Filter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageKuwaharaRadius3Filter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageLanczosResamplingFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageLanczosResamplingFilter.h deleted file mode 120000 index b036cbb..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageLanczosResamplingFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageLanczosResamplingFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageLaplacianFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageLaplacianFilter.h deleted file mode 120000 index d663c47..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageLaplacianFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageLaplacianFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageLevelsFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageLevelsFilter.h deleted file mode 120000 index 2d92e6b..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageLevelsFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageLevelsFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageLightenBlendFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageLightenBlendFilter.h deleted file mode 120000 index 425d16c..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageLightenBlendFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageLightenBlendFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageLineGenerator.h b/Example/Pods/Headers/Public/GPUImage/GPUImageLineGenerator.h deleted file mode 120000 index 5a99911..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageLineGenerator.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageLineGenerator.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageLinearBurnBlendFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageLinearBurnBlendFilter.h deleted file mode 120000 index f471fdb..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageLinearBurnBlendFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageLinearBurnBlendFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageLocalBinaryPatternFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageLocalBinaryPatternFilter.h deleted file mode 120000 index 93395da..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageLocalBinaryPatternFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageLocalBinaryPatternFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageLookupFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageLookupFilter.h deleted file mode 120000 index 0ea51d7..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageLookupFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageLookupFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageLowPassFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageLowPassFilter.h deleted file mode 120000 index 59aca2a..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageLowPassFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageLowPassFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageLuminanceRangeFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageLuminanceRangeFilter.h deleted file mode 120000 index 9855a2a..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageLuminanceRangeFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageLuminanceRangeFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageLuminanceThresholdFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageLuminanceThresholdFilter.h deleted file mode 120000 index 0b1478a..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageLuminanceThresholdFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageLuminanceThresholdFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageLuminosity.h b/Example/Pods/Headers/Public/GPUImage/GPUImageLuminosity.h deleted file mode 120000 index c20086f..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageLuminosity.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageLuminosity.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageLuminosityBlendFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageLuminosityBlendFilter.h deleted file mode 120000 index 19ef857..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageLuminosityBlendFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageLuminosityBlendFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageMaskFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageMaskFilter.h deleted file mode 120000 index 29e6989..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageMaskFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageMaskFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageMedianFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageMedianFilter.h deleted file mode 120000 index 7e68c25..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageMedianFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageMedianFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageMissEtikateFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageMissEtikateFilter.h deleted file mode 120000 index a0afc5b..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageMissEtikateFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageMissEtikateFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageMonochromeFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageMonochromeFilter.h deleted file mode 120000 index 8c4201d..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageMonochromeFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageMonochromeFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageMosaicFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageMosaicFilter.h deleted file mode 120000 index 8f8a328..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageMosaicFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageMosaicFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageMotionBlurFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageMotionBlurFilter.h deleted file mode 120000 index f2e2b8e..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageMotionBlurFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageMotionBlurFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageMotionDetector.h b/Example/Pods/Headers/Public/GPUImage/GPUImageMotionDetector.h deleted file mode 120000 index 8c5b0e1..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageMotionDetector.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageMotionDetector.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageMovie.h b/Example/Pods/Headers/Public/GPUImage/GPUImageMovie.h deleted file mode 120000 index 4d6e879..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageMovie.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageMovie.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageMovieComposition.h b/Example/Pods/Headers/Public/GPUImage/GPUImageMovieComposition.h deleted file mode 120000 index 9359814..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageMovieComposition.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageMovieComposition.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageMovieWriter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageMovieWriter.h deleted file mode 120000 index 0981109..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageMovieWriter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/iOS/GPUImageMovieWriter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageMultiplyBlendFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageMultiplyBlendFilter.h deleted file mode 120000 index 0b39ea1..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageMultiplyBlendFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageMultiplyBlendFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageNobleCornerDetectionFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageNobleCornerDetectionFilter.h deleted file mode 120000 index e4ea499..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageNobleCornerDetectionFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageNobleCornerDetectionFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageNonMaximumSuppressionFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageNonMaximumSuppressionFilter.h deleted file mode 120000 index b5f7957..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageNonMaximumSuppressionFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageNonMaximumSuppressionFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageNormalBlendFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageNormalBlendFilter.h deleted file mode 120000 index 5d0b343..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageNormalBlendFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageNormalBlendFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageOpacityFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageOpacityFilter.h deleted file mode 120000 index 1bcca48..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageOpacityFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageOpacityFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageOpeningFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageOpeningFilter.h deleted file mode 120000 index b68bb06..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageOpeningFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageOpeningFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageOutput.h b/Example/Pods/Headers/Public/GPUImage/GPUImageOutput.h deleted file mode 120000 index dcb6fab..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageOutput.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageOutput.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageOverlayBlendFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageOverlayBlendFilter.h deleted file mode 120000 index 34b88fb..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageOverlayBlendFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageOverlayBlendFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageParallelCoordinateLineTransformFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageParallelCoordinateLineTransformFilter.h deleted file mode 120000 index 8f0d06f..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageParallelCoordinateLineTransformFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageParallelCoordinateLineTransformFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImagePerlinNoiseFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImagePerlinNoiseFilter.h deleted file mode 120000 index 00c2bfe..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImagePerlinNoiseFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImagePerlinNoiseFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImagePicture+TextureSubimage.h b/Example/Pods/Headers/Public/GPUImage/GPUImagePicture+TextureSubimage.h deleted file mode 120000 index 97e1390..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImagePicture+TextureSubimage.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/iOS/GPUImagePicture+TextureSubimage.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImagePicture.h b/Example/Pods/Headers/Public/GPUImage/GPUImagePicture.h deleted file mode 120000 index 9999ee8..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImagePicture.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/iOS/GPUImagePicture.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImagePinchDistortionFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImagePinchDistortionFilter.h deleted file mode 120000 index 561065b..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImagePinchDistortionFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImagePinchDistortionFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImagePixellateFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImagePixellateFilter.h deleted file mode 120000 index 65d5092..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImagePixellateFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImagePixellateFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImagePixellatePositionFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImagePixellatePositionFilter.h deleted file mode 120000 index 06e3b7e..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImagePixellatePositionFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImagePixellatePositionFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImagePoissonBlendFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImagePoissonBlendFilter.h deleted file mode 120000 index c852272..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImagePoissonBlendFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImagePoissonBlendFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImagePolarPixellateFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImagePolarPixellateFilter.h deleted file mode 120000 index 752176d..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImagePolarPixellateFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImagePolarPixellateFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImagePolkaDotFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImagePolkaDotFilter.h deleted file mode 120000 index dba6db1..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImagePolkaDotFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImagePolkaDotFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImagePosterizeFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImagePosterizeFilter.h deleted file mode 120000 index 215ea1b..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImagePosterizeFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImagePosterizeFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImagePrewittEdgeDetectionFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImagePrewittEdgeDetectionFilter.h deleted file mode 120000 index c620cde..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImagePrewittEdgeDetectionFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImagePrewittEdgeDetectionFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageRGBClosingFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageRGBClosingFilter.h deleted file mode 120000 index e958b6d..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageRGBClosingFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageRGBClosingFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageRGBDilationFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageRGBDilationFilter.h deleted file mode 120000 index 406dea3..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageRGBDilationFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageRGBDilationFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageRGBErosionFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageRGBErosionFilter.h deleted file mode 120000 index b0bea95..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageRGBErosionFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageRGBErosionFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageRGBFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageRGBFilter.h deleted file mode 120000 index 64f0f29..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageRGBFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageRGBFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageRGBOpeningFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageRGBOpeningFilter.h deleted file mode 120000 index b08322d..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageRGBOpeningFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageRGBOpeningFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageRawDataInput.h b/Example/Pods/Headers/Public/GPUImage/GPUImageRawDataInput.h deleted file mode 120000 index 3ac1817..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageRawDataInput.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageRawDataInput.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageRawDataOutput.h b/Example/Pods/Headers/Public/GPUImage/GPUImageRawDataOutput.h deleted file mode 120000 index a08dd75..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageRawDataOutput.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageRawDataOutput.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageSaturationBlendFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageSaturationBlendFilter.h deleted file mode 120000 index 128968a..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageSaturationBlendFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageSaturationBlendFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageSaturationFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageSaturationFilter.h deleted file mode 120000 index 9b56c3c..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageSaturationFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageSaturationFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageScreenBlendFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageScreenBlendFilter.h deleted file mode 120000 index c09274d..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageScreenBlendFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageScreenBlendFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageSepiaFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageSepiaFilter.h deleted file mode 120000 index 6af3120..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageSepiaFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageSepiaFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageSharpenFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageSharpenFilter.h deleted file mode 120000 index a736679..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageSharpenFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageSharpenFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageShiTomasiFeatureDetectionFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageShiTomasiFeatureDetectionFilter.h deleted file mode 120000 index 6bfa8c5..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageShiTomasiFeatureDetectionFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageShiTomasiFeatureDetectionFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageSingleComponentGaussianBlurFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageSingleComponentGaussianBlurFilter.h deleted file mode 120000 index dd64250..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageSingleComponentGaussianBlurFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageSingleComponentGaussianBlurFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageSketchFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageSketchFilter.h deleted file mode 120000 index 9aafd15..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageSketchFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageSketchFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageSmoothToonFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageSmoothToonFilter.h deleted file mode 120000 index 8091466..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageSmoothToonFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageSmoothToonFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageSobelEdgeDetectionFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageSobelEdgeDetectionFilter.h deleted file mode 120000 index 019a83d..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageSobelEdgeDetectionFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageSobelEdgeDetectionFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageSoftEleganceFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageSoftEleganceFilter.h deleted file mode 120000 index ae0fe89..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageSoftEleganceFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageSoftEleganceFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageSoftLightBlendFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageSoftLightBlendFilter.h deleted file mode 120000 index ec5c188..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageSoftLightBlendFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageSoftLightBlendFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageSolidColorGenerator.h b/Example/Pods/Headers/Public/GPUImage/GPUImageSolidColorGenerator.h deleted file mode 120000 index 4eb09f8..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageSolidColorGenerator.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageSolidColorGenerator.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageSourceOverBlendFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageSourceOverBlendFilter.h deleted file mode 120000 index 50dee17..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageSourceOverBlendFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageSourceOverBlendFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageSphereRefractionFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageSphereRefractionFilter.h deleted file mode 120000 index 9ebdd7c..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageSphereRefractionFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageSphereRefractionFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageStillCamera.h b/Example/Pods/Headers/Public/GPUImage/GPUImageStillCamera.h deleted file mode 120000 index 52fd54f..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageStillCamera.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageStillCamera.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageStretchDistortionFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageStretchDistortionFilter.h deleted file mode 120000 index 261fca3..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageStretchDistortionFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageStretchDistortionFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageSubtractBlendFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageSubtractBlendFilter.h deleted file mode 120000 index dfc7cb0..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageSubtractBlendFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageSubtractBlendFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageSwirlFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageSwirlFilter.h deleted file mode 120000 index 8409138..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageSwirlFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageSwirlFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageTextureInput.h b/Example/Pods/Headers/Public/GPUImage/GPUImageTextureInput.h deleted file mode 120000 index da1350a..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageTextureInput.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageTextureInput.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageTextureOutput.h b/Example/Pods/Headers/Public/GPUImage/GPUImageTextureOutput.h deleted file mode 120000 index da55e4d..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageTextureOutput.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageTextureOutput.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageThreeInputFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageThreeInputFilter.h deleted file mode 120000 index c3a2659..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageThreeInputFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageThreeInputFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageThresholdEdgeDetectionFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageThresholdEdgeDetectionFilter.h deleted file mode 120000 index 69d9d2c..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageThresholdEdgeDetectionFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageThresholdEdgeDetectionFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageThresholdSketchFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageThresholdSketchFilter.h deleted file mode 120000 index eb97d3b..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageThresholdSketchFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageThresholdSketchFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageThresholdedNonMaximumSuppressionFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageThresholdedNonMaximumSuppressionFilter.h deleted file mode 120000 index 7ccd235..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageThresholdedNonMaximumSuppressionFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageThresholdedNonMaximumSuppressionFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageTiltShiftFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageTiltShiftFilter.h deleted file mode 120000 index 939825c..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageTiltShiftFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageTiltShiftFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageToneCurveFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageToneCurveFilter.h deleted file mode 120000 index 74c0912..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageToneCurveFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageToneCurveFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageToonFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageToonFilter.h deleted file mode 120000 index 19aca50..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageToonFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageToonFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageTransformFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageTransformFilter.h deleted file mode 120000 index 647b8d5..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageTransformFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageTransformFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageTwoInputCrossTextureSamplingFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageTwoInputCrossTextureSamplingFilter.h deleted file mode 120000 index 37e2521..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageTwoInputCrossTextureSamplingFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageTwoInputCrossTextureSamplingFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageTwoInputFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageTwoInputFilter.h deleted file mode 120000 index c5d5ae1..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageTwoInputFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageTwoInputFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageTwoPassFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageTwoPassFilter.h deleted file mode 120000 index 9ee4bf0..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageTwoPassFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageTwoPassFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageTwoPassTextureSamplingFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageTwoPassTextureSamplingFilter.h deleted file mode 120000 index 0bd3775..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageTwoPassTextureSamplingFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageTwoPassTextureSamplingFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageUIElement.h b/Example/Pods/Headers/Public/GPUImage/GPUImageUIElement.h deleted file mode 120000 index cccc685..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageUIElement.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageUIElement.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageUnsharpMaskFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageUnsharpMaskFilter.h deleted file mode 120000 index 0d612ec..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageUnsharpMaskFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageUnsharpMaskFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageVideoCamera.h b/Example/Pods/Headers/Public/GPUImage/GPUImageVideoCamera.h deleted file mode 120000 index e5a2daf..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageVideoCamera.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageVideoCamera.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageView.h b/Example/Pods/Headers/Public/GPUImage/GPUImageView.h deleted file mode 120000 index 47efed9..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageView.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/iOS/GPUImageView.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageVignetteFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageVignetteFilter.h deleted file mode 120000 index 82aeec2..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageVignetteFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageVignetteFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageVoronoiConsumerFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageVoronoiConsumerFilter.h deleted file mode 120000 index 31810f6..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageVoronoiConsumerFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageVoronoiConsumerFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageWeakPixelInclusionFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageWeakPixelInclusionFilter.h deleted file mode 120000 index 851aebf..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageWeakPixelInclusionFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageWeakPixelInclusionFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageWhiteBalanceFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageWhiteBalanceFilter.h deleted file mode 120000 index d2318ca..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageWhiteBalanceFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageWhiteBalanceFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageXYDerivativeFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageXYDerivativeFilter.h deleted file mode 120000 index d6024a3..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageXYDerivativeFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageXYDerivativeFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageZoomBlurFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageZoomBlurFilter.h deleted file mode 120000 index 67da120..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageZoomBlurFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageZoomBlurFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/GPUImage/GPUImageiOSBlurFilter.h b/Example/Pods/Headers/Public/GPUImage/GPUImageiOSBlurFilter.h deleted file mode 120000 index 2bf9dc1..0000000 --- a/Example/Pods/Headers/Public/GPUImage/GPUImageiOSBlurFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../GPUImage/framework/Source/GPUImageiOSBlurFilter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/HappyDNS/QNLruCache.h b/Example/Pods/Headers/Public/HappyDNS/QNLruCache.h new file mode 120000 index 0000000..fdd32f1 --- /dev/null +++ b/Example/Pods/Headers/Public/HappyDNS/QNLruCache.h @@ -0,0 +1 @@ +../../../HappyDNS/HappyDNS/Common/QNLruCache.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/KSCrash/KSSystemInfo.h b/Example/Pods/Headers/Public/KSCrash/KSSystemInfo.h new file mode 120000 index 0000000..c7f1236 --- /dev/null +++ b/Example/Pods/Headers/Public/KSCrash/KSSystemInfo.h @@ -0,0 +1 @@ +../../../KSCrash/Source/KSCrash/Recording/KSSystemInfo.h \ No newline at end of file diff --git a/Example/Pods/KSCrash/Source/KSCrash/Recording/KSCrash.m b/Example/Pods/KSCrash/Source/KSCrash/Recording/KSCrash.m index e55f713..38bdd0e 100644 --- a/Example/Pods/KSCrash/Source/KSCrash/Recording/KSCrash.m +++ b/Example/Pods/KSCrash/Source/KSCrash/Recording/KSCrash.m @@ -534,7 +534,7 @@ - (void) applicationWillTerminate //! Project version number for KSCrashFramework. -const double KSCrashFrameworkVersionNumber = 1.60; +const double KSCrashFrameworkVersionNumber = 1.64; //! Project version string for KSCrashFramework. -const unsigned char KSCrashFrameworkVersionString[] = "1.6.0"; +const unsigned char KSCrashFrameworkVersionString[] = "1.6.4"; diff --git a/Example/Pods/KSCrash/Source/KSCrash/Recording/KSCrashReportStore.m b/Example/Pods/KSCrash/Source/KSCrash/Recording/KSCrashReportStore.m index b647962..7af07fe 100644 --- a/Example/Pods/KSCrash/Source/KSCrash/Recording/KSCrashReportStore.m +++ b/Example/Pods/KSCrash/Source/KSCrash/Recording/KSCrashReportStore.m @@ -198,7 +198,7 @@ - (NSDictionary*) reportWithID:(NSString*) reportID return nil; } NSMutableDictionary* recrashReport = [self readReport:[self pathToRecrashReportWithID:reportID] error:nil]; - [crashReport setObjectIfNotNil:recrashReport forKey:@KSCrashField_RecrashReport]; + [crashReport ksc_setObjectIfNotNil:recrashReport forKey:@KSCrashField_RecrashReport]; return crashReport; } @@ -327,7 +327,7 @@ - (NSMutableDictionary*) fixupCrashReport:(NSDictionary*) report NSMutableDictionary* mutableReport = [report mutableCopy]; NSMutableDictionary* mutableInfo = [[report objectForKey:@KSCrashField_Report] mutableCopy]; - [mutableReport setObjectIfNotNil:mutableInfo forKey:@KSCrashField_Report]; + [mutableReport ksc_setObjectIfNotNil:mutableInfo forKey:@KSCrashField_Report]; // Timestamp gets stored as a unix timestamp. Convert it to rfc3339. [self convertTimestamp:@KSCrashField_Timestamp inReport:mutableInfo]; @@ -341,9 +341,9 @@ - (NSMutableDictionary*) fixupCrashReport:(NSDictionary*) report inReport:mutableReport]; NSMutableDictionary* crashReport = [[report objectForKey:@KSCrashField_Crash] mutableCopy]; - [mutableReport setObjectIfNotNil:crashReport forKey:@KSCrashField_Crash]; + [mutableReport ksc_setObjectIfNotNil:crashReport forKey:@KSCrashField_Crash]; KSCrashDoctor* doctor = [KSCrashDoctor doctor]; - [crashReport setObjectIfNotNil:[doctor diagnoseCrash:report] forKey:@KSCrashField_Diagnosis]; + [crashReport ksc_setObjectIfNotNil:[doctor diagnoseCrash:report] forKey:@KSCrashField_Diagnosis]; [self symbolicateField:@[@"threads", @"backtrace", @"contents", @"symbol_name"] inReport:crashReport okIfNotFound:YES]; [self symbolicateField:@[@"error", @"cpp_exception", @"name"] inReport:crashReport okIfNotFound:YES]; @@ -378,7 +378,7 @@ - (void) mergeDictWithKey:(NSString*) srcKey return; } - [report setObjectIfNotNil:[srcDict mergedInto:dstDict] forKey:dstKey]; + [report ksc_setObjectIfNotNil:[srcDict mergedInto:dstDict] forKey:dstKey]; [report removeObjectForKey:srcKey]; } diff --git a/Example/Pods/KSCrash/Source/KSCrash/Recording/KSSystemInfo.h b/Example/Pods/KSCrash/Source/KSCrash/Recording/KSSystemInfo.h index f6d2e0d..643993e 100644 --- a/Example/Pods/KSCrash/Source/KSCrash/Recording/KSSystemInfo.h +++ b/Example/Pods/KSCrash/Source/KSCrash/Recording/KSSystemInfo.h @@ -53,6 +53,7 @@ #define KSSystemField_SystemName "system_name" #define KSSystemField_SystemVersion "system_version" #define KSSystemField_TimeZone "time_zone" +#define KSSystemField_BuildType "build_type" #import diff --git a/Example/Pods/KSCrash/Source/KSCrash/Recording/KSSystemInfo.m b/Example/Pods/KSCrash/Source/KSCrash/Recording/KSSystemInfo.m index e81e07c..0b66c90 100644 --- a/Example/Pods/KSCrash/Source/KSCrash/Recording/KSSystemInfo.m +++ b/Example/Pods/KSCrash/Source/KSCrash/Recording/KSSystemInfo.m @@ -280,6 +280,81 @@ + (BOOL) isJailbroken return ksdl_imageNamed("MobileSubstrate", false) != UINT32_MAX; } +/** Check if the current build is a debug build. + * + * @return YES if the app was built in debug mode. + */ ++ (BOOL) isDebugBuild +{ +#ifdef DEBUG + return YES; +#else + return NO; +#endif +} + +/** Check if this code is built for the simulator. + * + * @return YES if this is a simulator build. + */ ++ (BOOL) isSimulatorBuild +{ +#if TARGET_OS_SIMULATOR + return YES; +#else + return NO; +#endif +} + +/** Check if the current build is a "testing" build. + * This is useful for checking if the app was released through Testflight. + * + * @return YES if this is a testing build. + */ ++ (BOOL) isTestBuild +{ + NSURL* receiptUrl = [NSBundle mainBundle].appStoreReceiptURL; + return [receiptUrl.path.lastPathComponent isEqualToString:@"sandboxReceipt"]; +} + +/** Check if the app has an app store receipt. + * Only apps released through the app store will have a receipt. + * + * @return YES if there is an app store receipt. + */ ++ (BOOL) hasAppStoreReceipt +{ + NSString* receiptPath = [NSBundle mainBundle].appStoreReceiptURL.path; + if(receiptPath == nil) + { + return NO; + } + BOOL isAppStoreReceipt = [receiptPath.lastPathComponent isEqualToString:@"receipt"]; + BOOL receiptExists = [[NSFileManager defaultManager] fileExistsAtPath:receiptPath]; + + return isAppStoreReceipt && receiptExists; +} + ++ (NSString*) buildType +{ + if([KSSystemInfo isSimulatorBuild]) + { + return @"simulator"; + } + if([KSSystemInfo isDebugBuild]) + { + return @"debug"; + } + if([KSSystemInfo isTestBuild]) + { + return @"test"; + } + if([KSSystemInfo hasAppStoreReceipt]) + { + return @"app store"; + } + return @"unknown"; +} // ============================================================================ #pragma mark - API - @@ -294,10 +369,10 @@ + (NSDictionary*) systemInfo const struct mach_header* header = _dyld_get_image_header(0); #if KSCRASH_HAS_UIDEVICE - [sysInfo safeSetObject:[UIDevice currentDevice].systemName forKey:@KSSystemField_SystemName]; - [sysInfo safeSetObject:[UIDevice currentDevice].systemVersion forKey:@KSSystemField_SystemVersion]; + [sysInfo ksc_safeSetObject:[UIDevice currentDevice].systemName forKey:@KSSystemField_SystemName]; + [sysInfo ksc_safeSetObject:[UIDevice currentDevice].systemVersion forKey:@KSSystemField_SystemVersion]; #else - [sysInfo safeSetObject:@"Mac OS" forKey:@KSSystemField_SystemName]; + [sysInfo ksc_safeSetObject:@"Mac OS" forKey:@KSSystemField_SystemName]; NSOperatingSystemVersion version =[NSProcessInfo processInfo].operatingSystemVersion; NSString* systemVersion; if(version.patchVersion == 0) @@ -308,35 +383,36 @@ + (NSDictionary*) systemInfo { systemVersion = [NSString stringWithFormat:@"%ld.%ld.%ld", version.majorVersion, version.minorVersion, version.patchVersion]; } - [sysInfo safeSetObject:systemVersion forKey:@KSSystemField_SystemVersion]; + [sysInfo ksc_safeSetObject:systemVersion forKey:@KSSystemField_SystemVersion]; #endif - [sysInfo safeSetObject:[self stringSysctl:@"hw.machine"] forKey:@KSSystemField_Machine]; - [sysInfo safeSetObject:[self stringSysctl:@"hw.model"] forKey:@KSSystemField_Model]; - [sysInfo safeSetObject:[self stringSysctl:@"kern.version"] forKey:@KSSystemField_KernelVersion]; - [sysInfo safeSetObject:[self stringSysctl:@"kern.osversion"] forKey:@KSSystemField_OSVersion]; - [sysInfo safeSetObject:[NSNumber numberWithBool:[self isJailbroken]] forKey:@KSSystemField_Jailbroken]; - [sysInfo safeSetObject:[self dateSysctl:@"kern.boottime"] forKey:@KSSystemField_BootTime]; - [sysInfo safeSetObject:[NSDate date] forKey:@KSSystemField_AppStartTime]; - [sysInfo safeSetObject:[self executablePath] forKey:@KSSystemField_ExecutablePath]; - [sysInfo safeSetObject:[infoDict objectForKey:@"CFBundleExecutable"] forKey:@KSSystemField_Executable]; - [sysInfo safeSetObject:[infoDict objectForKey:@"CFBundleIdentifier"] forKey:@KSSystemField_BundleID]; - [sysInfo safeSetObject:[infoDict objectForKey:@"CFBundleName"] forKey:@KSSystemField_BundleName]; - [sysInfo safeSetObject:[infoDict objectForKey:@"CFBundleVersion"] forKey:@KSSystemField_BundleVersion]; - [sysInfo safeSetObject:[infoDict objectForKey:@"CFBundleShortVersionString"] forKey:@KSSystemField_BundleShortVersion]; - [sysInfo safeSetObject:[self appUUID] forKey:@KSSystemField_AppUUID]; - [sysInfo safeSetObject:[self currentCPUArch] forKey:@KSSystemField_CPUArch]; - [sysInfo safeSetObject:[self int32Sysctl:@"hw.cputype"] forKey:@KSSystemField_CPUType]; - [sysInfo safeSetObject:[self int32Sysctl:@"hw.cpusubtype"] forKey:@KSSystemField_CPUSubType]; - [sysInfo safeSetObject:[NSNumber numberWithInt:header->cputype] forKey:@KSSystemField_BinaryCPUType]; - [sysInfo safeSetObject:[NSNumber numberWithInt:header->cpusubtype] forKey:@KSSystemField_BinaryCPUSubType]; - [sysInfo safeSetObject:[[NSTimeZone localTimeZone] abbreviation] forKey:@KSSystemField_TimeZone]; - [sysInfo safeSetObject:[NSProcessInfo processInfo].processName forKey:@KSSystemField_ProcessName]; - [sysInfo safeSetObject:[NSNumber numberWithInt:[NSProcessInfo processInfo].processIdentifier] forKey:@KSSystemField_ProcessID]; - [sysInfo safeSetObject:[NSNumber numberWithInt:getppid()] forKey:@KSSystemField_ParentProcessID]; - [sysInfo safeSetObject:[self deviceAndAppHash] forKey:@KSSystemField_DeviceAppHash]; + [sysInfo ksc_safeSetObject:[self stringSysctl:@"hw.machine"] forKey:@KSSystemField_Machine]; + [sysInfo ksc_safeSetObject:[self stringSysctl:@"hw.model"] forKey:@KSSystemField_Model]; + [sysInfo ksc_safeSetObject:[self stringSysctl:@"kern.version"] forKey:@KSSystemField_KernelVersion]; + [sysInfo ksc_safeSetObject:[self stringSysctl:@"kern.osversion"] forKey:@KSSystemField_OSVersion]; + [sysInfo ksc_safeSetObject:[NSNumber numberWithBool:[self isJailbroken]] forKey:@KSSystemField_Jailbroken]; + [sysInfo ksc_safeSetObject:[self dateSysctl:@"kern.boottime"] forKey:@KSSystemField_BootTime]; + [sysInfo ksc_safeSetObject:[NSDate date] forKey:@KSSystemField_AppStartTime]; + [sysInfo ksc_safeSetObject:[self executablePath] forKey:@KSSystemField_ExecutablePath]; + [sysInfo ksc_safeSetObject:[infoDict objectForKey:@"CFBundleExecutable"] forKey:@KSSystemField_Executable]; + [sysInfo ksc_safeSetObject:[infoDict objectForKey:@"CFBundleIdentifier"] forKey:@KSSystemField_BundleID]; + [sysInfo ksc_safeSetObject:[infoDict objectForKey:@"CFBundleName"] forKey:@KSSystemField_BundleName]; + [sysInfo ksc_safeSetObject:[infoDict objectForKey:@"CFBundleVersion"] forKey:@KSSystemField_BundleVersion]; + [sysInfo ksc_safeSetObject:[infoDict objectForKey:@"CFBundleShortVersionString"] forKey:@KSSystemField_BundleShortVersion]; + [sysInfo ksc_safeSetObject:[self appUUID] forKey:@KSSystemField_AppUUID]; + [sysInfo ksc_safeSetObject:[self currentCPUArch] forKey:@KSSystemField_CPUArch]; + [sysInfo ksc_safeSetObject:[self int32Sysctl:@"hw.cputype"] forKey:@KSSystemField_CPUType]; + [sysInfo ksc_safeSetObject:[self int32Sysctl:@"hw.cpusubtype"] forKey:@KSSystemField_CPUSubType]; + [sysInfo ksc_safeSetObject:[NSNumber numberWithInt:header->cputype] forKey:@KSSystemField_BinaryCPUType]; + [sysInfo ksc_safeSetObject:[NSNumber numberWithInt:header->cpusubtype] forKey:@KSSystemField_BinaryCPUSubType]; + [sysInfo ksc_safeSetObject:[[NSTimeZone localTimeZone] abbreviation] forKey:@KSSystemField_TimeZone]; + [sysInfo ksc_safeSetObject:[NSProcessInfo processInfo].processName forKey:@KSSystemField_ProcessName]; + [sysInfo ksc_safeSetObject:[NSNumber numberWithInt:[NSProcessInfo processInfo].processIdentifier] forKey:@KSSystemField_ProcessID]; + [sysInfo ksc_safeSetObject:[NSNumber numberWithInt:getppid()] forKey:@KSSystemField_ParentProcessID]; + [sysInfo ksc_safeSetObject:[self deviceAndAppHash] forKey:@KSSystemField_DeviceAppHash]; + [sysInfo ksc_safeSetObject:[KSSystemInfo buildType] forKey:@KSSystemField_BuildType]; NSDictionary* memory = [NSDictionary dictionaryWithObject:[self int64Sysctl:@"hw.memsize"] forKey:@KSSystemField_Size]; - [sysInfo safeSetObject:memory forKey:@KSSystemField_Memory]; + [sysInfo ksc_safeSetObject:memory forKey:@KSSystemField_Memory]; return sysInfo; } diff --git a/Example/Pods/KSCrash/Source/KSCrash/Recording/Tools/KSSafeCollections.h b/Example/Pods/KSCrash/Source/KSCrash/Recording/Tools/KSSafeCollections.h index 4c37df4..f2332cb 100644 --- a/Example/Pods/KSCrash/Source/KSCrash/Recording/Tools/KSSafeCollections.h +++ b/Example/Pods/KSCrash/Source/KSCrash/Recording/Tools/KSSafeCollections.h @@ -30,25 +30,25 @@ @interface NSMutableArray (KSSafeCollections) -- (void) addObjectIfNotNil:(id) object; +- (void) ksc_addObjectIfNotNil:(id) object; -- (void) safeAddObject:(id) object; +- (void) ksc_safeAddObject:(id) object; -- (void) insertObjectIfNotNil:(id) object atIndex:(NSUInteger) index; +- (void) ksc_insertObjectIfNotNil:(id) object atIndex:(NSUInteger) index; -- (void) safeInsertObject:(id) object atIndex:(NSUInteger) index; +- (void) ksc_safeInsertObject:(id) object atIndex:(NSUInteger) index; @end @interface NSMutableDictionary (KSSafeCollections) -- (void) setObjectIfNotNil:(id) object forKey:(id) key; +- (void) ksc_setObjectIfNotNil:(id) object forKey:(id) key; -- (void) safeSetObject:(id) object forKey:(id) key; +- (void) ksc_safeSetObject:(id) object forKey:(id) key; -- (void) setValueIfNotNil:(id) value forKey:(NSString*) key; +- (void) ksc_setValueIfNotNil:(id) value forKey:(NSString*) key; -- (void) safeSetValue:(id) value forKey:(NSString*) key; +- (void) ksc_safeSetValue:(id) value forKey:(NSString*) key; @end diff --git a/Example/Pods/KSCrash/Source/KSCrash/Recording/Tools/KSSafeCollections.m b/Example/Pods/KSCrash/Source/KSCrash/Recording/Tools/KSSafeCollections.m index 0f8d163..29e5d57 100644 --- a/Example/Pods/KSCrash/Source/KSCrash/Recording/Tools/KSSafeCollections.m +++ b/Example/Pods/KSCrash/Source/KSCrash/Recording/Tools/KSSafeCollections.m @@ -35,7 +35,7 @@ static inline id safeValue(id value) @implementation NSMutableArray (KSSafeCollections) -- (void) addObjectIfNotNil:(id) object +- (void) ksc_addObjectIfNotNil:(id) object { if(object != nil) { @@ -43,12 +43,12 @@ - (void) addObjectIfNotNil:(id) object } } -- (void) safeAddObject:(id) object +- (void) ksc_safeAddObject:(id) object { [self addObject:safeValue(object)]; } -- (void) insertObjectIfNotNil:(id) object atIndex:(NSUInteger) index +- (void) ksc_insertObjectIfNotNil:(id) object atIndex:(NSUInteger) index { if(object != nil) { @@ -56,7 +56,7 @@ - (void) insertObjectIfNotNil:(id) object atIndex:(NSUInteger) index } } -- (void) safeInsertObject:(id) object atIndex:(NSUInteger) index +- (void) ksc_safeInsertObject:(id) object atIndex:(NSUInteger) index { [self insertObject:safeValue(object) atIndex:index]; } @@ -65,7 +65,7 @@ - (void) safeInsertObject:(id) object atIndex:(NSUInteger) index @implementation NSMutableDictionary (KSSafeCollections) -- (void) setObjectIfNotNil:(id) object forKey:(id) key +- (void) ksc_setObjectIfNotNil:(id) object forKey:(id) key { if(object != nil && key != nil) { @@ -73,12 +73,12 @@ - (void) setObjectIfNotNil:(id) object forKey:(id) key } } -- (void) safeSetObject:(id) object forKey:(id) key +- (void) ksc_safeSetObject:(id) object forKey:(id) key { [self setObject:safeValue(object) forKey:key]; } -- (void) setValueIfNotNil:(id) value forKey:(NSString*) key +- (void) ksc_setValueIfNotNil:(id) value forKey:(NSString*) key { if(value != nil && key != nil) { @@ -86,7 +86,7 @@ - (void) setValueIfNotNil:(id) value forKey:(NSString*) key } } -- (void) safeSetValue:(id) value forKey:(NSString*) key +- (void) ksc_safeSetValue:(id) value forKey:(NSString*) key { [self setValue:safeValue(value) forKey:key]; } diff --git a/Example/Pods/KSCrash/Source/KSCrash/Reporting/Filters/KSCrashReportFilterAppleFmt.m b/Example/Pods/KSCrash/Source/KSCrash/Reporting/Filters/KSCrashReportFilterAppleFmt.m index 61bdb1a..492476c 100644 --- a/Example/Pods/KSCrash/Source/KSCrash/Reporting/Filters/KSCrashReportFilterAppleFmt.m +++ b/Example/Pods/KSCrash/Source/KSCrash/Reporting/Filters/KSCrashReportFilterAppleFmt.m @@ -115,6 +115,7 @@ @implementation KSCrashReportFilterAppleFmt + (void) initialize { g_dateFormatter = [[NSDateFormatter alloc] init]; + [g_dateFormatter setLocale:[NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]]; [g_dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss.SSS ZZZ"]; NSArray* armOrder = [NSArray arrayWithObjects: @@ -195,7 +196,7 @@ - (void) filterReports:(NSArray*) reports { if([self majorVersion:report] == kExpectedMajorVersion) { - [filteredReports addObjectIfNotNil:[self toAppleFormat:report]]; + [filteredReports ksc_addObjectIfNotNil:[self toAppleFormat:report]]; } } diff --git a/Example/Pods/Local Podspecs/PLCameraStreamingKit.podspec.json b/Example/Pods/Local Podspecs/PLCameraStreamingKit.podspec.json index c280660..3684889 100644 --- a/Example/Pods/Local Podspecs/PLCameraStreamingKit.podspec.json +++ b/Example/Pods/Local Podspecs/PLCameraStreamingKit.podspec.json @@ -1,6 +1,6 @@ { "name": "PLCameraStreamingKit", - "version": "1.8.0", + "version": "1.8.1", "summary": "Pili iOS camera streaming framework via RTMP.", "homepage": "https://github.com/pili-engineering/PLCameraStreamingKit", "license": "Apache License, Version 2.0", @@ -9,7 +9,7 @@ }, "source": { "git": "https://github.com/pili-engineering/PLCameraStreamingKit.git", - "tag": "v1.8.0" + "tag": "v1.8.1" }, "platforms": { "ios": "7.0" @@ -19,10 +19,7 @@ "source_files": "Pod/Library/include/PLCameraStreamingKit/*.h", "dependencies": { "PLStreamingKit": [ - "~> 1.2.0" - ], - "GPUImage": [ - "0.1.7" + "1.2.5" ] }, "frameworks": [ diff --git a/Example/Pods/Manifest.lock b/Example/Pods/Manifest.lock index 743daa2..2443217 100644 --- a/Example/Pods/Manifest.lock +++ b/Example/Pods/Manifest.lock @@ -1,49 +1,48 @@ PODS: - - GPUImage (0.1.7) - - HappyDNS (0.3.5) - - KSCrash (1.6.0): - - KSCrash/Installations (= 1.6.0) - - KSCrash/Installations (1.6.0): + - HappyDNS (0.3.7) + - KSCrash (1.6.4): + - KSCrash/Installations (= 1.6.4) + - KSCrash/Installations (1.6.4): - KSCrash/Recording - KSCrash/Reporting - - KSCrash/no-arc (1.6.0) - - KSCrash/Recording (1.6.0): + - KSCrash/no-arc (1.6.4) + - KSCrash/Recording (1.6.4): - KSCrash/no-arc - - KSCrash/Reporting (1.6.0): + - KSCrash/Reporting (1.6.4): - KSCrash/Recording - - KSCrash/Reporting/Filters (= 1.6.0) - - KSCrash/Reporting/MessageUI (= 1.6.0) - - KSCrash/Reporting/Sinks (= 1.6.0) - - KSCrash/Reporting/Tools (= 1.6.0) - - KSCrash/Reporting/Filters (1.6.0): + - KSCrash/Reporting/Filters (= 1.6.4) + - KSCrash/Reporting/MessageUI (= 1.6.4) + - KSCrash/Reporting/Sinks (= 1.6.4) + - KSCrash/Reporting/Tools (= 1.6.4) + - KSCrash/Reporting/Filters (1.6.4): - KSCrash/Recording - - KSCrash/Reporting/Filters/Alert (= 1.6.0) - - KSCrash/Reporting/Filters/AppleFmt (= 1.6.0) - - KSCrash/Reporting/Filters/Base (= 1.6.0) - - KSCrash/Reporting/Filters/Basic (= 1.6.0) - - KSCrash/Reporting/Filters/GZip (= 1.6.0) - - KSCrash/Reporting/Filters/JSON (= 1.6.0) - - KSCrash/Reporting/Filters/Sets (= 1.6.0) - - KSCrash/Reporting/Filters/Stringify (= 1.6.0) - - KSCrash/Reporting/Filters/Tools (= 1.6.0) - - KSCrash/Reporting/Filters/Alert (1.6.0): + - KSCrash/Reporting/Filters/Alert (= 1.6.4) + - KSCrash/Reporting/Filters/AppleFmt (= 1.6.4) + - KSCrash/Reporting/Filters/Base (= 1.6.4) + - KSCrash/Reporting/Filters/Basic (= 1.6.4) + - KSCrash/Reporting/Filters/GZip (= 1.6.4) + - KSCrash/Reporting/Filters/JSON (= 1.6.4) + - KSCrash/Reporting/Filters/Sets (= 1.6.4) + - KSCrash/Reporting/Filters/Stringify (= 1.6.4) + - KSCrash/Reporting/Filters/Tools (= 1.6.4) + - KSCrash/Reporting/Filters/Alert (1.6.4): - KSCrash/Recording - KSCrash/Reporting/Filters/Base - - KSCrash/Reporting/Filters/AppleFmt (1.6.0): + - KSCrash/Reporting/Filters/AppleFmt (1.6.4): - KSCrash/Recording - KSCrash/Reporting/Filters/Base - - KSCrash/Reporting/Filters/Base (1.6.0): + - KSCrash/Reporting/Filters/Base (1.6.4): - KSCrash/Recording - - KSCrash/Reporting/Filters/Basic (1.6.0): + - KSCrash/Reporting/Filters/Basic (1.6.4): - KSCrash/Recording - KSCrash/Reporting/Filters/Base - - KSCrash/Reporting/Filters/GZip (1.6.0): + - KSCrash/Reporting/Filters/GZip (1.6.4): - KSCrash/Recording - KSCrash/Reporting/Filters/Base - - KSCrash/Reporting/Filters/JSON (1.6.0): + - KSCrash/Reporting/Filters/JSON (1.6.4): - KSCrash/Recording - KSCrash/Reporting/Filters/Base - - KSCrash/Reporting/Filters/Sets (1.6.0): + - KSCrash/Reporting/Filters/Sets (1.6.4): - KSCrash/Recording - KSCrash/Reporting/Filters/AppleFmt - KSCrash/Reporting/Filters/Base @@ -51,34 +50,32 @@ PODS: - KSCrash/Reporting/Filters/GZip - KSCrash/Reporting/Filters/JSON - KSCrash/Reporting/Filters/Stringify - - KSCrash/Reporting/Filters/Stringify (1.6.0): + - KSCrash/Reporting/Filters/Stringify (1.6.4): - KSCrash/Recording - KSCrash/Reporting/Filters/Base - - KSCrash/Reporting/Filters/Tools (1.6.0): + - KSCrash/Reporting/Filters/Tools (1.6.4): - KSCrash/Recording - - KSCrash/Reporting/MessageUI (1.6.0): + - KSCrash/Reporting/MessageUI (1.6.4): - KSCrash/Recording - - KSCrash/Reporting/Sinks (1.6.0): + - KSCrash/Reporting/Sinks (1.6.4): - KSCrash/Recording - KSCrash/Reporting/Filters - KSCrash/Reporting/Tools - - KSCrash/Reporting/Tools (1.6.0): + - KSCrash/Reporting/Tools (1.6.4): - KSCrash/Recording - - pili-librtmp (1.0.3) - - PLCameraStreamingKit (1.8.0): - - GPUImage (= 0.1.7) - - PLCameraStreamingKit/precompiled (= 1.8.0) - - PLStreamingKit (~> 1.2.0) - - PLCameraStreamingKit/precompiled (1.8.0): - - GPUImage (= 0.1.7) - - PLStreamingKit (~> 1.2.0) - - PLStreamingKit (1.2.4): + - pili-librtmp (1.0.3.1) + - PLCameraStreamingKit (1.8.1): + - PLCameraStreamingKit/precompiled (= 1.8.1) + - PLStreamingKit (= 1.2.5) + - PLCameraStreamingKit/precompiled (1.8.1): + - PLStreamingKit (= 1.2.5) + - PLStreamingKit (1.2.5): - HappyDNS - - pili-librtmp - - PLStreamingKit/precompiled (= 1.2.4) - - PLStreamingKit/precompiled (1.2.4): + - pili-librtmp (= 1.0.3.1) + - PLStreamingKit/precompiled (= 1.2.5) + - PLStreamingKit/precompiled (1.2.5): - HappyDNS - - pili-librtmp + - pili-librtmp (= 1.0.3.1) DEPENDENCIES: - KSCrash @@ -89,11 +86,10 @@ EXTERNAL SOURCES: :path: ../ SPEC CHECKSUMS: - GPUImage: 733a5f0fab92df9de1c37ba9df520a833ccb406d - HappyDNS: 6f8cf46fa7c0b98a6591fe8ecb2e08d9907a6e8b - KSCrash: 73fc2bcec2b6bcd1d948d200e11904c39d532a0e - pili-librtmp: 50faa17413c635cca5ceccb1a8f9f6acc6587a45 - PLCameraStreamingKit: 03b4bce4218edeb18a0060d8849eb5d7b2af4a5d - PLStreamingKit: c8574decbacb981e36e5b95314c991a3b5d02125 + HappyDNS: ec476226e119bf4766b74975ec4873f6fa078cf2 + KSCrash: d8e5ad6724d26a48e8ca483028c65e33d92e7834 + pili-librtmp: 0adf2516f4b5958b3cb079a4c3d4f6a4a9f49ce9 + PLCameraStreamingKit: 12b672cbef9ba15bbb28ec543fb77f7d4cea66dc + PLStreamingKit: 4b46739689d020b8e2eb755827ec86447c0291b7 COCOAPODS: 0.39.0 diff --git a/Example/Pods/PLStreamingKit/Pod/Library/include/PLStreamingKit/PLAudioStreamingConfiguration.h b/Example/Pods/PLStreamingKit/Pod/Library/include/PLStreamingKit/PLAudioStreamingConfiguration.h index 154e3fe..a386372 100644 --- a/Example/Pods/PLStreamingKit/Pod/Library/include/PLStreamingKit/PLAudioStreamingConfiguration.h +++ b/Example/Pods/PLStreamingKit/Pod/Library/include/PLStreamingKit/PLAudioStreamingConfiguration.h @@ -21,7 +21,7 @@ /** @brief 音频编码的采样率, 默认为设备采样率 */ -@property (nonatomic, assign) NSUInteger encodedAudioSampleRate; +@property (nonatomic, assign) PLStreamingAudioSampleRate encodedAudioSampleRate; /** @brief 音频编码比特率,默认为 96kbps @@ -41,9 +41,16 @@ */ + (instancetype)configurationWithAudioQuality:(NSString *)quality; +/** + @brief 提供一个能支持的编码采样率 + @param sampleRate 想要的编码采样率 + @return PLStreamingAudioSampleRate 如果能支持 sampleRate,则原样返回 sampleRate。如果不能支持 sampleRate,返回一个比 sampleRate 大但最接近 sampleRate 的可以被支持的编码采样率。 + */ ++ (PLStreamingAudioSampleRate)mostSimilarSupportedValueWithEncodedAudioSampleRate:(NSUInteger)sampleRate; + - (instancetype)initWithAudioQuality:(NSString *)quality; -- (instancetype)initWithEncodedAudioSampleRate:(NSUInteger)sampleRate +- (instancetype)initWithEncodedAudioSampleRate:(PLStreamingAudioSampleRate)sampleRate encodedNumberOfChannels:(UInt32)numberOfChannels audioBitRate:(PLStreamingAudioBitRate)audioBitRate; diff --git a/Example/Pods/PLStreamingKit/Pod/Library/include/PLStreamingKit/PLStreamingSession.h b/Example/Pods/PLStreamingKit/Pod/Library/include/PLStreamingKit/PLStreamingSession.h index f48f3bf..b886e00 100644 --- a/Example/Pods/PLStreamingKit/Pod/Library/include/PLStreamingKit/PLStreamingSession.h +++ b/Example/Pods/PLStreamingKit/Pod/Library/include/PLStreamingKit/PLStreamingSession.h @@ -396,7 +396,7 @@ @method startWithCompleted: @abstract 开始推流 - @param handler 流连接的结果会通过该回调方法返回,携带是否已连接成功的布尔值 + @param handler 流连接的结果会通过该回调方法返回,携带是否已连接成功的布尔值,如果流连接成功将返回 YES,如果连接失败或当前流正在连接或已经连接将返回 NO @discussion 当 Streaming Session 创建并初始化好后(务必确认 stream 对象已设置好),就可以调用此方法开始推流。当要停止一次推流但是并不销毁 Streaming Session 对象时,调用 -stop 方法即可,便于在需要重新推流时再重新调用该方法进行推流。如果确认不再使用对应 stream 进行推流,可以调用 -destroy 销毁 @@ -418,7 +418,7 @@ @method restartWithCompleted: @abstract 重新开始推流 - @param handler 流连接的结果会通过该回调方法返回,携带是否已连接成功的布尔值 + @param handler 流连接的结果会通过该回调方法返回,携带是否已连接成功的布尔值,如果流连接成功将返回 YES,如果连接失败或当前流正在连接或已经连接将返回 NO @discussion 当 Streaming Session 处于正在推流过程中,由于业务原因(如用户网络从 4G 切到 WIFI)需要快速重新推流时,可以调用此方法重新推流。当要停止一次推流但是并不销毁 Streaming Session 对象时,调用 -stop 方法即可,便于在需要重新推流时再重新调用该方法进行推流。如果确认不再使用对应 stream 进行推流,可以调用 -destroy 销毁 @@ -703,6 +703,14 @@ */ @property (nonatomic, assign) int sendTimeout; +/*! + @property autoReconnectEnable + @abstract 自动断线重连开关。 + + @discussion 默认为NO,用户可在 -streamingSession:didDisconnectWithError: 方法中添加断线重连处理逻辑;若开启此开关,则一旦 -streamingSession:didDisconnectWithError: 方法被触发,则意味着网络已不可用,无法自动重连。 + */ +@property (nonatomic, assign) BOOL autoReconnectEnable; + @end #pragma mark - Category (SendingBuffer) diff --git a/Example/Pods/PLStreamingKit/Pod/Library/include/PLStreamingKit/PLTypeDefines.h b/Example/Pods/PLStreamingKit/Pod/Library/include/PLStreamingKit/PLTypeDefines.h index c77f33a..5456544 100644 --- a/Example/Pods/PLStreamingKit/Pod/Library/include/PLStreamingKit/PLTypeDefines.h +++ b/Example/Pods/PLStreamingKit/Pod/Library/include/PLStreamingKit/PLTypeDefines.h @@ -27,6 +27,8 @@ typedef NS_ENUM(NSUInteger, PLStreamState) { PLStreamStateDisconnecting, /// PLStreamStateDisconnected 已断开连接状态 PLStreamStateDisconnected, + /// PLStreamStateAutoReconnecting 正在自动重连中状态 + PLStreamStateAutoReconnecting, /// PLStreamStateError 错误状态 PLStreamStateError }; @@ -216,6 +218,26 @@ extern NSString *kPLAudioStreamingQualityHigh2; */ extern NSString *kPLAudioStreamingQualityHigh3; +#pragma mark - Audio SampleRate + +/*! + @typedef PLStreamingAudioSampleRate + @abstract 音频编码采样率。 + + @constant PLStreamingAudioSampleRate_48000Hz 48000Hz 音频编码采样率 + @constant PLStreamingAudioSampleRate_44100Hz 44100Hz 音频编码采样率 + @constant PLStreamingAudioSampleRate_22050Hz 22050Hz 音频编码采样率 + @constant PLStreamingAudioSampleRate_11025Hz 11025Hz 音频编码采样率 + + @since v1.0.0 + */ +typedef NS_ENUM(NSUInteger, PLStreamingAudioSampleRate) { + PLStreamingAudioSampleRate_48000Hz = 48000, + PLStreamingAudioSampleRate_44100Hz = 44100, + PLStreamingAudioSampleRate_22050Hz = 22050, + PLStreamingAudioSampleRate_11025Hz = 11025, +}; + #pragma mark - Audio BitRate /*! diff --git a/Example/Pods/PLStreamingKit/Pod/Library/lib/libPLStreamingKit.a b/Example/Pods/PLStreamingKit/Pod/Library/lib/libPLStreamingKit.a index 4cb1357..e9289dd 100644 Binary files a/Example/Pods/PLStreamingKit/Pod/Library/lib/libPLStreamingKit.a and b/Example/Pods/PLStreamingKit/Pod/Library/lib/libPLStreamingKit.a differ diff --git a/Example/Pods/PLStreamingKit/README.md b/Example/Pods/PLStreamingKit/README.md index b854e1b..09d34b5 100644 --- a/Example/Pods/PLStreamingKit/README.md +++ b/Example/Pods/PLStreamingKit/README.md @@ -440,11 +440,21 @@ PLStreamingKit 使用 HeaderDoc 注释来做文档支持。 ## 版本历史 +- 1.2.5 ([Release Notes](https://github.com/pili-engineering/PLStreamingKit/blob/master/ReleaseNotes/release-notes-1.2.5.md) && [API Diffs](https://github.com/pili-engineering/PLStreamingKit/blob/master/APIDiffs/api-diffs-1.2.5.md)) + - 功能 + - 新增自动重连功能 + - 缺陷 + - 修复 `-pushAudioBuffer:asbd:` 方法当 `asbd` 为 `NULL` 时 crash 的问题 + - 修复 iOS 8 下的音频编码内存泄露问题 + - 修复 `-restartWithCompleted:` 方法可能导致的播放没有画面和声音的问题 + - 修复网络丢包率高时可能导致的 DNS 无法正常超时返回的问题 + - 修复偶尔出现的死锁问题 + - 修复时间戳生成时机不当可能导致的音画不同步问题 - 1.2.4 ([Release Notes](https://github.com/pili-engineering/PLStreamingKit/blob/master/ReleaseNotes/release-notes-1.2.4.md) && [API Diffs](https://github.com/pili-engineering/PLStreamingKit/blob/master/APIDiffs/api-diffs-1.2.4.md)) -- 功能 - - 新增对每次传入非 1024 frame PCM数据进行编码的功能 -- 缺陷 - - 修复音视频时间戳偶尔出现的非单调递增的缺陷 + - 功能 + - 兼容传入非 1024 帧的 PCM 数据 + - 缺陷 + - 修复音视频时间戳偶尔出现的非单调递增的缺陷 - 1.2.3 ([Release Notes](https://github.com/pili-engineering/PLStreamingKit/blob/master/ReleaseNotes/release-notes-1.2.3.md) && [API Diffs](https://github.com/pili-engineering/PLStreamingKit/blob/master/APIDiffs/api-diffs-1.2.3.md)) - 功能 - 更新底层依赖的 pili-librtmp 到 v1.0.3 diff --git a/Example/Pods/Pods.xcodeproj/project.pbxproj b/Example/Pods/Pods.xcodeproj/project.pbxproj index 7bc6024..5fae34b 100644 --- a/Example/Pods/Pods.xcodeproj/project.pbxproj +++ b/Example/Pods/Pods.xcodeproj/project.pbxproj @@ -13,57 +13,14 @@ 003B3C8CAF8E9940D888935B688EC426 fileRef - C76D48A5390C630D21014306D9B36D2C + FBA8C9CA43DFB625CF5FFE11A92FA56D isa PBXBuildFile - 00E780EF336D0ACD8C5FE942FCEACE8A - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageView.h - path - framework/Source/iOS/GPUImageView.h - sourceTree - <group> - - 00FB28D79393EC20A2F25A64B8525A0A - - fileRef - F3CD7A531BA1CB65AAAD66E9E0596A11 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - 00FC81AA910E690E411E69B34FAC2FDC fileRef - FC51E98F2892A8B7D4A0B7DFA3204C0E - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 00FDD3728AF408C5A07D18AA8BDF31F7 - - fileRef - 7DB4D1585B8674316AE82EBDB08A3F64 + D042550E27A3CBB2CBBF2B9F26CAFBCD isa PBXBuildFile settings @@ -74,7 +31,7 @@ - 0108B2923568D5F52A297499664190D0 + 0111E4F257EB23DFBF5B7EDB7D1C483B includeInIndex 1 @@ -83,101 +40,30 @@ lastKnownFileType sourcecode.c.h name - KSJSONCodec.h - path - Source/KSCrash/Recording/Tools/KSJSONCodec.h - sourceTree - <group> - - 010C6A9C0D535A158DB0F65AD8702D88 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageCrosshatchFilter.m + PLStreamingEnv.h path - framework/Source/GPUImageCrosshatchFilter.m + Pod/Library/include/PLStreamingKit/PLStreamingEnv.h sourceTree <group> 01434075420B08CC4232C4AB1051C309 fileRef - EB1E79E9289153F787F0F6EA7916CCB6 + D14BCA28A88A03D224BA4EC31712B074 isa PBXBuildFile 019B49E790C4D71906C23D9AFA00E19E fileRef - 445DB472F621B4D299934C121AF73C3D - isa - PBXBuildFile - - 01CFCAB496272154BD35A16B8489C90E - - fileRef - 43FE53C32091A843DD606138EC3B1917 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 020815670BF0BF0DC12009D55D3B1F1E - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageErosionFilter.h - path - framework/Source/GPUImageErosionFilter.h - sourceTree - <group> - - 020BC6A465F176D7217ACB0F225437C1 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageLineGenerator.h - path - framework/Source/GPUImageLineGenerator.h - sourceTree - <group> - - 020F7726A2B519C580FCFEFFAC969EC2 - - fileRef - 85491FF2A5A02D2FF8C8EE5B1E47EE95 + 302418E9A06DE2BB5949E46B80F51EB2 isa PBXBuildFile - settings - - ATTRIBUTES - - Public - - 02361FE8DA7908DBDD6F7850C4EC7771 fileRef - 38E2E975DD4981181B23AFB0C3E153C3 + 1AE95FD8C1A3733F920D8729850537AC isa PBXBuildFile settings @@ -188,41 +74,22 @@ - 02EA67B6FFE9280DD67D5AC6D4796AA0 - - fileRef - AAE2ACDD7706DEE3EEE2EB0307344DA2 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 02F19F3E650F604270E07D50B6B5F681 + 024EAEF8C47CA27492618A6CD9AADFA3 includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.objc + sourcecode.c.h name - GPUImageTransformFilter.m + KSCrashReportSinkVictory.h path - framework/Source/GPUImageTransformFilter.m + Source/KSCrash/Reporting/Sinks/KSCrashReportSinkVictory.h sourceTree <group> - 02F759167922229872A47ACEDDED19C2 - - fileRef - 53C62ECAEC6E6618FB7F7AC65EEA6554 - isa - PBXBuildFile - - 02FBC8C109FD847E789F54C4B5629861 + 02A2D24C8A22A2855FB051894E3195FF includeInIndex 1 @@ -231,70 +98,64 @@ lastKnownFileType sourcecode.c.objc name - QNNetworkInfo.m + QNHijackingDetectWrapper.m path - HappyDNS/Common/QNNetworkInfo.m + HappyDNS/Local/QNHijackingDetectWrapper.m sourceTree <group> - 02FDAF375EB3E6CC323CE38B4168F706 + 02C58D33C33D721EFA737E386CBEFAB6 - includeInIndex - 1 + buildActionMask + 2147483647 + files + + 03BFB761D233CE224E4170A1930543BA + 795BB14AD47981246892AA62DD59FA49 + FECD1F03A2D94CACEB45FC2EB8D2980A + A8B22F1E569BA1994FBD65927C3BFCE6 + 7CC1EDBCEDFE8AD3EC747B3475DEF5F9 + 297A2B5A4ADE0BCDEA72FA61E84C5A53 + 5D57ED4ACC1A4C58DC0370588694129B + C07C5E1138112DF79B633F9AE1E2024E + C672A24209E5C2D6CD4D89DCD863D3B7 + D8BFC934E0D207330E102DB3DA0FBD27 + 65DA8DEB4FB992F34D92BFA5A2BEAA31 + 76F8A17901F86C1B3FDF3429552183D5 + F146F8BB03AC0A4B978B2F23D7308884 + 6359AE12EF0DED3159A256BA5A861BB9 + FD810FE8A4FABB34DC423CC84D8FBAD4 + CA3826F28C2830700CDDDE4AC1AF7168 + F2089FC1D4189616DCFD478906530D0E + isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - KSCrashSentry.h - path - Source/KSCrash/Recording/Sentry/KSCrashSentry.h - sourceTree - <group> + PBXHeadersBuildPhase + runOnlyForDeploymentPostprocessing + 0 - 030142977D56D4465D94D5843449F108 + 02F759167922229872A47ACEDDED19C2 - includeInIndex - 1 + fileRef + 1F5B48D03BFCC68E8AD2663FF0618C10 isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageCGAColorspaceFilter.m - path - framework/Source/GPUImageCGAColorspaceFilter.m - sourceTree - <group> + PBXBuildFile - 0339FB6F3BBFA4F1F82E07287E9D9733 + 03A0198C7DDF684523ECACC6F6948684 includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.objc + sourcecode.c.h name - GPUImageTwoInputCrossTextureSamplingFilter.m + QNDnsManager.h path - framework/Source/GPUImageTwoInputCrossTextureSamplingFilter.m + HappyDNS/Common/QNDnsManager.h sourceTree <group> - 036C0A9668F773C8124E6E25A6DA5EFF - - fileRef - 1F6783F6458C6EC2F0CB14EF08B9B4E6 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 03791D79410C8D722D68ED292906E16C + 03A50A3E20FF406998556798DE263389 includeInIndex 1 @@ -302,15 +163,17 @@ PBXFileReference lastKnownFileType sourcecode.c.h + name + HappyDNS.h path - GPUImage-prefix.pch + HappyDNS/HappyDNS.h sourceTree <group> - 03B7484C5441570A6A90771CF380CBA2 + 03BFB761D233CE224E4170A1930543BA fileRef - FAED007BECE0B836FC537A62ED4D1347 + 03A50A3E20FF406998556798DE263389 isa PBXBuildFile settings @@ -321,47 +184,21 @@ - 03F7C1126725C54F25AED330CD33A163 + 04C6B40F044473E6199E93D4B7D9A556 includeInIndex 1 isa PBXFileReference + lastKnownFileType + sourcecode.c.h name - KSCrashSentry_MachException.c + SwiftStrings.h path - Source/KSCrash/Recording/Sentry/KSCrashSentry_MachException.c + Source/KSCrash/swift/SwiftStrings.h sourceTree <group> - 04A8C84B69E261EBE1545F1133ABA4B5 - - fileRef - 86AA185065F2DB289DC3A70BEB1DB432 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 051C24A0A8CF6271BD0343C068741AC4 - - fileRef - 9A32D8064BF7A730927C86A2CD1B4989 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - 052A17875CB827423D627183396CEB60 buildSettings @@ -433,7 +270,7 @@ 05A72392577F649090F73A642D766CDF fileRef - 4EE51E906DF18B5F1F431D6E07FDA41F + 28AFBCE7086BD4C74425C3879B8F5E4A isa PBXBuildFile settings @@ -444,40 +281,54 @@ - 05B142027E0B85B92B0752E3226AB56C + 05ABE81BE121DA3B51ABED6660183169 - fileRef - E61300BD2988486AA4DB476E6133A2E0 + includeInIndex + 1 isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + KSCrashSentry_MachException.h + path + Source/KSCrash/Recording/Sentry/KSCrashSentry_MachException.h + sourceTree + <group> 05C3B8BD697727908D761BD327423E31 fileRef - DC39FCBF566EB870672C37AB60D24F8B + D417DAF346F5823F67C8803E533DD64B isa PBXBuildFile - 05F6DC7FB12E2B82C2E755D2F43F5CDE + 05D3EAF5C41A5CC5E0F80243CD20D350 - fileRef - 4AD276C8A023361AEDF489B55EE8F95E + children + + A386BCB117AA02F47D572DD3BEF479B7 + 25D87252C3FDCD5ED78368FC749A741A + 50EB9596823914695B4699885CB9C741 + 43DF60903AF1550F7DA2D2E3427D0251 + 0111E4F257EB23DFBF5B7EDB7D1C483B + 35B0511F8F6A16D47B643808356A1DE3 + EC1D43AEFE2AB6E85EAFEFE3731028CD + D9035932D4E1EAD491BBE4FC491F78D1 + 63B1FB6D04AB8C566E0BB9BEA9F406E5 + 5FC00098567E6CC1C4C66CBC740A2CA7 + EF84FE4E101AB8D63C77975BE1263A71 + isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - + PBXGroup + name + PLStreamingKit + path + PLStreamingKit + sourceTree + <group> - 06313BB6250FEA7E0C499FFA8482BF49 + 0601F0DBA97C904F0A99A5E0E73D791B includeInIndex 1 @@ -486,16 +337,16 @@ lastKnownFileType sourcecode.c.h name - GPUImageDirectionalNonMaximumSuppressionFilter.h + KSCrashSentry_User.h path - framework/Source/GPUImageDirectionalNonMaximumSuppressionFilter.h + Source/KSCrash/Recording/Sentry/KSCrashSentry_User.h sourceTree <group> 063D2D3647A9F5A5EB0A037AB1C44FEE fileRef - 4ED2ED9BFCF3548C819DADF3F784C753 + F20C0C7AD3AB75CBA58C48D811DA2E8C isa PBXBuildFile settings @@ -506,17 +357,32 @@ + 064972A492CC18F33E91E826AAA8FE9D + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + KSJSONCodec.h + path + Source/KSCrash/Recording/Tools/KSJSONCodec.h + sourceTree + <group> + 065B9FB6199340EC0652CA62BF0DFCCA fileRef - CB9E685E7A4D0BFDCA358AD4BAFAFB68 + 2205FD19244DB330985041B99D3B1CFE isa PBXBuildFile 0676209BA375FCFAC64363186B627D96 fileRef - 7EF0483D74FB12B9D760809B32FC625B + 91B586173B88C39A05F7BC9A1B158C7B isa PBXBuildFile settings @@ -527,61 +393,40 @@ - 06AFB28EF2382C1C1B53637AF320A7F1 + 072388CE2D585FE6C118392E1EFE3D4C fileRef - F8B285BFAD9490C434D9B8862BE2592C + 0C54766B6B776F70EF7348B0454F7441 isa PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - 06E3C2A5DF56E6F31A85D01218B5B8A2 - - fileRef - D6B09D400E1BDE26550AC445410E5963 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 06F1904E7D8A87678A8E6B553639B9D4 + 0733836CAF3126A8A94940ECF8D54F5C children - 2EE717E1E5091342A9488266AAFBDC98 - 196A5FE95290E899ABD47B0C8221AA7F - AE90EA2F82C31682262B9984EA3C4A8A - 9F016468BB47F88291C86903CD0B7B8C - E279FCA9B6F87AAC42E3C77473144713 - 1985BE14D6E317FC2F60960A07F1935A - C3C2D026BEA4EFA755B9D564519F11A4 - F8F5812903C9C7E118CE8B33FBBB2054 - E4B381663105ADBFEFAEFD1DBC9802B6 - 3E74B1195C426CB5F107BB0407319FA0 + 7E6CA6F06E2E937025AAD8F9AA49DD11 + 195FBB45AC10C23C7FD09A365150C6DD + 7F7FA55C4CB12E917C0DF52C7BA7330D + 302418E9A06DE2BB5949E46B80F51EB2 + 50D8645A0B547C3A6511E6CAEC652EA4 + EA8FF5B01BA6A155DE2616E718B491C5 + 0FEAFC69C6A393D2DE12D68D86E63EF5 + 1DA092AA3F76F718F35CE9AA7ADAD7E1 + C64B374941256CCC388797A4B5B6502A + 5365DB7D2970A76B3DEEDEC881E87E03 + 9FDB734414E2E3E9E05832B12F5BD78A + 23C948B409271B4E47C380207A23FF20 + 6122C16FAC90E4190B164E2BBD35E624 + 24E86D248E46DE840446BBD74C12973B + 572E8DD7016F54AC5930B57774BD202C isa PBXGroup name - Sinks + Installations sourceTree <group> - 072388CE2D585FE6C118392E1EFE3D4C - - fileRef - 8709EEE0A3E0A1F2614F97CD45B97261 - isa - PBXBuildFile - 073687B9C05D6EEDE6D1124E55998A5F children @@ -601,19 +446,7 @@ sourceTree <group> - 0753C1864139F1746D1A5C993BDB4BB4 - - fileRef - 35A6173430560CDD800C36EF343DB6A7 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 078242935268BFF82B9896C7759B3771 + 073E9C3B95C7EFE423EDC196613F1B1C includeInIndex 1 @@ -622,79 +455,129 @@ lastKnownFileType sourcecode.c.objc name - GPUImageGaussianBlurPositionFilter.m + QNNetworkInfo.m path - framework/Source/GPUImageGaussianBlurPositionFilter.m + HappyDNS/Common/QNNetworkInfo.m sourceTree <group> - 07D7FDBB2C70E19CDA69F9FFBC4C8CB7 + 08464F74EEB7A877C5C5493F8E7BB504 + + fileRef + 2B3F5C897AB42E5F82A6D02E05439B1A + isa + PBXBuildFile + + 087D5ADEE133FCDA2B1BA7B40B11EE33 includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.h - name - GPUImageSmoothToonFilter.h + text.xcconfig path - framework/Source/GPUImageSmoothToonFilter.h + HappyDNS.xcconfig sourceTree <group> - 08225C56C49C8D83AD3800C37D949148 + 0890A7B00E4158BE62E339F57F5E9DC2 includeInIndex 1 isa PBXFileReference - lastKnownFileType - sourcecode.c.h name - GPUImageSketchFilter.h + KSObjC.c path - framework/Source/GPUImageSketchFilter.h + Source/KSCrash/Recording/Tools/KSObjC.c sourceTree <group> - 08464F74EEB7A877C5C5493F8E7BB504 + 09C053B8102981FC2B09BBF1F21AA98B - fileRef - 9EB0F1A3C0BADC4A7A90086E0208DA98 + children + isa - PBXBuildFile + PBXGroup + name + Tools + sourceTree + <group> - 090F80C7722BF9B1547D4C1508FCC9A5 + 0AAC422034A0DC247261945A3D9C2C8C fileRef - B6A0CBD93D292CC7080DE2E7103EF236 + CB86C8C38142917F38EF43B2082C6977 isa PBXBuildFile settings ATTRIBUTES - Public + Project - 09357F77CC4C768C91FE4321B9A5B26A + 0AF5573DA7936D9F1C0B7BAEE44943BD + + includeInIndex + 1 + isa + PBXFileReference + name + KSMach.c + path + Source/KSCrash/Recording/Tools/KSMach.c + sourceTree + <group> + + 0AFCB5ACD5E33AE9D5564511A7279A90 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + Compiler.h + path + Source/KSCrash/llvm/Support/Compiler.h + sourceTree + <group> + + 0B1C8B124200827A242E1A2D627361D4 fileRef - D61453ADBEB94EB9DBE53548142A82C7 + 9DF02DC55CB6BB8E054C6BD394CF96B1 + isa + PBXBuildFile + + 0C54766B6B776F70EF7348B0454F7441 + + includeInIndex + 1 + isa + PBXFileReference + name + KSJSONCodec.c + path + Source/KSCrash/Recording/Tools/KSJSONCodec.c + sourceTree + <group> + + 0CDBD794EE2AF3140E1CC3AFECD52842 + + fileRef + DD368B9C9261A1B824A4AA7401C41710 isa PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - 0978982592C428B3B77D431569DB1D98 + 0D20FD1EB1CAEFB07291F7814934096B fileRef - 4CECDDF46DE01673631233B4F3B560E7 + 57153598DA2A7DB2D3F850FE732F8D3D isa PBXBuildFile settings @@ -705,28 +588,35 @@ - 097D12AEECCEB6D2222F02646DE65FB3 + 0DB5174DB7E168935006D22E78068C7E fileRef - D908808FACBF42D36BBF8C426BF1C57B + A7BAD5B83F7A4ADA5805F14DEF54CB93 isa PBXBuildFile - 09A388C2F06C538A695030269E5724C5 + 0ED8E8B6FD129D1F3030ACCEC61865FB fileRef - E2F8B468CC75C2FB12B563CCFAF600C0 + 25079E70B83ED3BA8CB5B4D4C18D062C isa PBXBuildFile - settings - - ATTRIBUTES - - Public - - - 0A07B03EB1EFAFAAEACB7F2EE13A0F3F + 0EE979F4EC2C10F0D33B61C9640D59B2 + + children + + 3D3C18F05A21CC7ECE62E134511EC4B0 + 78FB1ED04EA8902F6B0966C34E575CCC + + isa + PBXGroup + name + GZip + sourceTree + <group> + + 0F4E004199B099960633EA91F156C094 includeInIndex 1 @@ -735,16 +625,16 @@ lastKnownFileType sourcecode.c.h name - GPUImageVoronoiConsumerFilter.h + type_traits.h path - framework/Source/GPUImageVoronoiConsumerFilter.h + Source/KSCrash/llvm/Support/type_traits.h sourceTree <group> - 0AAC422034A0DC247261945A3D9C2C8C + 0FAF650F4298B10760F0E2F671BAB4EC fileRef - A0B68EE09A068D7795432D4D5A2AFE35 + 8CF7DF6F8D051D148F2822DDC8854AF2 isa PBXBuildFile settings @@ -755,19 +645,14 @@ - 0B0A46C0137491A5D31E66A0667E8198 + 0FB8F2E74778DE8CCB7EADE075A82E15 fileRef - 866C5305A0C19C21B1D34562066AF28A + A51BF1268F81969CE3D33619782DD96D isa PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - 0B40CF909BDF85FFA0BFA32CC29BC930 + 0FEAFC69C6A393D2DE12D68D86E63EF5 includeInIndex 1 @@ -776,425 +661,356 @@ lastKnownFileType sourcecode.c.objc name - KSCrashReportFilterJSON.m + KSCrashInstallationConsole.m path - Source/KSCrash/Reporting/Filters/KSCrashReportFilterJSON.m + Source/KSCrash/Installations/KSCrashInstallationConsole.m sourceTree <group> - 0B64E82729635EFBBAE0A268B6765024 + 10152358E869A0AAB4AE3FB88A0D9CDD includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.h - name - GPUImageHSBFilter.h + text path - framework/Source/GPUImageHSBFilter.h + Pods-PLCameraStreamingKit-acknowledgements.markdown sourceTree <group> - 0B699C6DA38D9E5DF91689201AD0F141 + 10172C294B7E36CD6D3DE68EDD993532 - includeInIndex - 1 + fileRef + EE038047377480E5506F81149F7F31C6 isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageLightenBlendFilter.m - path - framework/Source/GPUImageLightenBlendFilter.m - sourceTree - <group> + PBXBuildFile - 0B7BE15B07B8ABFA57F0D783188DF604 + 122DA2E5084A4393C29BE363C764795C - includeInIndex - 1 + children + + 25DC250CBF72F95698E149D382CC8BD5 + isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc + PBXGroup name - GPUImageOpeningFilter.m - path - framework/Source/GPUImageOpeningFilter.m + Frameworks sourceTree <group> - 0B97D7498878B71528256629E481C8A2 + 125A369C6EAACFA85A94047A14C5C77B includeInIndex 1 isa PBXFileReference + lastKnownFileType + sourcecode.c.h name - KSCrashReport.c + KSCrashReportFilterSets.h path - Source/KSCrash/Recording/KSCrashReport.c + Source/KSCrash/Reporting/Filters/KSCrashReportFilterSets.h sourceTree <group> - 0BA67DF9A2F9DE2570AB3E64008D70D5 + 1291CED785FA7516ACB46C8CD7212175 + includeInIndex + 1 isa PBXFileReference lastKnownFileType - wrapper.framework + sourcecode.c.h name - AVFoundation.framework + KSVarArgs.h path - Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/AVFoundation.framework + Source/KSCrash/Reporting/Filters/Tools/KSVarArgs.h sourceTree - DEVELOPER_DIR - - 0BAD991A1B71F44548C893BEE86303CA - - buildActionMask - 2147483647 - files - - F667FD6B2817EB9CC9FA1A96B6EC690F - 3A10A970D4066B807781456C79710EB5 - 396CD5040860512B7BED29F538E27A68 - C1319E426F19F8CBE48A7FE04A6F6B72 - 545B2490C290D710A4F4A3D7EEA6F019 - 55F997817C35712807387B72101AB320 - 88551BB2DCD94A421A71F8A28427BC5A - FB4619BF82BD411AED62FBBC79410535 - 35146AB8384B4BE0CB70A22F354D200E - 144BC96D416B04BFDBCF65D18A07B345 - 56E2FAA20DF7C2AA44D89CAF7BD5807D - E12E0CAF76C72CA5DC6EE7F36E0992F1 - 527675A5E94DFE6B885F542391548FB3 - A6A3DD1ECC832D4C2053B83D511B3312 - 56F6D7E0C05FA197FBC39EB3FC21F419 - 64FCBB6C1D4C1110E361DCFDA4C18275 - A5B33F246C704CFE931582FB2D1F3617 - 678BFAF0C74ACAEFD6B7E5A9E1C66AC1 - 3CD8F4D3F1D975A0D8A0D9E89DC61D19 - 38A904BBC7E35D4403A6EBBEA50412FB - 511A05D5417039FAC51481546667CE20 - 98A0781A2EB476F67BAEC9AFE13A7570 - 917A0EF93F272C54445750898427C255 - C92EE8E578B8F830BE14C0DA3CB872CF - C916C9CBF719A86DCBB89652DA0A4EFC - CDDD82653D0F577EE33DC86B9387725A - 2EB24BA85907562CE36E8ACEEC2EB41F - AA2B79A4FFF8A0FE08952B465CD39838 - 6AB5DA7B103C468E47443CF122E7D8FC - EFA25F69CFAC0868CE349E6F7FDA0EB5 - E7459AD8BC35C036AC8FBCF3ED33A600 - 94F8A4E02C80FE57747ECAC2EE81D037 - B5BCABFB6D33093693FD4E2579F62A61 - 1EC8F0F88F4F7EF339CFF58047B60167 - FCFC4B14AD47CF3E8F1EFC4CE2E27997 - B519F19CB518AB88B5374FD5AB996D8D - 5DC594E456ACE784A5A097067FBC7D5D - D1F54A4D52D79EF767F9FA4D357C1801 - A38B80C4BECDB75B5CA3C1C216B3C70B - E86FAA6635462912E9607692DCF4EC9F - 841E67CCC3011BDDFE68B4AA1A000052 - 68D6F42C93ECEB75BB1D61DCDE8EB7C0 - BC588A7555702F0E01420DDA7D784BDC - 4529F378CA61BBA01819856EA7B7ACEC - 90997605B8D24F402BF415600169204F - BE4B9D5E89EA6DE98E10597CC38064EE - 394E72264EEB676450E46378D9B94171 - 9D826F5D5C132D6AACC56B444BEE84A2 - 776B81118086A788D6F2EF26E6BD3496 - CFC1915DAEFF717EF81572A6D1C18738 - D6B975AB3179AD8B8A92C252B2A018A5 - CDFAFE970D7C813F257D8C624F4BA5D6 - 7D33774109711DA7F57FBE88983AABF6 - 6DFC494801E8E569870C8F0211E1C8C0 - 40276BB715F42BB6D383AFF14EC63DF5 - 2A34529B875239FEBD9C5A94AC0EF0E5 - 00FB28D79393EC20A2F25A64B8525A0A - D0BDC6C19E2A248C835A3C63DA5A6369 - A4776FF79A1BFEE7F0AA41CFCBB403D2 - D4BA0EC6E0BC0F75AF7903968F9904B2 - D83D17D8FB9FD3BE17842369D3E681AC - A89C4F29843A297941AC5A093FFDA399 - FC2C909FEC5A89E28242506B8A0693BF - 9450818522DF37CE9B8FC4880BAA3DC4 - E84ABE917B478FFEA9662DB6996AE693 - 29317CA2D0CF8A4B51FA10155616DD60 - 919A063C2E14D042A4EB26F366888A73 - 4B566737855C9511728AED02FBE9C268 - 6C9418A1038F927B5474B28DE328BE52 - D5ACAF96DB0C1ABE0F66294C8E19C32B - 487457DE9424F4B356BABB60DB1EFC49 - DC8DF1E31C56E8F2BF98C707C69B525E - 7F97663A543EEFCF7E5C791E67590D38 - 861BBBB10DB621E037A837C28060FF07 - EAD21FF18D606EDF28D4A07895D030A6 - 207F45FEDECD0C2908DFAADA7F4E691B - 1245B6A70D0B853748C4E0873A8821FE - EC2B43230D19CA3702EF3F841488D121 - 2BB1859A8F8A7A34FCF1922B9CBDB283 - F3844FA0BC26CC2E0A3397F2A8D973D8 - F68E9B771878DB5397357810B3CBDF62 - 7D84124D15687644CBCC13BB58B836F2 - 75FB19F919886142B16DA417292AF227 - 131DAD863C28AC0C65E1CEC9110D1F02 - 2478DBC8D5E78606EE8C0C9909D15329 - 4F7E35B46937EF1D27F12243C465D09C - FB42526110A84658CE820206C963F310 - C6C60B1E6BBF6D0529C2A58C225C8610 - 2B584EFEBED84796D313BD4ECED766C6 - 2F4FEF5941A39334837742BDD4B2F8C0 - 32B15B86ACA206088E7E03DB72A96238 - 06E3C2A5DF56E6F31A85D01218B5B8A2 - 7BE97A99EB7CE228C3B05ADF81167E37 - 03B7484C5441570A6A90771CF380CBA2 - 05B142027E0B85B92B0752E3226AB56C - 959424FA8BCC2E31DEED4C332C15868B - 36AC7E2C811F3770732C3F81F2A1EDFA - C06F84D262039EEEA8DD3DDECD8E30E6 - 4941694FCFFA606F7B295A24780B8ED3 - B504DAC60CD3D4FD20D155FCBBB26BA7 - C3273CF37576883380788A8E08CCAAB0 - 22C5B34B6E917437EEB6A5D458B7185B - 7825A13CD152DB1626BEA58C1BB93970 - ADD6DA84F2B259794192E8E4082304AC - 6D13A9B1B91E5BD41CF5D3968BF3EEE5 - B60DED9F5100F02BDE3538A41658E5D5 - 84378B748B6EB79F5CA35D2BD5648921 - 0E03AF8A9369A60B42C4E6A12CDB02E8 - 9F2CD80EA4395D5BBCC47B5A1E06976D - 8BB2C7F9BF1302F905EAF7D19D6BE67A - 49FDC494711AACC6F3DCB12500AE86FE - 0978982592C428B3B77D431569DB1D98 - 20DCF5774E0092EC0DDCAC8F34986E78 - 98330210BD22E9125C7D76107D59C208 - 2787BE5D16ADE0909CC180D1FA82EB81 - 53D666997254E134312B2F6C91713889 - 0F2B530FADED58C837C65173882F3D7C - 79B2682D22F264404C0F34662B9A356F - 8A5D307EAEBF94673A7F4E778DF577EC - DEC3EC9E868D1D597DBC703F390D7F2A - 2C13555ADA77177DDD5FB67DBAA09D58 - 6A7FB61B613B60624A7B649697F44369 - 465942C7B096ECF57BCB6B16A858C94C - 61B1F0A20109898ACF7CC14D78D3FD42 - 020F7726A2B519C580FCFEFFAC969EC2 - 632A1F1A3B7E33C3F1732BE260B180A0 - 00FDD3728AF408C5A07D18AA8BDF31F7 - 4B71853D33A73D2666CC80E0E255D449 - FD4E5F7E836FA1A3EEBD872BF8717860 - 9FD464EC925C29A5CCC746F8A0979A32 - 884533B82B26741E3E336A9876B1B9C1 - 617DC4B764B112BDA758ADE11F1DF22B - E67D17C991308CD5A2B3CDD798686713 - 6B78DF7FA9BCC1820A6AF40CDFB2E71F - 4FB9D82DFC4A54D9A3765D1D9DEB806B - 6E0C35C1C493E2FBE9D5496F3DB5D6FA - 04A8C84B69E261EBE1545F1133ABA4B5 - 83919063356F3ED4B2A922D6CE848AA4 - BAF4F0536F6F838C6A41341B19B8F39F - F923AFF37112FEFFA7D011ACCA2C63B4 - C1160C73DB5C27A943D630066BFA9E69 - EFAC5B94410CECC38BA3CC9D682AB01C - 7C6D6034FA4AAFA93B1E566B93350412 - 7ED726FE53318104E23F183528459BF1 - BB8E449ABFD8B0D29ABAAE57CD375384 - F02508147906A92B387FDF81817BA7B0 - 6F03B7DFB1D9E37A025BF264A7B27B2A - D6ABE8A4AF0613531A86293772F75A74 - 0EE147F064AC9AA8D80E1F6CC6317079 - DCFD04D29019791AA42366AB73143BFD - 64D5064E9B29FF6E03293A87088455CF - 66FCA835F06AE4F519FFDF9877247243 - 8F1406E7B3732D0DBF05BAF315EB0CEA - C507A50864B7F2649D337D3B6FC3DD73 - AEDE1E49581E0BA348F6E82F7F3E1802 - 1A7F15A6B22EED2FA587C8D9DDA3B50D - 720DC354002092C31669D06F9D57032B - 80BD0E34BE433E08B9D1E6386FC478BD - B4F1EB1C934879AE2BABA5930205BBFE - F288912C4617DB72B6C085CA2492B053 - 6D76E744014686941643D53B63092BC3 - A3207852EFEC69653F515E3491745B39 - 81B2CEF0A9A4D9CA438E989034BE689F - 885F540C3721EB398522C1646259619C - 447BE308F88DFB632722B43E73A675AB - C22CBF65410185A97D139AF06B277E09 - - isa - PBXHeadersBuildPhase - runOnlyForDeploymentPostprocessing - 0 + <group> - 0BB46F013B0237DDA8ABDB65D688242C + 12F2259C1ECFECB1F4DE0B73DAD338DE fileRef - 2E3766B8838D1643C2B7D1EE69C64361 + 9A57B57FBF97465A28A60DC1BDAC8939 isa PBXBuildFile settings - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 + ATTRIBUTES + + Public + - 0CDBD794EE2AF3140E1CC3AFECD52842 - - fileRef - C232CDD9BE229AB4789D71C606149243 - isa - PBXBuildFile - - 0D0E1784C4112C92A682729C85FCA8A8 + 14746A792EF4A499F2703F0D32802118 - includeInIndex - 1 + children + + 03A50A3E20FF406998556798DE263389 + FFF2269EF3DB19A1B0483A5C4A544A89 + 25C9E656A6C6507A6DF719F6D0C12EAD + 03A0198C7DDF684523ECACC6F6948684 + 67C17CE9EDE2F2FF066F48845CFF418F + C7B187DB6C1CFB94A544087BE70CF342 + 277DA84826E644E06B0B607E75280336 + F8B08201AC3EFC1AF8EED9DD18CE89CE + E536D4CBFAA0F78D2348532AEA7B832D + E8748BEA329BB07AF85C830C6357FFCF + FDC3FD5EBD8F9E0DD8A891C81E92A707 + 69E73A68FFA57F66898491C3BDCB11B9 + A701716FFEE675C691924B5DD5AD7F5B + B83C863490799592A61DD4EC96345C19 + 02A2D24C8A22A2855FB051894E3195FF + A880D6FCC9E1288BEF68F0771973F497 + 9C885F5CB7C86E5375642A7F6F53B5D3 + DE2C1E645373A7E4C5D3F2E020F497FC + 5A0A0B242BB448720D9187E00693E0ED + B1AC080770A8CF26EBD39192533284B7 + 1D239D3E6D0A2DF478E1F220F45F76CF + 6631D34394C8ED41F013A7BBE88BEB8A + 073E9C3B95C7EFE423EDC196613F1B1C + C3E8CD93245251D32D7D5CC3B01A1181 + 9DF02DC55CB6BB8E054C6BD394CF96B1 + EA2C9CF29357ABFF5A71E50B23A623BE + 25079E70B83ED3BA8CB5B4D4C18D062C + F6D76BDE8994CADF374DE02C6861969C + 21F2E26DD4F9BEC5FD6ECC058F0CBE06 + 7AF0D8D7E108370DC64100A59EE4D523 + 6954208752C37D42AC6200B0324E0961 + 98E9E45174549D5E6C2498C615598D31 + 5DAB3AAE5D970F6BA3ECDCB0B7ACECB2 + isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc + PBXGroup name - GPUImageParallelCoordinateLineTransformFilter.m + HappyDNS path - framework/Source/GPUImageParallelCoordinateLineTransformFilter.m + HappyDNS sourceTree <group> - 0D20FD1EB1CAEFB07291F7814934096B + 14D14DFF582BD5222CCEEA1C9DF32554 fileRef - 3365B9CCDACF66239F5B1D0B2F2BA29D + 6DC028B5567BE94DBF2A8638A023857E isa PBXBuildFile - settings - - ATTRIBUTES - - Public - - - 0D760400E2D0F8C7880662BEC7E80D6E + 150B2E074A9B9531E1996456C1463334 fileRef - F33BDD5FF48E71D77209F14251F50C92 + 0FEAFC69C6A393D2DE12D68D86E63EF5 isa PBXBuildFile - 0DB5174DB7E168935006D22E78068C7E + 157C3FFD507947EA2FAF054BE9A32E56 - fileRef - 1D7ABD1155F542414C6F714D2E2016E5 + children + + E478E47B6322787EDC50BDF78BED809F + 4E7CE311BE5327A45D89151C067574A6 + C5709F2424AC8F81BF648FEC4C1CFAD3 + EA49AD5BB9403CF0E23C804CD6555E0B + isa - PBXBuildFile + PBXGroup + name + Products + sourceTree + <group> - 0DBCEF9E916A39FD9D1324C02B5E3C51 + 166FAB93A478306E03283B0D654337A6 includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.h + sourcecode.c.objc name - GPUImageRGBErosionFilter.h + RFC3339DateTool.m path - framework/Source/GPUImageRGBErosionFilter.h + Source/KSCrash/Recording/Tools/RFC3339DateTool.m sourceTree <group> - 0DC8BCC337CBE1F795C675E87C3D1B3E + 1747AA93BC8A44E84FD42E4A42F3E2D6 - buildConfigurationList - E0ED4E6679B27D1581BECC38A2D750B0 - buildPhases - - 31765D7A5F24F16F34CC21C09B29A25F - 99AF1FBEB748F3B1681597A60876B0B3 - B7404204C8ED44BB14D3F5E811B9CFD3 - - buildRules - - dependencies - + fileRef + FCE50E131C2E823ADAB4D3225B690A66 isa - PBXNativeTarget - name - HappyDNS - productName - HappyDNS - productReference - CCF8F7EE753D5D7DB7E4A4482695A89A - productType - com.apple.product-type.library.static + PBXBuildFile + + 194AD0D8F17D89D54534FB3BF2067057 + + baseConfigurationReference + FFAC5C998DA821ED7EDD0228CF79A046 + buildSettings + + ENABLE_STRICT_OBJC_MSGSEND + YES + GCC_PREFIX_HEADER + Target Support Files/pili-librtmp/pili-librtmp-prefix.pch + IPHONEOS_DEPLOYMENT_TARGET + 7.0 + MTL_ENABLE_DEBUG_INFO + YES + OTHER_LDFLAGS + + OTHER_LIBTOOLFLAGS + + PRIVATE_HEADERS_FOLDER_PATH + + PRODUCT_NAME + $(TARGET_NAME) + PUBLIC_HEADERS_FOLDER_PATH + + SDKROOT + iphoneos + SKIP_INSTALL + YES + + isa + XCBuildConfiguration + name + Debug + + 195FBB45AC10C23C7FD09A365150C6DD + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + KSCrashInstallation.m + path + Source/KSCrash/Installations/KSCrashInstallation.m + sourceTree + <group> - 0E03AF8A9369A60B42C4E6A12CDB02E8 + 1980DF2C8F60A87D5832405DAED67B9E + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + KSCrashSentry_NSException.m + path + Source/KSCrash/Recording/Sentry/KSCrashSentry_NSException.m + sourceTree + <group> + + 19A1454720A07697C6697EBA394A33B9 fileRef - 9E3090B055E79BA8ECB78363F9D3E99A + BCACF1715D0C53732223C1F0911C5BAA isa PBXBuildFile settings ATTRIBUTES - Public + Project - 0EE147F064AC9AA8D80E1F6CC6317079 + 1AB43CCB8956C3F14977B75EE33707EF fileRef - E64D0F3DDD22D44175B4387DCB6C503B + 2A6F6068BDFE2B8DD3C351754C8FB99E isa PBXBuildFile settings ATTRIBUTES - Public + Project - 0F0E38AA5A53967EB5308B2150FD5D17 + 1AE95FD8C1A3733F920D8729850537AC includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.objc + sourcecode.c.h name - GPUImageRGBOpeningFilter.m + Punycode.h path - framework/Source/GPUImageRGBOpeningFilter.m + Source/KSCrash/swift/Basic/Punycode.h sourceTree <group> - 0F24867758516F8B2782BDA9F444865C + 1B0F8CA0E79BAF2A98427F656AB99CF2 + + fileRef + 3D39FF6D2C5D4FFEC2E1D0FC750617FA + isa + PBXBuildFile + + 1B31E85D9156574140008B19F590E692 + + buildConfigurationList + 7616ED9D684A120FE1D8AF4E569ACC7C + buildPhases + + 1E66316B070D6B47062067319208F343 + D279890DDF80F783978B00A03538569D + + buildRules + + dependencies + + 2951403933DCCBFB010E56426556B73D + 3875FBEA7E54847BCF661649094241E5 + 4F391DEB7D0464A5325A227DB225C244 + + isa + PBXNativeTarget + name + Pods-PLCameraStreamingKit + productName + Pods-PLCameraStreamingKit + productReference + EA49AD5BB9403CF0E23C804CD6555E0B + productType + com.apple.product-type.library.static + + 1BF148E72042190034D3B45697A9ACBC + + fileRef + 195FBB45AC10C23C7FD09A365150C6DD + isa + PBXBuildFile + + 1D239D3E6D0A2DF478E1F220F45F76CF includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.h + sourcecode.c.objc name - GPUImageCGAColorspaceFilter.h + QNLruCache.m path - framework/Source/GPUImageCGAColorspaceFilter.h + HappyDNS/Common/QNLruCache.m sourceTree <group> - 0F2B530FADED58C837C65173882F3D7C + 1D310FC6C5F145244DDC2F25F5F4C52D fileRef - 622A4C4C0A8CF0BA3F6B3A961C9570E3 + B6F9164E7CAA6540EDEF9B124D48B9BF isa PBXBuildFile settings @@ -1205,19 +1021,21 @@ - 0F5C30D19E66C617B3327742A4F42803 + 1D8F8BB230399E06763B41CFB509DCF4 fileRef - B724143D653C63BB3BD09CC823836D4E + 25A86CCA4262A1726944CCF90F946F31 isa PBXBuildFile settings - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 + ATTRIBUTES + + Public + - 0F6758DE87A1D16C095A8D6DBF35117A + 1DA092AA3F76F718F35CE9AA7ADAD7E1 includeInIndex 1 @@ -1226,13 +1044,27 @@ lastKnownFileType sourcecode.c.h name - KSCrashInstallationConsole.h + KSCrashInstallationEmail.h path - Source/KSCrash/Installations/KSCrashInstallationConsole.h + Source/KSCrash/Installations/KSCrashInstallationEmail.h sourceTree <group> - 0F75B3522EB3632D9F24504AFA8810AC + 1DD32DA67114B71F4D8ECC698ED19639 + + fileRef + 3D3C18F05A21CC7ECE62E134511EC4B0 + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 1DE4DA41604657015AF7CA73A51C6D92 includeInIndex 1 @@ -1241,99 +1073,96 @@ lastKnownFileType sourcecode.c.objc name - KSCrashReportFilterAlert.m + NSDictionary+Merge.m path - Source/KSCrash/Reporting/Filters/KSCrashReportFilterAlert.m + Source/KSCrash/Recording/Tools/NSDictionary+Merge.m sourceTree <group> - 0FAF650F4298B10760F0E2F671BAB4EC + 1E66316B070D6B47062067319208F343 + + buildActionMask + 2147483647 + files + + 9DB77E8C94668C866C0E12C29370797C + + isa + PBXSourcesBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 1E7F8E001CED4EE74B3210D32064F1A9 fileRef - 74209F1B104283C94240FE21D36F25D9 + 274BEDEC5B2DF7F30770695F5077ED29 isa PBXBuildFile settings ATTRIBUTES - Project + Public - 0FB8F2E74778DE8CCB7EADE075A82E15 - - fileRef - 9EADF783DE0BCB252E333C90594D56C7 - isa - PBXBuildFile - - 0FE2ECB4B3BEDAD0F91EC8E458420F21 + 1F5B48D03BFCC68E8AD2663FF0618C10 includeInIndex 1 isa PBXFileReference lastKnownFileType - archive.ar + sourcecode.c.objc name - libPLStreamingKit.a + Container+DeepSearch.m path - Pod/Library/lib/libPLStreamingKit.a + Source/KSCrash/Reporting/Filters/Tools/Container+DeepSearch.m sourceTree <group> - 0FEF63F7F5A2091B039480B24129982E + 2083637A2E0B7D8BFC2E8A7DE3946A72 includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.h - name - KSCrashSentry_Deadlock.h + sourcecode.c.objc path - Source/KSCrash/Recording/Sentry/KSCrashSentry_Deadlock.h + Pods-PLCameraStreamingKit-dummy.m sourceTree <group> - 10152358E869A0AAB4AE3FB88A0D9CDD + 21F2E26DD4F9BEC5FD6ECC058F0CBE06 includeInIndex 1 isa PBXFileReference lastKnownFileType - text + sourcecode.c.h + name + QNResolvUtil.h path - Pods-PLCameraStreamingKit-acknowledgements.markdown + HappyDNS/Local/QNResolvUtil.h sourceTree <group> - 10172C294B7E36CD6D3DE68EDD993532 - - fileRef - 77E79C966AC2AD4EEDC635D8C16E05F8 - isa - PBXBuildFile - - 105DE74A8C35B8E9461A84333D835595 + 2205FD19244DB330985041B99D3B1CFE includeInIndex 1 isa PBXFileReference - lastKnownFileType - sourcecode.c.h name - GPUImageClosingFilter.h + KSCrashType.c path - framework/Source/GPUImageClosingFilter.h + Source/KSCrash/Recording/KSCrashType.c sourceTree <group> - 10B536A379BDD680470BD5B3A703F4DD + 23C948B409271B4E47C380207A23FF20 includeInIndex 1 @@ -1342,13 +1171,13 @@ lastKnownFileType sourcecode.c.h name - GPUImageMedianFilter.h + KSCrashInstallationStandard.h path - framework/Source/GPUImageMedianFilter.h + Source/KSCrash/Installations/KSCrashInstallationStandard.h sourceTree <group> - 10BAA3E739989DB39DD766501A5EC6BA + 23EF30CCA07FCF4DC1411AD469A7E775 includeInIndex 1 @@ -1357,27 +1186,20 @@ lastKnownFileType sourcecode.c.h name - PLAudioStreamingConfiguration.h + NSString+Demangle.h path - Pod/Library/include/PLStreamingKit/PLAudioStreamingConfiguration.h + Source/KSCrash/Recording/Tools/NSString+Demangle.h sourceTree <group> - 1245B6A70D0B853748C4E0873A8821FE + 24C17A74FB804BE5D4D25EA746BC0C02 fileRef - 1D9CD952FF9D2A15089783DE729811A8 + FE52294ACDA3B0DB871740DD099205E2 isa PBXBuildFile - settings - - ATTRIBUTES - - Public - - - 12C0722DD47207B5E41D3317B6CBFAA2 + 24E86D248E46DE840446BBD74C12973B includeInIndex 1 @@ -1386,73 +1208,43 @@ lastKnownFileType sourcecode.c.h name - GPUImageCrosshatchFilter.h + KSCrashInstallationVictory.h path - framework/Source/GPUImageCrosshatchFilter.h + Source/KSCrash/Installations/KSCrashInstallationVictory.h sourceTree <group> - 12F2259C1ECFECB1F4DE0B73DAD338DE - - fileRef - 12F64DAB4A904E76B574314533103647 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 12F64DAB4A904E76B574314533103647 + 25079E70B83ED3BA8CB5B4D4C18D062C includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.h + sourcecode.c.objc name - KSHTTPRequestSender.h + QNResolver.m path - Source/KSCrash/Reporting/Tools/KSHTTPRequestSender.h + HappyDNS/Local/QNResolver.m sourceTree <group> - 12FB2EBF99E36C2D2B3544952AFB2BA0 + 252586D5F1BFAF3656FEBC03A0889EE3 - children - - 68A4D7E3E69128BF4E05FB5B4CF04846 - C8D9671C7CF65E0461E1247AC4521F3C - ED785054ABA03D4323C21D62147809DB - 72CE5DFF8D73C141DBB92CD6F435415B - B5B81600E89D0984502DD7DAD21B4A9D - + includeInIndex + 1 isa - PBXGroup + PBXFileReference + lastKnownFileType + sourcecode.c.objc name - Resources + KSCrashReportSinkConsole.m + path + Source/KSCrash/Reporting/Sinks/KSCrashReportSinkConsole.m sourceTree <group> - 131DAD863C28AC0C65E1CEC9110D1F02 - - fileRef - 975260C33AF9EEA8BD05A7B61BF6F079 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 132D018B93E4082FF091ED210C889D56 + 25A86CCA4262A1726944CCF90F946F31 includeInIndex 1 @@ -1461,13 +1253,13 @@ lastKnownFileType sourcecode.c.h name - PLStreamingEnv.h + KSCrashReportFilterStringify.h path - Pod/Library/include/PLStreamingKit/PLStreamingEnv.h + Source/KSCrash/Reporting/Filters/KSCrashReportFilterStringify.h sourceTree <group> - 13354CF3232159B703CCF72A89E135DF + 25C9E656A6C6507A6DF719F6D0C12EAD includeInIndex 1 @@ -1476,28 +1268,16 @@ lastKnownFileType sourcecode.c.objc name - QNDnspodEnterprise.m + QNDes.m path - HappyDNS/Http/QNDnspodEnterprise.m + HappyDNS/Util/QNDes.m sourceTree <group> - 13C37293C390C25FEBA543E7B86C0764 + 25D87252C3FDCD5ED78368FC749A741A - fileRef - BE8472A5EFDEA2721849BC76CE3EE3DB - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 140F8C4709A8FF8C9ACCB6AD48A41E6A - - includeInIndex - 1 + includeInIndex + 1 isa PBXFileReference lastKnownFileType @@ -1509,22 +1289,25 @@ sourceTree <group> - 142004FF690DE311593786754131CF72 + 25DC250CBF72F95698E149D382CC8BD5 - fileRef - DFCCACD89E81C587D918490F2C07F72F + children + + C852AF4EFDBA90A69AF4085F493B98EC + A363F6BB6249FA58122B9E79F44803CA + DC235BC339068A76EEC448415E5DD2E6 + isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - + PBXGroup + name + iOS + sourceTree + <group> - 144BC96D416B04BFDBCF65D18A07B345 + 2698FDF76B3B18DFD42A939C9D782052 fileRef - B0FA9BB5A07A2A733EB63A0003AE7114 + 2AB6E693B7F97D85BBE50AAF1514BE79 isa PBXBuildFile settings @@ -1535,7 +1318,7 @@ - 14B7CFD33D9D8A4C83D8AD7EEBB209EF + 274BEDEC5B2DF7F30770695F5077ED29 includeInIndex 1 @@ -1544,126 +1327,228 @@ lastKnownFileType sourcecode.c.h name - GPUImageTwoInputFilter.h + KSJSONCodecObjC.h path - framework/Source/GPUImageTwoInputFilter.h + Source/KSCrash/Recording/Tools/KSJSONCodecObjC.h sourceTree <group> - 14CC0476BB49A9088961AF96772769C2 + 277DA84826E644E06B0B607E75280336 - baseConfigurationReference - 3201021BF3D4BAE755203B71D8492C2B - buildSettings - - ENABLE_STRICT_OBJC_MSGSEND - YES - IPHONEOS_DEPLOYMENT_TARGET - 7.0 - MACH_O_TYPE - staticlib - MTL_ENABLE_DEBUG_INFO - NO - OTHER_LDFLAGS - - OTHER_LIBTOOLFLAGS - - PODS_ROOT - $(SRCROOT) - PRODUCT_NAME - $(TARGET_NAME) - SDKROOT - iphoneos - SKIP_INSTALL - YES - + includeInIndex + 1 isa - XCBuildConfiguration + PBXFileReference + lastKnownFileType + sourcecode.c.objc name - Release + QNDnspodEnterprise.m + path + HappyDNS/Http/QNDnspodEnterprise.m + sourceTree + <group> - 14D14DFF582BD5222CCEEA1C9DF32554 + 28AFBCE7086BD4C74425C3879B8F5E4A - fileRef - 55728F82ECB7E3ADD705B328329303FF + includeInIndex + 1 isa - PBXBuildFile + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + KSCrashReportFilterJSON.h + path + Source/KSCrash/Reporting/Filters/KSCrashReportFilterJSON.h + sourceTree + <group> - 150B2E074A9B9531E1996456C1463334 + 28BF349D13AA274BEE9E794AB9DD78F1 fileRef - 88134EE7E53D850D5D4B7E00E23FE0BE + C7DCD350409B78C1371DE5F0015A5D5A isa PBXBuildFile + settings + + ATTRIBUTES + + Project + + - 159F09C556CFFDFB1AC3A2934BE81013 + 28DF7EB18C5D7B550694B54247431A29 - includeInIndex - 1 + children + + CB86C8C38142917F38EF43B2082C6977 + 5BA590791E0404AA6ED1C969693381DF + 0AFCB5ACD5E33AE9D5564511A7279A90 + CA711130EED258407FAE5D61C524D198 + C32C267C3B2014E7A94CED184FE875C6 + 76EE931BE8DC6039011FF32C5448E603 + 953CA4E3B7F1326FAC09721909C2068C + 6064CCF6912C39990F5ECE21398AC0FC + 775A08A0B5F16C2DF14AF8A7EAAF9304 + F20C0C7AD3AB75CBA58C48D811DA2E8C + FC0988CC68727AEE0F44DD8E032318D5 + 40D07FA9367F8737B4B590E4D4C758F8 + 7922266915634D745A22500FABDACB46 + 3819364451CA1998E1A4EF3769B3656B + EE038047377480E5506F81149F7F31C6 + 57153598DA2A7DB2D3F850FE732F8D3D + C7DCD350409B78C1371DE5F0015A5D5A + C68874D22FE9CD4F26DB4801888B847C + 5FF2C3F3FAD0DC36ED9A53E81FF4142C + 8EB793DF7E346163F18E268487D55737 + 920FCA94CB0C1A190E45022D58058890 + FCE50E131C2E823ADAB4D3225B690A66 + E2FFF427FC7566D0533F06B6E3F21A65 + 358039D5C3714957D94BB2974D387625 + 624C928C37AE0C69332B114FC679712B + C47338DC04F7F181A7C0D25286F0AC25 + 452D0249CAD2B9C52380D1A6E2739795 + C45CED0928C6D802E4DCF382336D77B0 + D042550E27A3CBB2CBBF2B9F26CAFBCD + AB989C0055B2D49B0E583AF40B655E4A + F5A8E7DD5F25A62C38F0997552843F37 + B2EC46C6D29E254139E0020BACDF680F + 979E8AF22F2588CA6703323BD5454C3B + D9F37C64F797446762E05661D45093B3 + FE52294ACDA3B0DB871740DD099205E2 + EA148D6FA5B3CEE4C36204312CCE3966 + 05ABE81BE121DA3B51ABED6660183169 + 4BE06A4122AF24BABFF5A41EC382724F + 1980DF2C8F60A87D5832405DAED67B9E + C08BBF7CB7A78C5979CB958A38422F71 + 3D39FF6D2C5D4FFEC2E1D0FC750617FA + FCA7BC281288C5AD8EE0A6025A46F00E + 9C16E44DD717AC30BA3655027D1D9234 + 0601F0DBA97C904F0A99A5E0E73D791B + B87E74C5B5193D74DE715196D2713945 + EDEA7290413972CB935E19AE32730F2E + 2205FD19244DB330985041B99D3B1CFE + 937CE426A3093A1040394D15CB395F35 + BF1B29D465EFBA3AF56454BAD3E28A60 + 91B586173B88C39A05F7BC9A1B158C7B + 9C8EC88A6A1B297534D249870367C951 + 7E8B64BFDFF40F6CFD3F42C2D6A694D8 + 0C54766B6B776F70EF7348B0454F7441 + 064972A492CC18F33E91E826AAA8FE9D + 274BEDEC5B2DF7F30770695F5077ED29 + FC12E471BFB3E93A3888B54391D46569 + FBF427E652EB8E00B1E2380AA4D89C63 + B92DBB73974D0B8A5FF94297CB7FD6B5 + 0AF5573DA7936D9F1C0B7BAEE44943BD + 8CF7DF6F8D051D148F2822DDC8854AF2 + CCAE8545268600AACBE94C00AB13B618 + A28ADCA2E78677E0DCF5F2143AA2A7A3 + 758B9FFF730211B24564B38D7738721D + F33CF25754D9BB6A7D899FB01A1B7EAC + 9413000CCFC048AD3A7933974E376DF3 + 0890A7B00E4158BE62E339F57F5E9DC2 + 2A6F6068BDFE2B8DD3C351754C8FB99E + 3C524E09BA8680653B4C660271920345 + 318B46BFE7F9E7AA8AC957CA6A2275C4 + A51BF1268F81969CE3D33619782DD96D + CB6753D9BC5C26D0381512F7712E8169 + 3B2CA186D75D0182B5A04ABC8CC02AE1 + 2FFBB07016567EADEA11DFEDEF42314F + 81EE3723DE592727B72F15663AD30A05 + 8F433BC4B6B27E2678EA5E39F83ADC54 + D417DAF346F5823F67C8803E533DD64B + DAD7869E5214C9A33527F1797ACE82EF + E53DC191CCAE24046FB52C14C2E30EB0 + DC45576FE9876290AF62984B64ADDB79 + F87B7F7B561012716FF33D58279FFC3E + 624C0CEA498634637CDBD0D13B8EAAA0 + 9317DE5F5C832747A6C7A413D78C5EFF + 2C07A29AE69C875ED3CDAF0F19383383 + 836E10B07BF651A7D7F0C25B5C127060 + E191EEEA48D06AB8EFE967B3B3C7E15D + BCACF1715D0C53732223C1F0911C5BAA + 1DE4DA41604657015AF7CA73A51C6D92 + CA790B71E4C200E021368C9CBFB25EF7 + DD368B9C9261A1B824A4AA7401C41710 + 23EF30CCA07FCF4DC1411AD469A7E775 + 627CFA84EA1FB4397AE0C5FF046B58F0 + 5F442BDAD3E1C1E10AD33D3A0D9C64E7 + A7BAD5B83F7A4ADA5805F14DEF54CB93 + 1AE95FD8C1A3733F920D8729850537AC + 96B66177BA8B9146DA4FB8FBA2DBC234 + 166FAB93A478306E03283B0D654337A6 + 55CCE40B43DFDDD6A3025DF4BEA62200 + 04C6B40F044473E6199E93D4B7D9A556 + 0F4E004199B099960633EA91F156C094 + isa - PBXFileReference + PBXGroup name - KSString.c - path - Source/KSCrash/Recording/Tools/KSString.c + Recording sourceTree <group> - 15D289D02AA8B8B413E3A1A39DDD18C5 + 28E03E16731B812EC33497D7FC59AA49 fileRef - 78A175629FFE90C4A5F7D9FE92AAC22D + 1DA092AA3F76F718F35CE9AA7ADAD7E1 isa PBXBuildFile settings - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 + ATTRIBUTES + + Public + - 15F94A1E97297D98AF3F8B5091BBC464 + 2951403933DCCBFB010E56426556B73D - includeInIndex - 1 isa - PBXFileReference - lastKnownFileType - sourcecode.c.h + PBXTargetDependency name - GPUImageSoftEleganceFilter.h - path - framework/Source/GPUImageSoftEleganceFilter.h - sourceTree - <group> + HappyDNS + target + 5AC3A11679CADE5423C8DCC5EAF0C6CD + targetProxy + B14759D322D137944C02B032A75A6DBC - 160746860BB84D12336A96619DCCA283 + 297A2B5A4ADE0BCDEA72FA61E84C5A53 - includeInIndex - 1 + fileRef + E8748BEA329BB07AF85C830C6357FFCF isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - KSJSONCodecObjC.h - path - Source/KSCrash/Recording/Tools/KSJSONCodecObjC.h - sourceTree - <group> + PBXBuildFile + settings + + ATTRIBUTES + + Public + + - 162F0CDC4FD3C4C8FC674B8FACFCA0D2 + 29C8F907EB2A36ABC9955185255A060D fileRef - 5812AAD6269E509AD56359A81847EC4E + 836E10B07BF651A7D7F0C25B5C127060 isa PBXBuildFile settings - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 + ATTRIBUTES + + Project + - 1634B0AF70075E59D89AA66AC92C8E0E + 2A47FA8EA87AA79682498AF5CAEB1536 + + fileRef + C64B374941256CCC388797A4B5B6502A + isa + PBXBuildFile + + 2A6F6068BDFE2B8DD3C351754C8FB99E includeInIndex 1 @@ -1672,13 +1557,13 @@ lastKnownFileType sourcecode.c.h name - GPUImageMovieWriter.h + KSObjC.h path - framework/Source/iOS/GPUImageMovieWriter.h + Source/KSCrash/Recording/Tools/KSObjC.h sourceTree <group> - 163A1BAF7F620B6EA2D3F2B6073929A2 + 2AB6E693B7F97D85BBE50AAF1514BE79 includeInIndex 1 @@ -1687,41 +1572,51 @@ lastKnownFileType sourcecode.c.h name - KSArchSpecific.h + NSString+URLEncode.h path - Source/KSCrash/Recording/Tools/KSArchSpecific.h + Source/KSCrash/Reporting/Tools/NSString+URLEncode.h sourceTree <group> - 1678FB10B8DB87EA81A0DC35D86CF0EC + 2B3F5C897AB42E5F82A6D02E05439B1A includeInIndex 1 isa PBXFileReference - lastKnownFileType - sourcecode.c.h name - GPUImageContrastFilter.h + parseurl.c path - framework/Source/GPUImageContrastFilter.h + Pod/Classes/pili-librtmp/parseurl.c sourceTree <group> - 16C0871E7C07D1C24421DD08DD7C7869 + 2BAC7CF49C86172B8F10A9ADFC08EF59 - includeInIndex - 1 + buildConfigurationList + ED21AC54188497033489F8CBB898F51E + buildPhases + + 5913A557A824E36148BA5D027DF390AE + 319237805A59574EC1B6C321CDA6F183 + F8A697119F2E37C79911F060F89E551D + + buildRules + + dependencies + isa - PBXFileReference + PBXNativeTarget name - Demangle.cpp - path - Source/KSCrash/swift/Basic/Demangle.cpp - sourceTree - <group> + pili-librtmp + productName + pili-librtmp + productReference + C5709F2424AC8F81BF648FEC4C1CFAD3 + productType + com.apple.product-type.library.static - 17156E8B9DD0C83C197A04D8D54EABA9 + 2C07A29AE69C875ED3CDAF0F19383383 includeInIndex 1 @@ -1730,32 +1625,34 @@ lastKnownFileType sourcecode.c.h name - KSCrashType.h + llvm-config.h path - Source/KSCrash/Recording/KSCrashType.h + Source/KSCrash/llvm/Config/llvm-config.h sourceTree <group> - 1747AA93BC8A44E84FD42E4A42F3E2D6 + 2D8E8EC45A3A1A1D94AE762CB5028504 - fileRef - 0B97D7498878B71528256629E481C8A2 + buildConfigurations + + B37F0F91F85060E28F1DAAB522DC7EC1 + 052A17875CB827423D627183396CEB60 + + defaultConfigurationIsVisible + 0 + defaultConfigurationName + Release isa - PBXBuildFile + XCConfigurationList - 176D5B29E088E49A543B7AB63C4F0840 + 2E0F2C319D3A1AB42BFA6AA47618823D fileRef - 5A3C19191280C1915DAB7419D99D4D55 + 9C8EC88A6A1B297534D249870367C951 isa PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - 1793F911D06FD8DD3E1E1BC5C31174D1 + 2FFBB07016567EADEA11DFEDEF42314F includeInIndex 1 @@ -1764,40 +1661,13 @@ lastKnownFileType sourcecode.c.h name - Malloc.h - path - Source/KSCrash/swift/Basic/Malloc.h - sourceTree - <group> - - 17A5064583EB6B9817F7164304E49E16 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - KSCrash.h + KSSingleton.h path - Source/KSCrash/Recording/KSCrash.h + Source/KSCrash/Recording/Tools/KSSingleton.h sourceTree <group> - 17B2557C4DBAB673B3739883F2DAE247 - - fileRef - CD58767A3FC3CCC5606F91DB0758FF0D - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 181BD4B2309764C0A457DB5BFD0048D5 + 302418E9A06DE2BB5949E46B80F51EB2 includeInIndex 1 @@ -1806,34 +1676,22 @@ lastKnownFileType sourcecode.c.objc name - GPUImageLowPassFilter.m + KSCrashInstallation+Alert.m path - framework/Source/GPUImageLowPassFilter.m + Source/KSCrash/Installations/KSCrashInstallation+Alert.m sourceTree <group> - 1945FD8F0F03DAACA2398E9E14B1B417 - - fileRef - 618B74F32097C85D9FA7D6F2C0C235B8 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 194AD0D8F17D89D54534FB3BF2067057 + 31849498178994220B699E9425388177 baseConfigurationReference - 3EB9B417E6FC0A3FDFF6635509BA51E4 + CED3B5A78FEC2DFDEE61C9E3C9336C56 buildSettings ENABLE_STRICT_OBJC_MSGSEND YES GCC_PREFIX_HEADER - Target Support Files/pili-librtmp/pili-librtmp-prefix.pch + Target Support Files/KSCrash/KSCrash-prefix.pch IPHONEOS_DEPLOYMENT_TARGET 7.0 MTL_ENABLE_DEBUG_INFO @@ -1858,40 +1716,51 @@ name Debug - 196A5FE95290E899ABD47B0C8221AA7F + 318B46BFE7F9E7AA8AC957CA6A2275C4 includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.objc + sourcecode.c.h name - KSCrashReportSinkConsole.m + KSSafeCollections.h path - Source/KSCrash/Reporting/Sinks/KSCrashReportSinkConsole.m + Source/KSCrash/Recording/Tools/KSSafeCollections.h sourceTree <group> - 1985BE14D6E317FC2F60960A07F1935A + 319237805A59574EC1B6C321CDA6F183 + + buildActionMask + 2147483647 + files + + A0E36C5F85EDC1EF9FB0766C915B08B9 + + isa + PBXFrameworksBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 3201021BF3D4BAE755203B71D8492C2B includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.objc - name - KSCrashReportSinkQuincyHockey.m + text.xcconfig path - Source/KSCrash/Reporting/Sinks/KSCrashReportSinkQuincyHockey.m + Pods-PLCameraStreamingKit.release.xcconfig sourceTree <group> - 19A1454720A07697C6697EBA394A33B9 + 32B093D6A9CC44F7E262BF1E99F412BA fileRef - 7EC6DADAE5F0D9AED24602ED48EBF078 + FCA7BC281288C5AD8EE0A6025A46F00E isa PBXBuildFile settings @@ -1902,70 +1771,83 @@ - 19C672571071CB9D48B375DF53D74D71 + 3316707187A498E2CD252243F83E6B0D - includeInIndex - 1 + fileRef + 9FB7542EFC655ECEB14E60F0EC58C1B8 isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageMovieWriter.m - path - framework/Source/iOS/GPUImageMovieWriter.m - sourceTree - <group> + PBXBuildFile + + 34FECD939AC911AF6A05B461AD2C1F5E + + fileRef + 3C524E09BA8680653B4C660271920345 + isa + PBXBuildFile + settings + + ATTRIBUTES + + Project + + + + 35580FE7C1FA5569DE6FCF6DE389D1CE + + fileRef + 452C1D429004E4ABE95B02D7C367FD4B + isa + PBXBuildFile - 19F8D385E026C6B2BDF7A6D9A58C59FA + 358039D5C3714957D94BB2974D387625 includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.objc + sourcecode.c.h name - RFC3339DateTool.m + KSCrashReportFields.h path - Source/KSCrash/Recording/Tools/RFC3339DateTool.m + Source/KSCrash/Recording/KSCrashReportFields.h sourceTree <group> - 1A276443E028FF3D8802C84CAD23817C + 35B0511F8F6A16D47B643808356A1DE3 includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.objc + sourcecode.c.h name - GPUImagePinchDistortionFilter.m + PLStreamingKit.h path - framework/Source/GPUImagePinchDistortionFilter.m + Pod/Library/include/PLStreamingKit/PLStreamingKit.h sourceTree <group> - 1A609B09FA743E9627B6E0DD4E8BB577 + 3819364451CA1998E1A4EF3769B3656B includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.objc + sourcecode.c.h name - GPUImageSourceOverBlendFilter.m + KSCrashAdvanced.h path - framework/Source/GPUImageSourceOverBlendFilter.m + Source/KSCrash/Recording/KSCrashAdvanced.h sourceTree <group> - 1A7F15A6B22EED2FA587C8D9DDA3B50D + 38374B9DFAA3A02B4CDD4FA207C7DBCA fileRef - 82AD2F4352325A947B5855C428C0AC97 + A12F96FCDF0BFC94D03511A6A0CBEEB7 isa PBXBuildFile settings @@ -1976,10 +1858,21 @@ - 1AB43CCB8956C3F14977B75EE33707EF + 3875FBEA7E54847BCF661649094241E5 + + isa + PBXTargetDependency + name + KSCrash + target + 7721D993ED2B6C2DEF3331B64CF7FF53 + targetProxy + 951712E29E6766F95F52EA998FE6E97A + + 38FC522671F1FCAE1A0A96F044E3846C fileRef - B41F6F618A8B7B0D673DB88EAA6C1EA6 + 8EB793DF7E346163F18E268487D55737 isa PBXBuildFile settings @@ -1990,114 +1883,175 @@ - 1AF8DCD5AE0531A3BCE093BF7C602322 + 39BA61E5926FD0261D121C768C52925B + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.xcconfig + path + Pods-PLCameraStreamingKit.debug.xcconfig + sourceTree + <group> + + 39EDC52AEFCEDA5BB47716DA698B1950 fileRef - 1E1D0354D41178DDB496283C2EA2F2BA + 7E6CA6F06E2E937025AAD8F9AA49DD11 isa PBXBuildFile settings - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 + ATTRIBUTES + + Public + - 1B0CC3E7D2AF852AAA90AB53BF3B6CCE + 3B2CA186D75D0182B5A04ABC8CC02AE1 includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.objc + sourcecode.c.h name - GPUImageLineGenerator.m + KSSignalInfo.h path - framework/Source/GPUImageLineGenerator.m + Source/KSCrash/Recording/Tools/KSSignalInfo.h sourceTree <group> - 1B0F8CA0E79BAF2A98427F656AB99CF2 + 3B34E9C1892FE5E53753BFA31004CA41 - fileRef - 20BAD3ECC4E9904226C5CB3D4C1E4F0E + children + + 3E6DB9C4E63CD1E8A758D588ECC32AA9 + 1F5B48D03BFCC68E8AD2663FF0618C10 + EB4273303F792121B0E99C8B3305C8E9 + 1291CED785FA7516ACB46C8CD7212175 + D2D3F2477FA751857D5D5B0A7963EC9F + DCCC56209E516169E7F42F46EFBCBA99 + isa - PBXBuildFile + PBXGroup + name + Base + sourceTree + <group> - 1BB3CC419381B9A7BE12BF7E191B4F51 + 3B5A64EDE47B37741500AE4957ECDAAE - fileRef - 899A02A5C8C6DA97FCFD228CD98A3210 + includeInIndex + 1 isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + KSCrashReportFilterBasic.h + path + Source/KSCrash/Reporting/Filters/KSCrashReportFilterBasic.h + sourceTree + <group> - 1BF148E72042190034D3B45697A9ACBC + 3C4CE671C45A48E7752F75AB005E8275 - fileRef - 5D5F62A97FEB335D5F55BEFAB0AA1CBA + children + + C9D8909CD1BB634C511B7F635B884953 + 6DC028B5567BE94DBF2A8638A023857E + isa - PBXBuildFile + PBXGroup + name + AppleFmt + sourceTree + <group> + + 3C524E09BA8680653B4C660271920345 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + KSObjCApple.h + path + Source/KSCrash/Recording/Tools/KSObjCApple.h + sourceTree + <group> + + 3C98ABC2D561BF92CD06C8DAAF5A8E4C + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + KSHTTPMultipartPostBody.m + path + Source/KSCrash/Reporting/Tools/KSHTTPMultipartPostBody.m + sourceTree + <group> - 1C1902A08DCCC754E047D82EC0302F72 + 3CB33227F8436D223A9BAA94D4EE3D53 fileRef - A25BA2D4D9D922A6E316F92313FFFD30 + EA30E1ECF5E4F934DE791B352FE6DDDF isa PBXBuildFile settings - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 + ATTRIBUTES + + Public + - 1C5EBB36901B5E0F59C9DC0C4DB42711 + 3CB9C79E9C468DC2452A567CFEA63549 fileRef - 9D9FDA83E3DEE286A2EB1AE2A3DF723E + C852AF4EFDBA90A69AF4085F493B98EC isa PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - 1C64B847A140EE5CA8AC53B782D352B0 + 3D39FF6D2C5D4FFEC2E1D0FC750617FA includeInIndex 1 isa PBXFileReference - lastKnownFileType - sourcecode.c.h name - KSSystemInfoC.h + KSCrashSentry_Signal.c path - Source/KSCrash/Recording/KSSystemInfoC.h + Source/KSCrash/Recording/Sentry/KSCrashSentry_Signal.c sourceTree <group> - 1C8F786DF81D82A063D3F7606FF24B5C + 3D3C18F05A21CC7ECE62E134511EC4B0 includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.objc + sourcecode.c.h name - GPUImageMotionBlurFilter.m + KSCrashReportFilterGZip.h path - framework/Source/GPUImageMotionBlurFilter.m + Source/KSCrash/Reporting/Filters/KSCrashReportFilterGZip.h sourceTree <group> - 1CA93A775E23E1B333B00A58DDC38E05 + 3E6DB9C4E63CD1E8A758D588ECC32AA9 includeInIndex 1 @@ -2106,69 +2060,56 @@ lastKnownFileType sourcecode.c.h name - KSCrashCallCompletion.h + Container+DeepSearch.h path - Source/KSCrash/Recording/Tools/KSCrashCallCompletion.h + Source/KSCrash/Reporting/Filters/Tools/Container+DeepSearch.h sourceTree <group> - 1D310FC6C5F145244DDC2F25F5F4C52D - - fileRef - 732442EDE614BE22817490AA6ACD94BF - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 1D7ABD1155F542414C6F714D2E2016E5 + 3FD026CF6AE6BB8E9FD8EFD8F22B0957 includeInIndex 1 isa PBXFileReference + lastKnownFileType + sourcecode.c.h name - Punycode.cpp + handshake.h path - Source/KSCrash/swift/Basic/Punycode.cpp + Pod/Classes/pili-librtmp/handshake.h sourceTree <group> - 1D8F8BB230399E06763B41CFB509DCF4 + 4047B74704DBFD526F41AB4B9E48774C fileRef - DC1EDCB2F0D7F0E2CF706651A8A7DA6D + 76EE931BE8DC6039011FF32C5448E603 isa PBXBuildFile settings ATTRIBUTES - Public + Project - 1D9CD952FF9D2A15089783DE729811A8 + 4077F158CE58DF9F55136258BF3E32BC - includeInIndex - 1 + children + + 857A37F970203842C373BD8CE271D9B8 + 7665187E91CBCA09063EFE48E666F5AE + isa - PBXFileReference - lastKnownFileType - sourcecode.c.h + PBXGroup name - GPUImageLightenBlendFilter.h - path - framework/Source/GPUImageLightenBlendFilter.h + Alert sourceTree <group> - 1D9E0E73CFC5D12F73B53BE58202BB30 + 40D07FA9367F8737B4B590E4D4C758F8 includeInIndex 1 @@ -2177,13 +2118,20 @@ lastKnownFileType sourcecode.c.h name - QNResolverDelegate.h + KSCrash.h path - HappyDNS/Common/QNResolverDelegate.h + Source/KSCrash/Recording/KSCrash.h sourceTree <group> - 1DA27B908CA2B43C391117CA48D6AE78 + 415D5EC2BBFB334CB403BC198ED0A8DA + + fileRef + 466A81354BE51A1A9B0182B17FBB8093 + isa + PBXBuildFile + + 43DF60903AF1550F7DA2D2E3427D0251 includeInIndex 1 @@ -2192,16 +2140,16 @@ lastKnownFileType sourcecode.c.h name - GPUImageThreeInputFilter.h + PLStream.h path - framework/Source/GPUImageThreeInputFilter.h + Pod/Library/include/PLStreamingKit/PLStream.h sourceTree <group> - 1DD32DA67114B71F4D8ECC698ED19639 + 4482FA087AB33DD3B710C5509F13A82E fileRef - 330225816CCEEE73B873C7A87DDB4E0A + A8D515AB60BE1F1863848A704AAA777A isa PBXBuildFile settings @@ -2212,7 +2160,14 @@ - 1E1D0354D41178DDB496283C2EA2F2BA + 449677A54DC9CDB8C8A47BEE12BB0A2E + + fileRef + 68218C6D88CF111D5843FA6D982A4E69 + isa + PBXBuildFile + + 452C1D429004E4ABE95B02D7C367FD4B includeInIndex 1 @@ -2221,13 +2176,13 @@ lastKnownFileType sourcecode.c.objc name - GPUImageFASTCornerDetectionFilter.m + KSCrashReportFilterStringify.m path - framework/Source/GPUImageFASTCornerDetectionFilter.m + Source/KSCrash/Reporting/Filters/KSCrashReportFilterStringify.m sourceTree <group> - 1E533413165AA54DA401C922C4A445F3 + 452D0249CAD2B9C52380D1A6E2739795 includeInIndex 1 @@ -2236,16 +2191,16 @@ lastKnownFileType sourcecode.c.objc name - GPUImageGrayscaleFilter.m + KSCrashReportStore.m path - framework/Source/GPUImageGrayscaleFilter.m + Source/KSCrash/Recording/KSCrashReportStore.m sourceTree <group> - 1E7F8E001CED4EE74B3210D32064F1A9 + 45756F502953DCEA5C0FCCB92FFBAB0A fileRef - 160746860BB84D12336A96619DCCA283 + 67346DD6DB02C1C3A9B4361F2AF91E64 isa PBXBuildFile settings @@ -2256,60 +2211,36 @@ - 1EC8F0F88F4F7EF339CFF58047B60167 + 45FFEBFFC206EC11170FA5ABD356ADAE fileRef - 5716473DEBCF4611FC87929555E55AAC + 920FCA94CB0C1A190E45022D58058890 isa PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 1EFA0C24ED0810A9B0BEC11810A9EFE7 - - fileRef - 0F0E38AA5A53967EB5308B2150FD5D17 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 1F0090117B1DF9B48670BE500F02FC1C - - fileRef - D9FD081816CF09A146D2BFBCA7C3CBC3 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - 1F6282B7656CD08F3A6790808132E63A + 46171E7F8252F3147BB46A9CB3190260 includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.h + archive.ar name - GPUImageLinearBurnBlendFilter.h + libPLStreamingKit.a path - framework/Source/GPUImageLinearBurnBlendFilter.h + Pod/Library/lib/libPLStreamingKit.a sourceTree <group> - 1F6783F6458C6EC2F0CB14EF08B9B4E6 + 4661A9B6FDB909046B39129B83057A14 + + fileRef + 9C16E44DD717AC30BA3655027D1D9234 + isa + PBXBuildFile + + 466A81354BE51A1A9B0182B17FBB8093 includeInIndex 1 @@ -2318,13 +2249,13 @@ lastKnownFileType sourcecode.c.objc name - GPUImageSharpenFilter.m + KSCrashReportFilterJSON.m path - framework/Source/GPUImageSharpenFilter.m + Source/KSCrash/Reporting/Filters/KSCrashReportFilterJSON.m sourceTree <group> - 1F6C934BB152E2140627865D5D9D2573 + 467667C9387D4BA6557221404F910609 includeInIndex 1 @@ -2333,28 +2264,27 @@ lastKnownFileType sourcecode.c.h name - KSCrashReportFilterBasic.h + KSCString.h path - Source/KSCrash/Reporting/Filters/KSCrashReportFilterBasic.h + Source/KSCrash/Reporting/Tools/KSCString.h sourceTree <group> - 1FAD8D1CE26A60925D4D109A47C78094 + 46A7697C447617F43B7EE2BB22F62434 - includeInIndex - 1 + fileRef + 9413000CCFC048AD3A7933974E376DF3 isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageOutput.h - path - framework/Source/GPUImageOutput.h - sourceTree - <group> + PBXBuildFile + settings + + ATTRIBUTES + + Project + + - 1FFC29D5E47BB4AFF4793103D29004DA + 4756AA6FE775C0EA182AFA5EF9EBAFA9 includeInIndex 1 @@ -2362,40 +2292,120 @@ PBXFileReference lastKnownFileType sourcecode.c.h - name - KSCString.h path - Source/KSCrash/Reporting/Tools/KSCString.h + PLAudioCaptureConfiguration.h sourceTree <group> - 207719CEB9D2C2FE0C1A52F863A5E808 + 47A8546B1885208B44A30FA16B921D89 fileRef - 5DF8B0CCC4087B37517384BCA8F33184 + 0AFCB5ACD5E33AE9D5564511A7279A90 isa PBXBuildFile settings - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 + ATTRIBUTES + + Project + - 207F45FEDECD0C2908DFAADA7F4E691B + 47FD504D03B81A75763C96AD06A2B9AA + + buildActionMask + 2147483647 + files + + 02F759167922229872A47ACEDDED19C2 + A84AB6BCD4B34A05D1394B790FDF4F5E + D8A64AF7A4577A15FEBEACFF8BD6B5A6 + C4A764A117E9C166FEF5A6739B3C0977 + 697C10509B5A2F26820D39DD7702E669 + 10172C294B7E36CD6D3DE68EDD993532 + 8D8FED742A729A6091B2D43D4619929B + 45FFEBFFC206EC11170FA5ABD356ADAE + 019B49E790C4D71906C23D9AFA00E19E + 1BF148E72042190034D3B45697A9ACBC + 150B2E074A9B9531E1996456C1463334 + 2A47FA8EA87AA79682498AF5CAEB1536 + D5BA14E2C771E4B129AB8CFB9DC5B307 + C5311B346ED3865015653FDCA4CFE075 + B8B4EC9246AA6F0A31CD3E77ACA98462 + 1747AA93BC8A44E84FD42E4A42F3E2D6 + B5A9717B3F7C395AE0FDE9BC10492D10 + 5F4C81863CF90A970B3D568784CC9511 + 14D14DFF582BD5222CCEEA1C9DF32554 + D2BFAEDBD8058CD7676DA2BABAEC5CEC + B5D95E56939ACD41F6372FB9940F7F06 + 415D5EC2BBFB334CB403BC198ED0A8DA + B484717FD06021EEBD37796F17B108EB + 35580FE7C1FA5569DE6FCF6DE389D1CE + EB2CEAA5A092583A3FE46ECD066C4087 + E6A8B02BC636068AD7DBF96657A5826C + 8E246454AF23117CC3E4FB02DBD592A8 + E7A034A24FDB86907EC92A7227DC220E + 3316707187A498E2CD252243F83E6B0D + B8ED0B47606233B06D40C67B229579BB + D37C6388B712549C11FDFE2AD85C1600 + D1FA7FBAAA8D7461AEDFB04701FA4E53 + 24C17A74FB804BE5D4D25EA746BC0C02 + 9396A0C10B2F95EE74A93CE22CC315E7 + E52CB36F6FB5B22D80D3ED5B8994AFAA + 1B0F8CA0E79BAF2A98427F656AB99CF2 + 4661A9B6FDB909046B39129B83057A14 + E3D14B0AE929FEB7B6C7505A3B54EB26 + 065B9FB6199340EC0652CA62BF0DFCCA + A1B746F70F10AB6E7B1B264B11875144 + A5CCDF66DF82E33E81E8C254EC0CF99F + 2E0F2C319D3A1AB42BFA6AA47618823D + 8823B9C91D9A4B482685EEE106F8B97A + 003B3C8CAF8E9940D888935B688EC426 + 072388CE2D585FE6C118392E1EFE3D4C + C57C689128CAADC8FBC2853A107818DA + 9E12A65403EEC3FFE1EA1E942F4B6F4A + D9D5F4DEBF510D55A4800992A8650F3F + 7DCE78487C34BF62A3E9AC45B9456067 + 6009A72EE18006D841BD743EE9DFFBE7 + 90028EC691399E7E3B5FD391F5E02189 + B21F15F22C29175E25172312B8C98D81 + 5C170752795742E0D4C4C56D8775238C + E36BADA9F6370D253690571B501DABF6 + 0FB8F2E74778DE8CCB7EADE075A82E15 + BBE9EAE7D5813F7762C443D0D5C6DAD7 + E23C3750B13C0C02EB8550A2B6A07078 + 05C3B8BD697727908D761BD327423E31 + D27369D06E1FCD04644F0A51A4B7DE95 + E8E0DEC25B76A9EB8B00772B8075A157 + EA0AC59666797ECC9860FC4B8F95C231 + FD72FA8AF432A95E9F8B40A29B20FA00 + 0CDBD794EE2AF3140E1CC3AFECD52842 + F7478322444B58EE993D0C9AF10F9833 + 7902649584F64EA5A1335AE65645D9E1 + 4E607254C750B2F611615A51919B415B + 0DB5174DB7E168935006D22E78068C7E + F88F26CAFBFE8D62AA42381DD85E23EC + + isa + PBXSourcesBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 48722B0625674F8BDB3D48591A3398E4 fileRef - 2C0B44DD04F8ABA584B33720D8960281 + 9317DE5F5C832747A6C7A413D78C5EFF isa PBXBuildFile settings ATTRIBUTES - Public + Project - 2083637A2E0B7D8BFC2E8A7DE3946A72 + 48DECC4AF9AB2E28F8BBC691A591474A includeInIndex 1 @@ -2403,28 +2413,17 @@ PBXFileReference lastKnownFileType sourcecode.c.objc - path - Pods-PLCameraStreamingKit-dummy.m - sourceTree - <group> - - 20BAD3ECC4E9904226C5CB3D4C1E4F0E - - includeInIndex - 1 - isa - PBXFileReference name - KSCrashSentry_Signal.c + KSCrashReportSinkQuincyHockey.m path - Source/KSCrash/Recording/Sentry/KSCrashSentry_Signal.c + Source/KSCrash/Reporting/Sinks/KSCrashReportSinkQuincyHockey.m sourceTree <group> - 20DCF5774E0092EC0DDCAC8F34986E78 + 4A26D9BBBA236A59131DED87FD10CA0C fileRef - B3C05379FD4C1FC0FB63CEF6CF90AA18 + DC45576FE9876290AF62984B64ADDB79 isa PBXBuildFile settings @@ -2435,37 +2434,7 @@ - 20FE481B177D78E07C02703C790B7A91 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageCrosshairGenerator.m - path - framework/Source/GPUImageCrosshairGenerator.m - sourceTree - <group> - - 215797708876AE66D4A0187D14F4F1F6 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageBuffer.h - path - framework/Source/GPUImageBuffer.h - sourceTree - <group> - - 21A8AA0077CB3B47E078ED3EC938EE75 + 4BE06A4122AF24BABFF5A41EC382724F includeInIndex 1 @@ -2474,25 +2443,27 @@ lastKnownFileType sourcecode.c.h name - QNDnsManager.h + KSCrashSentry_NSException.h path - HappyDNS/Common/QNDnsManager.h + Source/KSCrash/Recording/Sentry/KSCrashSentry_NSException.h sourceTree <group> - 21DD1C3C0127BDDBE5E28FEE1A45E5C0 + 4D8609EB689B9FC5F4474F7F38A317AC fileRef - AE03B11A67332C072FB78F1FC6D79C81 + 24E86D248E46DE840446BBD74C12973B isa PBXBuildFile settings - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 + ATTRIBUTES + + Public + - 21F25F7849F9B78D38AEB81B36238632 + 4DBBA9B20315903FA594C7E13A826C89 includeInIndex 1 @@ -2500,45 +2471,48 @@ PBXFileReference lastKnownFileType sourcecode.c.objc - name - GPUImageSoftLightBlendFilter.m path - framework/Source/GPUImageSoftLightBlendFilter.m + KSCrash-dummy.m sourceTree <group> - 227A38D53B31ECCFB050EC06A20B5694 + 4E607254C750B2F611615A51919B415B + + fileRef + 825C3031BB628FAE2BBD1412F6630EC1 + isa + PBXBuildFile + + 4E7CE311BE5327A45D89151C067574A6 + explicitFileType + archive.ar includeInIndex - 1 + 0 isa PBXFileReference name - KSMach_x86_32.c + libKSCrash.a path - Source/KSCrash/Recording/Tools/KSMach_x86_32.c + libKSCrash.a sourceTree - <group> + BUILT_PRODUCTS_DIR - 22B06CADFEF7169B8A96E2143E2ADF5F + 4F391DEB7D0464A5325A227DB225C244 - includeInIndex - 1 isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc + PBXTargetDependency name - QNResolver.m - path - HappyDNS/Local/QNResolver.m - sourceTree - <group> + pili-librtmp + target + 2BAC7CF49C86172B8F10A9ADFC08EF59 + targetProxy + 70234DF393C0F79335F5532A42706B72 - 22C5B34B6E917437EEB6A5D458B7185B + 4F62C1BBC8273FB54C8CAFBB99061117 fileRef - 4FB974AED868CD2EF8D3912AE070516D + C45CED0928C6D802E4DCF382336D77B0 isa PBXBuildFile settings @@ -2549,47 +2523,79 @@ - 22FD8D1B85EEA67298F0AE0567C9C539 + 50D8645A0B547C3A6511E6CAEC652EA4 includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.objc + sourcecode.c.h name - GPUImageBulgeDistortionFilter.m + KSCrashInstallation+Private.h path - framework/Source/GPUImageBulgeDistortionFilter.m + Source/KSCrash/Installations/KSCrashInstallation+Private.h sourceTree <group> - 2326C7C92075A44B14DB2315EB030438 + 50EB9596823914695B4699885CB9C741 includeInIndex 1 isa PBXFileReference lastKnownFileType - text.xcconfig + sourcecode.c.h + name + PLMacroDefines.h path - GPUImage.xcconfig + Pod/Library/include/PLStreamingKit/PLMacroDefines.h sourceTree <group> - 233C57898EC01A6505DED928A34D0F00 + 51197DE2DA1BB45F0A1A6B7ADBA793B0 + + buildConfigurations + + 944E1901D8080C72DDDD6D3DE93B09FE + B54229921BE662CAD7F875C116ECEC5E + + defaultConfigurationIsVisible + 0 + defaultConfigurationName + Release + isa + XCConfigurationList + + 515153F8D784FB97CEA0B3CA439ADB0C fileRef - 39A290037E708BF4D292E78C62E40D54 + 5F442BDAD3E1C1E10AD33D3A0D9C64E7 isa PBXBuildFile settings - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 + ATTRIBUTES + + Project + + + + 515BFF8C5DA33A9C8440F226B08F21BA + + fileRef + 04C6B40F044473E6199E93D4B7D9A556 + isa + PBXBuildFile + settings + + ATTRIBUTES + + Project + - 241C6D7BA40F4900853C56A67B674E31 + 5365DB7D2970A76B3DEEDEC881E87E03 includeInIndex 1 @@ -2598,16 +2604,29 @@ lastKnownFileType sourcecode.c.h name - QNHex.h + KSCrashInstallationQuincyHockey.h path - HappyDNS/Util/QNHex.h + Source/KSCrash/Installations/KSCrashInstallationQuincyHockey.h + sourceTree + <group> + + 54032FA324D708D6195A8626B028EE0A + + children + + 650EAE39B2A13B982CCF6F38868E9E25 + + isa + PBXGroup + name + precompiled sourceTree <group> - 2478DBC8D5E78606EE8C0C9909D15329 + 540CD03258D73E25C77689F9042BD6BB fileRef - 260ADE460929451E6B07734408BA6695 + 467667C9387D4BA6557221404F910609 isa PBXBuildFile settings @@ -2618,39 +2637,57 @@ - 24C17A74FB804BE5D4D25EA746BC0C02 + 55B03707239576D5F3391B915168323F fileRef - 4DA44BA2E1354E55C22E3CAA2CC439CC + 073E9C3B95C7EFE423EDC196613F1B1C isa PBXBuildFile - 24D02CF9463A8487350D5FE58C5ADADB + 55CCE40B43DFDDD6A3025DF4BEA62200 includeInIndex 1 isa PBXFileReference + lastKnownFileType + sourcecode.c.h name - KSFileUtils.c + StringRef.h path - Source/KSCrash/Recording/Tools/KSFileUtils.c + Source/KSCrash/llvm/ADT/StringRef.h sourceTree <group> - 24DB00A1CF027B05D37F3079FFCC4AF7 + 5658DCB3B12C0F2A4D4C50977EE75722 fileRef - 6CB153B8FF313FC4285556594B298BD1 + 05ABE81BE121DA3B51ABED6660183169 isa PBXBuildFile settings - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 + ATTRIBUTES + + Project + - 24F811993EE75392D4BFD49DE58A344E + 5677698E34A33FC193C2043620443E09 + + fileRef + 277DA84826E644E06B0B607E75280336 + isa + PBXBuildFile + + 56E4ED59678EA36A2D215331E9BEFE2D + + fileRef + E536D4CBFAA0F78D2348532AEA7B832D + isa + PBXBuildFile + + 57153598DA2A7DB2D3F850FE732F8D3D includeInIndex 1 @@ -2659,118 +2696,104 @@ lastKnownFileType sourcecode.c.h name - GPUImageRGBOpeningFilter.h - path - framework/Source/GPUImageRGBOpeningFilter.h - sourceTree - <group> - - 251972E17B9EAB7FCFE3AEC91CDACA3A - - children - - 2326C7C92075A44B14DB2315EB030438 - 2EBF2541A6955F78DC2CA6B9B6E4DF00 - 03791D79410C8D722D68ED292906E16C - - isa - PBXGroup - name - Support Files + KSCrashC.h path - ../Target Support Files/GPUImage + Source/KSCrash/Recording/KSCrashC.h sourceTree <group> - 2537E6A0E2E058BBCA6E7E2951127C5A + 572E8DD7016F54AC5930B57774BD202C includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.h + sourcecode.c.objc name - GPUImagePixellatePositionFilter.h + KSCrashInstallationVictory.m path - framework/Source/GPUImagePixellatePositionFilter.h + Source/KSCrash/Installations/KSCrashInstallationVictory.m sourceTree <group> - 25F037BF9D82014B39AEB04A8CE0F9B5 + 57541CA0FE35976A44C81A79315E1FCB fileRef - 2EC4A3FD0C6A821E91C5DBDE0B6A653B + 2FFBB07016567EADEA11DFEDEF42314F isa PBXBuildFile settings ATTRIBUTES - Public + Project - 260ADE460929451E6B07734408BA6695 + 578B3AF4962BC50E096A2D6E6791FA84 - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageLuminosity.h - path - framework/Source/GPUImageLuminosity.h - sourceTree - <group> - - 2681E58815FB1BFA9DC82C1552A9BBFC - - includeInIndex - 1 + children + + 125A369C6EAACFA85A94047A14C5C77B + D62DC333B2021049ABA2882602F11DF2 + isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc + PBXGroup name - GPUImageLuminosity.m - path - framework/Source/GPUImageLuminosity.m + Sets sourceTree <group> - 2698FDF76B3B18DFD42A939C9D782052 + 57BE0671CEE88A84BA5CEBEB2C0D0FF1 fileRef - 6434BAC51E5E83374A5E560025C47C2C + 0F4E004199B099960633EA91F156C094 isa PBXBuildFile settings ATTRIBUTES - Public + Project - 26D312363BA73C26A62AB8FEF82F2C64 + 583E9C7A7859693C883DCBE9D2BE2277 - includeInIndex - 1 + children + + DFB50BEF61D6A7D6C1EA4CE8A3BF6190 + isa - PBXFileReference - lastKnownFileType - sourcecode.c.h + PBXGroup name - GPUImageDifferenceBlendFilter.h + Library path - framework/Source/GPUImageDifferenceBlendFilter.h + Library sourceTree <group> - 26FA0E6B1AB439B3251BCD334D24404E + 5913A557A824E36148BA5D027DF390AE + + buildActionMask + 2147483647 + files + + 999BC088CF01F4A8C4FD5343E02BE09B + A86197F4F3C92350321F83ED2B8599DE + 449677A54DC9CDB8C8A47BEE12BB0A2E + B814AB108E3DB51D7C04F0C3328957AD + 08464F74EEB7A877C5C5493F8E7BB504 + 01434075420B08CC4232C4AB1051C309 + 614172618531148E73F7587C132D3325 + + isa + PBXSourcesBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 5A0A0B242BB448720D9187E00693E0ED includeInIndex 1 @@ -2779,13 +2802,51 @@ lastKnownFileType sourcecode.c.objc name - GPUImageHistogramEqualizationFilter.m + QNIP.m path - framework/Source/GPUImageHistogramEqualizationFilter.m + HappyDNS/Util/QNIP.m + sourceTree + <group> + + 5AC3A11679CADE5423C8DCC5EAF0C6CD + + buildConfigurationList + 51197DE2DA1BB45F0A1A6B7ADBA793B0 + buildPhases + + 79386F6F0DAF715D018A6685423A0BE3 + A13389E77DE8D8E996BFE29ECA8D9EEF + 02C58D33C33D721EFA737E386CBEFAB6 + + buildRules + + dependencies + + isa + PBXNativeTarget + name + HappyDNS + productName + HappyDNS + productReference + E478E47B6322787EDC50BDF78BED809F + productType + com.apple.product-type.library.static + + 5AF2F88648B6F77C118B236B969EE266 + + children + + A6EE7A8B2AB31AC5EB693557E785553D + + isa + PBXGroup + name + Targets Support Files sourceTree <group> - 2757C1E0B437B9E0A90FCB7E248C7B77 + 5BA590791E0404AA6ED1C969693381DF includeInIndex 1 @@ -2794,23 +2855,45 @@ lastKnownFileType sourcecode.c.h name - KSBacktrace_Private.h + Casting.h path - Source/KSCrash/Recording/Tools/KSBacktrace_Private.h + Source/KSCrash/llvm/Support/Casting.h sourceTree <group> - 2769E511EA44A322FDFE6A52BE53D378 + 5C170752795742E0D4C4C56D8775238C fileRef - DBE8F2B284BD7FE7975C46593CDAC655 + 0890A7B00E4158BE62E339F57F5E9DC2 isa PBXBuildFile - 2787BE5D16ADE0909CC180D1FA82EB81 + 5C637E17DFEB3C643A2B155A46735515 + + children + + EA30E1ECF5E4F934DE791B352FE6DDDF + 252586D5F1BFAF3656FEBC03A0889EE3 + DEEA185DE3E2C3E02E713F3FFA661802 + 79898051B5D1324F8403D689F819CE28 + FBD39B0945F7D173EE9C739B9814738A + 48DECC4AF9AB2E28F8BBC691A591474A + 5F523C4B5C7D68CEBA1D0C0581306F5D + E8CCE3B0681838AD094BD12A50667246 + 024EAEF8C47CA27492618A6CD9AADFA3 + 9FB7542EFC655ECEB14E60F0EC58C1B8 + + isa + PBXGroup + name + Sinks + sourceTree + <group> + + 5D57ED4ACC1A4C58DC0370588694129B fileRef - 87664A8F0633FF91070DED1C712D5491 + 69E73A68FFA57F66898491C3BDCB11B9 isa PBXBuildFile settings @@ -2821,102 +2904,75 @@ - 280D3D38C7D879EE2B0FEB9BC854EAB5 + 5DAB3AAE5D970F6BA3ECDCB0B7ACECB2 - includeInIndex - 1 + children + + 087D5ADEE133FCDA2B1BA7B40B11EE33 + FB842089FFEB75C83EDEF026F34B149A + FF30EC24D39A1B9FAAE10C4B6D2F0A46 + isa - PBXFileReference - lastKnownFileType - sourcecode.c.h + PBXGroup name - GPUImageColorBurnBlendFilter.h + Support Files path - framework/Source/GPUImageColorBurnBlendFilter.h + ../Target Support Files/HappyDNS sourceTree <group> - 2820806159AF08038E20C7BC162848A7 + 5DC18321CDA99413DD98243EE63A0DD6 - includeInIndex - 1 + fileRef + A701716FFEE675C691924B5DD5AD7F5B isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImagePolarPixellateFilter.m - path - framework/Source/GPUImagePolarPixellateFilter.m - sourceTree - <group> + PBXBuildFile + + 5E74345EC178C674D4D7E09036076075 + + fileRef + 9C885F5CB7C86E5375642A7F6F53B5D3 + isa + PBXBuildFile - 2834780AD10C7054DFF06F2C831C7437 + 5F442BDAD3E1C1E10AD33D3A0D9C64E7 includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.objc + sourcecode.c.h name - GPUImageDivideBlendFilter.m + Optional.h path - framework/Source/GPUImageDivideBlendFilter.m + Source/KSCrash/llvm/ADT/Optional.h sourceTree <group> - 2873AB86FD72D07D8DC80F33F5715934 + 5F4C81863CF90A970B3D568784CC9511 fileRef - 4D3F797ADF5648702A51E3B74BD9655E + 7665187E91CBCA09063EFE48E666F5AE isa PBXBuildFile - 28ACEA6B165C0A4015024FD0EB9F6BE8 + 5F523C4B5C7D68CEBA1D0C0581306F5D includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.objc + sourcecode.c.h name - QNTxtResolver.m + KSCrashReportSinkStandard.h path - HappyDNS/Local/QNTxtResolver.m + Source/KSCrash/Reporting/Sinks/KSCrashReportSinkStandard.h sourceTree <group> - 28BF349D13AA274BEE9E794AB9DD78F1 - - fileRef - 1CA93A775E23E1B333B00A58DDC38E05 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Project - - - - 28E03E16731B812EC33497D7FC59AA49 - - fileRef - F592D5D528AADB4C07BAB475D1020FCC - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 28EBA817530A57A1224BC49AE06906A1 + 5FC00098567E6CC1C4C66CBC740A2CA7 includeInIndex 1 @@ -2925,13 +2981,13 @@ lastKnownFileType sourcecode.c.h name - GPUImageLanczosResamplingFilter.h + PLVideoStreamingConfiguration.h path - framework/Source/GPUImageLanczosResamplingFilter.h + Pod/Library/include/PLStreamingKit/PLVideoStreamingConfiguration.h sourceTree <group> - 28ED4A88193818ED6A8E741A0C275DBC + 5FF2C3F3FAD0DC36ED9A53E81FF4142C includeInIndex 1 @@ -2940,53 +2996,71 @@ lastKnownFileType sourcecode.c.h name - KSReachabilityKSCrash.h + KSCrashContext.h path - Source/KSCrash/Reporting/Tools/KSReachabilityKSCrash.h + Source/KSCrash/Recording/KSCrashContext.h sourceTree <group> - 29317CA2D0CF8A4B51FA10155616DD60 + 6009A72EE18006D841BD743EE9DFFBE7 fileRef - C8F855F265BA141A17CB5759DE9FA816 + A28ADCA2E78677E0DCF5F2143AA2A7A3 isa PBXBuildFile - settings - - ATTRIBUTES - - Public - - - 29BF700F030F2FB60D20E09D80D03EAA + 6064CCF6912C39990F5ECE21398AC0FC - fileRef - 7576A7969B60A536E7B91E830088FB83 + includeInIndex + 1 isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + KSArchSpecific.h + path + Source/KSCrash/Recording/Tools/KSArchSpecific.h + sourceTree + <group> - 29C8F907EB2A36ABC9955185255A060D + 6122C16FAC90E4190B164E2BBD35E624 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + KSCrashInstallationStandard.m + path + Source/KSCrash/Installations/KSCrashInstallationStandard.m + sourceTree + <group> + + 614172618531148E73F7587C132D3325 fileRef - 1793F911D06FD8DD3E1E1BC5C31174D1 + A96401E46482B490EBA2CC6840A8710B isa PBXBuildFile - settings - - ATTRIBUTES - - Project - - - 2A1E4F631AC55E1756C9F010B5199EC0 + 61649932FAA8298AC6D88A9592DDB863 + + children + + 25A86CCA4262A1726944CCF90F946F31 + 452C1D429004E4ABE95B02D7C367FD4B + + isa + PBXGroup + name + Stringify + sourceTree + <group> + + 624C0CEA498634637CDBD0D13B8EAAA0 includeInIndex 1 @@ -2995,13 +3069,13 @@ lastKnownFileType sourcecode.c.h name - GPUImage3x3ConvolutionFilter.h + KSSystemInfoC.h path - framework/Source/GPUImage3x3ConvolutionFilter.h + Source/KSCrash/Recording/KSSystemInfoC.h sourceTree <group> - 2A2EAB22565F94059D78AD5244372E43 + 624C928C37AE0C69332B114FC679712B includeInIndex 1 @@ -3010,16 +3084,29 @@ lastKnownFileType sourcecode.c.h name - GPUImageGammaFilter.h + KSCrashReportFilter.h + path + Source/KSCrash/Reporting/Filters/KSCrashReportFilter.h + sourceTree + <group> + + 627CFA84EA1FB4397AE0C5FF046B58F0 + + includeInIndex + 1 + isa + PBXFileReference + name + NSString+Demangle.mm path - framework/Source/GPUImageGammaFilter.h + Source/KSCrash/Recording/Tools/NSString+Demangle.mm sourceTree <group> - 2A34529B875239FEBD9C5A94AC0EF0E5 + 62A67CF32ECC3C7AB2698F1F226929A7 fileRef - AA4A99ED5462E9DCA02207E3DCA158AD + D2D3F2477FA751857D5D5B0A7963EC9F isa PBXBuildFile settings @@ -3030,44 +3117,25 @@ - 2A441D102C3F72AC5C5FDD2D32B1EE78 + 633DFB668B08EA7DF044936512533D20 includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.objc + sourcecode.c.h name - KSCrashReportFilter.m + log.h path - Source/KSCrash/Reporting/Filters/KSCrashReportFilter.m + Pod/Classes/pili-librtmp/log.h sourceTree <group> - 2A47FA8EA87AA79682498AF5CAEB1536 - - fileRef - 41CD5729222343A9F0D92BB4F987F368 - isa - PBXBuildFile - - 2A8852AD0620B232223A1A9738242696 - - fileRef - 0D0E1784C4112C92A682729C85FCA8A8 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 2B584EFEBED84796D313BD4ECED766C6 + 6359AE12EF0DED3159A256BA5A861BB9 fileRef - B3C1BB8A03608886E11ED854206798C9 + EA2C9CF29357ABFF5A71E50B23A623BE isa PBXBuildFile settings @@ -3078,59 +3146,68 @@ - 2B6BFCBDF0C393329A1457970B3EB32D + 63B1FB6D04AB8C566E0BB9BEA9F406E5 - fileRef - 716E99AF71F6DC3D945730A7B12FC5F6 + includeInIndex + 1 isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + PLTypeDefines.h + path + Pod/Library/include/PLStreamingKit/PLTypeDefines.h + sourceTree + <group> - 2B911AFC36AA19C25B6783CF321D9D30 + 644C377381458730FCA19CF74C268B4D fileRef - 0339FB6F3BBFA4F1F82E07287E9D9733 + E2FFF427FC7566D0533F06B6E3F21A65 isa PBXBuildFile settings - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 + ATTRIBUTES + + Project + - 2BAC7CF49C86172B8F10A9ADFC08EF59 + 6453BC9D66D1660C6225175E75077D09 - buildConfigurationList - ED21AC54188497033489F8CBB898F51E - buildPhases + children - 5913A557A824E36148BA5D027DF390AE - 319237805A59574EC1B6C321CDA6F183 - F8A697119F2E37C79911F060F89E551D + 14746A792EF4A499F2703F0D32802118 + 78448C101AF261CA4E2E5A8347068098 + E47172D26381E8841C25CB974DF7D08B + 05D3EAF5C41A5CC5E0F80243CD20D350 - buildRules - - dependencies - isa - PBXNativeTarget + PBXGroup name - pili-librtmp - productName - pili-librtmp - productReference - 32FA81DA8F9D8CF28693853D7CFC9284 - productType - com.apple.product-type.library.static + Pods + sourceTree + <group> + + 650EAE39B2A13B982CCF6F38868E9E25 + + children + + 8159CE7483F14271FA034D1CA307D2FB + + isa + PBXGroup + name + Frameworks + sourceTree + <group> - 2BB1859A8F8A7A34FCF1922B9CBDB283 + 65DA8DEB4FB992F34D92BFA5A2BEAA31 fileRef - 020BC6A465F176D7217ACB0F225437C1 + B1AC080770A8CF26EBD39192533284B7 isa PBXBuildFile settings @@ -3141,7 +3218,7 @@ - 2C0B44DD04F8ABA584B33720D8960281 + 6631D34394C8ED41F013A7BBE88BEB8A includeInIndex 1 @@ -3150,16 +3227,16 @@ lastKnownFileType sourcecode.c.h name - GPUImageLevelsFilter.h + QNNetworkInfo.h path - framework/Source/GPUImageLevelsFilter.h + HappyDNS/Common/QNNetworkInfo.h sourceTree <group> - 2C13555ADA77177DDD5FB67DBAA09D58 + 66E84AFE041AE92454B80B3A416E12DF fileRef - 0DBCEF9E916A39FD9D1324C02B5E3C51 + CA90334591A4B0C2B025764A002C3305 isa PBXBuildFile settings @@ -3170,7 +3247,7 @@ - 2C5BD5FCA1D8E988DA851EDEEC834DEB + 67346DD6DB02C1C3A9B4361F2AF91E64 includeInIndex 1 @@ -3179,79 +3256,119 @@ lastKnownFileType sourcecode.c.h name - KSCrashReportStore.h + KSZombie.h path - Source/KSCrash/Recording/KSCrashReportStore.h + Source/KSCrash/Recording/Tools/KSZombie.h sourceTree <group> - 2CC40622081559A1F50B780E63DDC631 + 67A17433C9AFE8486B65F86970B7C435 + + fileRef + EDEA7290413972CB935E19AE32730F2E + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 67AC61A270C7E894F1CD5667C41E23D0 + + fileRef + 953CA4E3B7F1326FAC09721909C2068C + isa + PBXBuildFile + settings + + ATTRIBUTES + + Project + + + + 67C17CE9EDE2F2FF066F48845CFF418F includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.h + sourcecode.c.objc name - GPUImageVignetteFilter.h + QNDnsManager.m path - framework/Source/GPUImageVignetteFilter.h + HappyDNS/Common/QNDnsManager.m sourceTree <group> - 2D8E8EC45A3A1A1D94AE762CB5028504 + 6807DAF1AA31ED744B3298FEAE2CC427 - buildConfigurations - - B37F0F91F85060E28F1DAAB522DC7EC1 - 052A17875CB827423D627183396CEB60 - - defaultConfigurationIsVisible - 0 - defaultConfigurationName - Release + fileRef + 40D07FA9367F8737B4B590E4D4C758F8 isa - XCConfigurationList + PBXBuildFile + settings + + ATTRIBUTES + + Public + + - 2D9CEA819995A18A9CA436711FAD121B + 68218C6D88CF111D5843FA6D982A4E69 includeInIndex 1 isa PBXFileReference - lastKnownFileType - sourcecode.c.h name - GPUImageSwirlFilter.h + hashswf.c path - framework/Source/GPUImageSwirlFilter.h + Pod/Classes/pili-librtmp/hashswf.c sourceTree <group> - 2E0F2C319D3A1AB42BFA6AA47618823D + 6901638D4E4661990E30C49AA467DFEB fileRef - 24D02CF9463A8487350D5FE58C5ADADB + C32C267C3B2014E7A94CED184FE875C6 isa PBXBuildFile + settings + + ATTRIBUTES + + Project + + - 2E3766B8838D1643C2B7D1EE69C64361 + 6954208752C37D42AC6200B0324E0961 includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.objc + sourcecode.c.h name - GPUImageRawDataOutput.m + QNTxtResolver.h path - framework/Source/GPUImageRawDataOutput.m + HappyDNS/Local/QNTxtResolver.h sourceTree <group> - 2E60B908FBF83B9A87334AA0F9A85855 + 697C10509B5A2F26820D39DD7702E669 + + fileRef + 7922266915634D745A22500FABDACB46 + isa + PBXBuildFile + + 69E73A68FFA57F66898491C3BDCB11B9 includeInIndex 1 @@ -3260,16 +3377,16 @@ lastKnownFileType sourcecode.c.h name - GPUImagePicture+TextureSubimage.h + QNHex.h path - framework/Source/iOS/GPUImagePicture+TextureSubimage.h + HappyDNS/Util/QNHex.h sourceTree <group> - 2EB24BA85907562CE36E8ACEEC2EB41F + 6BAA2E2D1719BF266313816C9E93612F fileRef - A74E902354A21FB2FD63DFD4FD48843B + C9D8909CD1BB634C511B7F635B884953 isa PBXBuildFile settings @@ -3280,127 +3397,17 @@ - 2EBF2541A6955F78DC2CA6B9B6E4DF00 + 6BEE9C075C04972E09B9923B11E3643D - includeInIndex - 1 + fileRef + C852AF4EFDBA90A69AF4085F493B98EC isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - GPUImage-dummy.m - sourceTree - <group> + PBXBuildFile - 2EC4A3FD0C6A821E91C5DBDE0B6A653B - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - QNDnspodFree.h - path - HappyDNS/Http/QNDnspodFree.h - sourceTree - <group> - - 2ECC8E7DBB59923196C558633E9BEBFD - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - log.h - path - Pod/Classes/pili-librtmp/log.h - sourceTree - <group> - - 2EE717E1E5091342A9488266AAFBDC98 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - KSCrashReportSinkConsole.h - path - Source/KSCrash/Reporting/Sinks/KSCrashReportSinkConsole.h - sourceTree - <group> - - 2EF93A8AEE946C1A56112EE18A29AEFA - - fileRef - 8A6B94F6F5925E9CBC904F9AEF7847F8 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 2F08C793A543FC969986B2FFA2C59C57 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - KSCrashInstallationStandard.m - path - Source/KSCrash/Installations/KSCrashInstallationStandard.m - sourceTree - <group> - - 2F30C71F9D40A7239004845A6490C3C6 - - baseConfigurationReference - 39BA61E5926FD0261D121C768C52925B - buildSettings - - ENABLE_STRICT_OBJC_MSGSEND - YES - IPHONEOS_DEPLOYMENT_TARGET - 7.0 - MACH_O_TYPE - staticlib - MTL_ENABLE_DEBUG_INFO - YES - OTHER_LDFLAGS - - OTHER_LIBTOOLFLAGS - - PODS_ROOT - $(SRCROOT) - PRODUCT_NAME - $(TARGET_NAME) - SDKROOT - iphoneos - SKIP_INSTALL - YES - - isa - XCBuildConfiguration - name - Debug - - 2F4FEF5941A39334837742BDD4B2F8C0 + 6CAC5DEEAA0514E6E7F59C6CFF59A2A5 fileRef - 4F37E8C7DAA3D2BECE85C0AB1F54EC4B + FBD39B0945F7D173EE9C739B9814738A isa PBXBuildFile settings @@ -3411,31 +3418,16 @@ - 2F7997175B00E6BC07C24939E4073E0D - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageRawDataOutput.h - path - framework/Source/GPUImageRawDataOutput.h - sourceTree - <group> - - 2FBB6E4DCACD222DE8553B1585C6747E + 6CBB8C1D469C58F19ADC861B76BAC4D3 baseConfigurationReference - 327116CD6F856997B8D2502C5AD129D7 + FFAC5C998DA821ED7EDD0228CF79A046 buildSettings ENABLE_STRICT_OBJC_MSGSEND YES GCC_PREFIX_HEADER - Target Support Files/HappyDNS/HappyDNS-prefix.pch + Target Support Files/pili-librtmp/pili-librtmp-prefix.pch IPHONEOS_DEPLOYMENT_TARGET 7.0 MTL_ENABLE_DEBUG_INFO @@ -3460,34 +3452,7 @@ name Release - 2FBFABDB9D519E5720812D933829257D - - fileRef - 847F726A96642F45CF1751EA53AACA76 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 303B00A244AB82A548467B513409B634 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageShiTomasiFeatureDetectionFilter.h - path - framework/Source/GPUImageShiTomasiFeatureDetectionFilter.h - sourceTree - <group> - - 303F57A5752139ACF19E7FAD9F4F22B7 + 6DC028B5567BE94DBF2A8638A023857E includeInIndex 1 @@ -3496,10015 +3461,102 @@ lastKnownFileType sourcecode.c.objc name - KSCrashReportFilterGZip.m - path - Source/KSCrash/Reporting/Filters/KSCrashReportFilterGZip.m - sourceTree - <group> - - 307AE59A4B57EE153DF017146CAD3AEF - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageFilter.h - path - framework/Source/GPUImageFilter.h - sourceTree - <group> - - 30EE9D525966FB7B8639C3A457F7988C - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageTextureOutput.h - path - framework/Source/GPUImageTextureOutput.h - sourceTree - <group> - - 31765D7A5F24F16F34CC21C09B29A25F - - buildActionMask - 2147483647 - files - - D6B2A4B5F4EF02687DCE41C312217224 - E130BAF885CE9F63C6337756B2CD89DA - 5ACA822DBE47821C7113B72A43655B4D - 4F2C0365BE3B25129756AD6B61FD99F1 - 713624CCD7054229110D31A0CF80204C - AEBB84925131760C7C90553800A45F5B - 097D12AEECCEB6D2222F02646DE65FB3 - 2769E511EA44A322FDFE6A52BE53D378 - EE16990E1274D41382F6D1558D88825D - 481D7C38BC5A82F329A36F578DE1CB64 - BAE6C0A6544F8F4F7CAEC2FA774C4287 - 6988CF3A1CB7F40C38EFD0B9F46D82FC - CC71A3DC300E6218606B8EA10F425E00 - AF622D3DCDE7A624463CA806FFC90AA8 - 3B820022794BF9A79AD1DFED6A108858 - - isa - PBXSourcesBuildPhase - runOnlyForDeploymentPostprocessing - 0 - - 31849498178994220B699E9425388177 - - baseConfigurationReference - A14E2305CE89FE9C2263DBC6FA9117AA - buildSettings - - ENABLE_STRICT_OBJC_MSGSEND - YES - GCC_PREFIX_HEADER - Target Support Files/KSCrash/KSCrash-prefix.pch - IPHONEOS_DEPLOYMENT_TARGET - 7.0 - MTL_ENABLE_DEBUG_INFO - YES - OTHER_LDFLAGS - - OTHER_LIBTOOLFLAGS - - PRIVATE_HEADERS_FOLDER_PATH - - PRODUCT_NAME - $(TARGET_NAME) - PUBLIC_HEADERS_FOLDER_PATH - - SDKROOT - iphoneos - SKIP_INSTALL - YES - - isa - XCBuildConfiguration - name - Debug - - 319237805A59574EC1B6C321CDA6F183 - - buildActionMask - 2147483647 - files - - A0E36C5F85EDC1EF9FB0766C915B08B9 - - isa - PBXFrameworksBuildPhase - runOnlyForDeploymentPostprocessing - 0 - - 31D79CB8E5F1B9E05CE531EE378D886C - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageNormalBlendFilter.h - path - framework/Source/GPUImageNormalBlendFilter.h - sourceTree - <group> - - 31E25A33783C58FB035A799742E6EBE1 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageMaskFilter.h - path - framework/Source/GPUImageMaskFilter.h - sourceTree - <group> - - 3201021BF3D4BAE755203B71D8492C2B - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - text.xcconfig - path - Pods-PLCameraStreamingKit.release.xcconfig - sourceTree - <group> - - 32047914649F6DE47F151EBA3E0D6141 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImagePoissonBlendFilter.m - path - framework/Source/GPUImagePoissonBlendFilter.m - sourceTree - <group> - - 327116CD6F856997B8D2502C5AD129D7 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - text.xcconfig - path - HappyDNS.xcconfig - sourceTree - <group> - - 32B093D6A9CC44F7E262BF1E99F412BA - - fileRef - 9F311D8DF93DA1765F0E518C3446550D - isa - PBXBuildFile - settings - - ATTRIBUTES - - Project - - - - 32B15B86ACA206088E7E03DB72A96238 - - fileRef - 8CAC1F3102417835DC9CC168F6F99B9C - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 32F10E26C8D5FA98047AC3BBA3ADEC1A - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageHueFilter.h - path - framework/Source/GPUImageHueFilter.h - sourceTree - <group> - - 32FA81DA8F9D8CF28693853D7CFC9284 - - explicitFileType - archive.ar - includeInIndex - 0 - isa - PBXFileReference - name - libpili-librtmp.a - path - libpili-librtmp.a - sourceTree - BUILT_PRODUCTS_DIR - - 330225816CCEEE73B873C7A87DDB4E0A - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - KSCrashReportFilterGZip.h - path - Source/KSCrash/Reporting/Filters/KSCrashReportFilterGZip.h - sourceTree - <group> - - 3314E03E9CBA3E8E2D13EBD39165A97F - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageUIElement.m - path - framework/Source/GPUImageUIElement.m - sourceTree - <group> - - 3316707187A498E2CD252243F83E6B0D - - fileRef - 3E74B1195C426CB5F107BB0407319FA0 - isa - PBXBuildFile - - 3365B9CCDACF66239F5B1D0B2F2BA29D - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - KSCrashC.h - path - Source/KSCrash/Recording/KSCrashC.h - sourceTree - <group> - - 33ADAB1A2193E60A8BFD8AF5B7ADDBA8 - - includeInIndex - 1 - isa - PBXFileReference - name - KSMach_x86_64.c - path - Source/KSCrash/Recording/Tools/KSMach_x86_64.c - sourceTree - <group> - - 341AFBA238F5622E07CADD2D9C09FB2E - - children - - 3D2D82890C27903F01FDF9E6AFBBE49B - B5A3EE334E556A21E198B16552D6B9AF - A535BEC52B6E7EC4FC35F26E7597EB10 - 732442EDE614BE22817490AA6ACD94BF - 8D261F4966F34330768723403A925E0D - E35FE4E1AEEB9A2BAA210459DE58E0D7 - 80D2DC6144CD80E242F81C17097204C0 - 5A68C3A26CE16FA260AD1C538453BCAA - 7B63360818CC899959E58B93D83E763E - 86506E8D4E7CECA8EFE0E949401C0EBB - 4FD2CB2B28935FA9FA1CB285AFE47518 - 2ECC8E7DBB59923196C558633E9BEBFD - 9EB0F1A3C0BADC4A7A90086E0208DA98 - 774EF787230FBF7CEF6CA788AFDCBDC7 - 53B721E64339A583B98B9A503157A074 - 87DAB3728AF8C084C114410637742B19 - 40CA884FC6398509E38EA478C1DC0E56 - - isa - PBXGroup - name - pili-librtmp - path - pili-librtmp - sourceTree - <group> - - 34535A76829A4DEA9EAC85583B2A002A - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - KSCrashReportFilterAppleFmt.h - path - Source/KSCrash/Reporting/Filters/KSCrashReportFilterAppleFmt.h - sourceTree - <group> - - 34FECD939AC911AF6A05B461AD2C1F5E - - fileRef - F78FC3588F7D185DB7C3E8459DC1E74D - isa - PBXBuildFile - settings - - ATTRIBUTES - - Project - - - - 3505DCE33AF9209A01CA862524B53239 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - NSDictionary+Merge.m - path - Source/KSCrash/Recording/Tools/NSDictionary+Merge.m - sourceTree - <group> - - 350A92C6FD710AF6BF49E67AD142E4C6 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - KSCrashReportFields.h - path - Source/KSCrash/Recording/KSCrashReportFields.h - sourceTree - <group> - - 35146AB8384B4BE0CB70A22F354D200E - - fileRef - DB953CBBFB105D0C123B68E889C7129B - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 3539F8980920B472D8B552DD7F77BA04 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - KSZombie.h - path - Source/KSCrash/Recording/Tools/KSZombie.h - sourceTree - <group> - - 35580FE7C1FA5569DE6FCF6DE389D1CE - - fileRef - D6FCEA640495D290C7A4293C58C3DFF0 - isa - PBXBuildFile - - 355FF9B1F193FA3DA051046D4C640D32 - - fileRef - 8770973ACBAD38A6557000C7231940A3 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 35A6173430560CDD800C36EF343DB6A7 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageMovieComposition.m - path - framework/Source/GPUImageMovieComposition.m - sourceTree - <group> - - 35C6DD07A53DB76D2C24E042B93E20B1 - - fileRef - 50D20F893EEA4A0057281D4C9D018D50 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 365CBAAC4500AB22F6BACE8E6708E556 - - fileRef - A4F4C65C2249BB73DCE68C766EB5074D - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 36AC7E2C811F3770732C3F81F2A1EDFA - - fileRef - D2F7D654545356534565F89381414B46 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 36ADC0E37BD5BCCF327DC8963E1EA59F - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageZoomBlurFilter.h - path - framework/Source/GPUImageZoomBlurFilter.h - sourceTree - <group> - - 37A0EFE81513D262000137FC80B6D6AF - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageColorBurnBlendFilter.m - path - framework/Source/GPUImageColorBurnBlendFilter.m - sourceTree - <group> - - 37C83E1AC1289519C466DB79E1A5DF5F - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageStretchDistortionFilter.h - path - framework/Source/GPUImageStretchDistortionFilter.h - sourceTree - <group> - - 38374B9DFAA3A02B4CDD4FA207C7DBCA - - fileRef - B5A3EE334E556A21E198B16552D6B9AF - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 387FA0EE4F6697FCCF4B7FA88126C2CF - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageStillCamera.h - path - framework/Source/GPUImageStillCamera.h - sourceTree - <group> - - 38A904BBC7E35D4403A6EBBEA50412FB - - fileRef - 105DE74A8C35B8E9461A84333D835595 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 38D6EFC2D1AD594A9020E98097377EBD - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageHueFilter.m - path - framework/Source/GPUImageHueFilter.m - sourceTree - <group> - - 38E2E975DD4981181B23AFB0C3E153C3 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - Punycode.h - path - Source/KSCrash/swift/Basic/Punycode.h - sourceTree - <group> - - 38FC522671F1FCAE1A0A96F044E3846C - - fileRef - 626E3C85A43CC6B647471AE639B232E1 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Project - - - - 394E72264EEB676450E46378D9B94171 - - fileRef - 5922EA6101792D57D8ED73E9FA4022FD - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 396CD5040860512B7BED29F538E27A68 - - fileRef - 2A1E4F631AC55E1756C9F010B5199EC0 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 39745A9180A858D7AEEC3E307B565FAC - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageDissolveBlendFilter.m - path - framework/Source/GPUImageDissolveBlendFilter.m - sourceTree - <group> - - 399AFC7CE91F08A6FD5287FA4848A53B - - fileRef - 19C672571071CB9D48B375DF53D74D71 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 39A290037E708BF4D292E78C62E40D54 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageSwirlFilter.m - path - framework/Source/GPUImageSwirlFilter.m - sourceTree - <group> - - 39BA61E5926FD0261D121C768C52925B - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - text.xcconfig - path - Pods-PLCameraStreamingKit.debug.xcconfig - sourceTree - <group> - - 39EDC52AEFCEDA5BB47716DA698B1950 - - fileRef - 4399C491F419738BA0CAEB0FC3E18903 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 3A10A970D4066B807781456C79710EB5 - - fileRef - B8354383D009DEFD5B52A97AD807A0BC - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 3B282C61BFA5CB838BD548AFD14DD106 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageSolidColorGenerator.h - path - framework/Source/GPUImageSolidColorGenerator.h - sourceTree - <group> - - 3B820022794BF9A79AD1DFED6A108858 - - fileRef - 28ACEA6B165C0A4015024FD0EB9F6BE8 - isa - PBXBuildFile - - 3B9CB4DAEDC1E8DE06AC360C275669A1 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImagePixellateFilter.m - path - framework/Source/GPUImagePixellateFilter.m - sourceTree - <group> - - 3B9E011111F2B1AB28C482CDF619196A - - fileRef - C8F31130E66DDBB7E6D9F73EC858D2F9 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 3C8192DB3CDDCFCFA2C95F5E7C1EADEC - - fileRef - DE22D66FAD5E945BF296A8064EF334D9 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 3CB33227F8436D223A9BAA94D4EE3D53 - - fileRef - 2EE717E1E5091342A9488266AAFBDC98 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 3CD8F4D3F1D975A0D8A0D9E89DC61D19 - - fileRef - 4FB251126551FBAD973FEDC8B52602F1 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 3D2D82890C27903F01FDF9E6AFBBE49B - - includeInIndex - 1 - isa - PBXFileReference - name - amf.c - path - Pod/Classes/pili-librtmp/amf.c - sourceTree - <group> - - 3D68A9C15435E6CE2091476E09914389 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageExclusionBlendFilter.h - path - framework/Source/GPUImageExclusionBlendFilter.h - sourceTree - <group> - - 3DD39B9317ED0955B40FDE6FB0533C3E - - fileRef - B62C7FAEC2D3A458A2A44995F0C097F2 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 3DEADB5E0B979793FB30D2D0005CC0C5 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - RFC3339DateTool.h - path - Source/KSCrash/Recording/Tools/RFC3339DateTool.h - sourceTree - <group> - - 3E469ED7212AA53CF315D71AC8B13CCD - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageTwoPassFilter.h - path - framework/Source/GPUImageTwoPassFilter.h - sourceTree - <group> - - 3E74B1195C426CB5F107BB0407319FA0 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - KSCrashReportSinkVictory.m - path - Source/KSCrash/Reporting/Sinks/KSCrashReportSinkVictory.m - sourceTree - <group> - - 3EB9B417E6FC0A3FDFF6635509BA51E4 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - text.xcconfig - path - pili-librtmp.xcconfig - sourceTree - <group> - - 3F1D84B88CDD5FB70DABB83652458EEB - - fileRef - 0B699C6DA38D9E5DF91689201AD0F141 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 3F5C2DE2B654D3E10F7AB470559B282B - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - QNRecord.h - path - HappyDNS/Common/QNRecord.h - sourceTree - <group> - - 401A9B227A5CEEC7590D42C50C81A194 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - QNResolvUtil.m - path - HappyDNS/Local/QNResolvUtil.m - sourceTree - <group> - - 40276BB715F42BB6D383AFF14EC63DF5 - - fileRef - B6051A06EA74E0039E6E458CFA586D9E - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 4029E258831C21E188134202E44233A5 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImagePerlinNoiseFilter.h - path - framework/Source/GPUImagePerlinNoiseFilter.h - sourceTree - <group> - - 4047B74704DBFD526F41AB4B9E48774C - - fileRef - 9CA77467B5AE080DCFED7737A2353B53 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Project - - - - 40CA884FC6398509E38EA478C1DC0E56 - - children - - 3EB9B417E6FC0A3FDFF6635509BA51E4 - EB1E79E9289153F787F0F6EA7916CCB6 - A5BC3AF9ED13B98282B24B4C45F62F38 - - isa - PBXGroup - name - Support Files - path - ../Target Support Files/pili-librtmp - sourceTree - <group> - - 415D5EC2BBFB334CB403BC198ED0A8DA - - fileRef - 0B40CF909BDF85FFA0BFA32CC29BC930 - isa - PBXBuildFile - - 4169E7B4B14155D74B84857473F729B4 - - fileRef - 010C6A9C0D535A158DB0F65AD8702D88 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 41CD5729222343A9F0D92BB4F987F368 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - KSCrashInstallationEmail.m - path - Source/KSCrash/Installations/KSCrashInstallationEmail.m - sourceTree - <group> - - 41E82233D7BE68D8C28215FF93E0BEF3 - - baseConfigurationReference - 327116CD6F856997B8D2502C5AD129D7 - buildSettings - - ENABLE_STRICT_OBJC_MSGSEND - YES - GCC_PREFIX_HEADER - Target Support Files/HappyDNS/HappyDNS-prefix.pch - IPHONEOS_DEPLOYMENT_TARGET - 7.0 - MTL_ENABLE_DEBUG_INFO - YES - OTHER_LDFLAGS - - OTHER_LIBTOOLFLAGS - - PRIVATE_HEADERS_FOLDER_PATH - - PRODUCT_NAME - $(TARGET_NAME) - PUBLIC_HEADERS_FOLDER_PATH - - SDKROOT - iphoneos - SKIP_INSTALL - YES - - isa - XCBuildConfiguration - name - Debug - - 4234B3AFF291FF98EF5472201E5EF7CE - - fileRef - 6BF769096689E07BF51213D0B66BA6C3 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 4248F0718D60C2B111EADF9A03124842 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - QNDnspodFree.m - path - HappyDNS/Http/QNDnspodFree.m - sourceTree - <group> - - 426BC3D45E3263BFE4CB3FE897E78C28 - - fileRef - 88857831A02772260D9531ACB472CD84 - isa - PBXBuildFile - - 431AD92997373614E0ABA8F435617748 - - fileRef - 9FE5AA9EE443C4F5ACEF2F954E4E7EB7 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 4355B550CFD53BDB6632B00476EB72FC - - includeInIndex - 1 - isa - PBXFileReference - name - KSBacktrace.c - path - Source/KSCrash/Recording/Tools/KSBacktrace.c - sourceTree - <group> - - 435D5A3585E18EC66D89261A6411D007 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - NSString+Demangle.h - path - Source/KSCrash/Recording/Tools/NSString+Demangle.h - sourceTree - <group> - - 438452E287D667FEBF7861442F84C2F3 - - explicitFileType - archive.ar - includeInIndex - 0 - isa - PBXFileReference - name - libKSCrash.a - path - libKSCrash.a - sourceTree - BUILT_PRODUCTS_DIR - - 43851807871E2B16D97D9057E267981D - - fileRef - BB76D5471E1D0411B7C6F70C23D152D2 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 439764C765DD1A6BC5C2623460980790 - - children - - 327116CD6F856997B8D2502C5AD129D7 - 77CAE2021809AB249594DA45165E7309 - 593224ECEFA99ED4952565D1FB672B3B - - isa - PBXGroup - name - Support Files - path - ../Target Support Files/HappyDNS - sourceTree - <group> - - 4399C491F419738BA0CAEB0FC3E18903 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - KSCrashInstallation.h - path - Source/KSCrash/Installations/KSCrashInstallation.h - sourceTree - <group> - - 43AAC6FA2107B32F436D573F2A2C1568 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - PLStreamingKit.h - path - Pod/Library/include/PLStreamingKit/PLStreamingKit.h - sourceTree - <group> - - 43FE53C32091A843DD606138EC3B1917 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageLanczosResamplingFilter.m - path - framework/Source/GPUImageLanczosResamplingFilter.m - sourceTree - <group> - - 445DB472F621B4D299934C121AF73C3D - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - KSCrashInstallation+Alert.m - path - Source/KSCrash/Installations/KSCrashInstallation+Alert.m - sourceTree - <group> - - 447BE308F88DFB632722B43E73A675AB - - fileRef - F9D42910F8095A6ADD393C7E0B703E17 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 4482FA087AB33DD3B710C5509F13A82E - - fileRef - 80D2DC6144CD80E242F81C17097204C0 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 449677A54DC9CDB8C8A47BEE12BB0A2E - - fileRef - 7B63360818CC899959E58B93D83E763E - isa - PBXBuildFile - - 451F40CE508F63AF6213EA9B3B4DE5D5 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageBilateralFilter.m - path - framework/Source/GPUImageBilateralFilter.m - sourceTree - <group> - - 4529F378CA61BBA01819856EA7B7ACEC - - fileRef - C8F217CDE37BFF7C5822D3280E224778 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 45756F502953DCEA5C0FCCB92FFBAB0A - - fileRef - 3539F8980920B472D8B552DD7F77BA04 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 45FFEBFFC206EC11170FA5ABD356ADAE - - fileRef - 4B6FCC157424394EEA36252137C12EE0 - isa - PBXBuildFile - - 465942C7B096ECF57BCB6B16A858C94C - - fileRef - 24F811993EE75392D4BFD49DE58A344E - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 4661A9B6FDB909046B39129B83057A14 - - fileRef - 772EFE207902AC45C880655A35C91230 - isa - PBXBuildFile - - 466B9B2F77924580242850A2125274B8 - - fileRef - 1B0CC3E7D2AF852AAA90AB53BF3B6CCE - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 46A7697C447617F43B7EE2BB22F62434 - - fileRef - FEA6D9E34F4B3DE1BD6B2881897CFB63 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Project - - - - 46CAC0A2C798F2533F1328249B12637D - - containerPortal - D41D8CD98F00B204E9800998ECF8427E - isa - PBXContainerItemProxy - proxyType - 1 - remoteGlobalIDString - 6610362E50A6DE8BACCA1F2885CD9157 - remoteInfo - GPUImage - - 4756AA6FE775C0EA182AFA5EF9EBAFA9 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - PLAudioCaptureConfiguration.h - sourceTree - <group> - - 47A8546B1885208B44A30FA16B921D89 - - fileRef - A1BD467BA2243819E9E9BE4A14F29B82 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Project - - - - 47FD504D03B81A75763C96AD06A2B9AA - - buildActionMask - 2147483647 - files - - 02F759167922229872A47ACEDDED19C2 - A84AB6BCD4B34A05D1394B790FDF4F5E - D8A64AF7A4577A15FEBEACFF8BD6B5A6 - C4A764A117E9C166FEF5A6739B3C0977 - 697C10509B5A2F26820D39DD7702E669 - 10172C294B7E36CD6D3DE68EDD993532 - 8D8FED742A729A6091B2D43D4619929B - 45FFEBFFC206EC11170FA5ABD356ADAE - 019B49E790C4D71906C23D9AFA00E19E - 1BF148E72042190034D3B45697A9ACBC - 150B2E074A9B9531E1996456C1463334 - 2A47FA8EA87AA79682498AF5CAEB1536 - D5BA14E2C771E4B129AB8CFB9DC5B307 - C5311B346ED3865015653FDCA4CFE075 - B8B4EC9246AA6F0A31CD3E77ACA98462 - 1747AA93BC8A44E84FD42E4A42F3E2D6 - B5A9717B3F7C395AE0FDE9BC10492D10 - 5F4C81863CF90A970B3D568784CC9511 - 14D14DFF582BD5222CCEEA1C9DF32554 - D2BFAEDBD8058CD7676DA2BABAEC5CEC - B5D95E56939ACD41F6372FB9940F7F06 - 415D5EC2BBFB334CB403BC198ED0A8DA - B484717FD06021EEBD37796F17B108EB - 35580FE7C1FA5569DE6FCF6DE389D1CE - EB2CEAA5A092583A3FE46ECD066C4087 - E6A8B02BC636068AD7DBF96657A5826C - 8E246454AF23117CC3E4FB02DBD592A8 - E7A034A24FDB86907EC92A7227DC220E - 3316707187A498E2CD252243F83E6B0D - B8ED0B47606233B06D40C67B229579BB - D37C6388B712549C11FDFE2AD85C1600 - D1FA7FBAAA8D7461AEDFB04701FA4E53 - 24C17A74FB804BE5D4D25EA746BC0C02 - 9396A0C10B2F95EE74A93CE22CC315E7 - E52CB36F6FB5B22D80D3ED5B8994AFAA - 1B0F8CA0E79BAF2A98427F656AB99CF2 - 4661A9B6FDB909046B39129B83057A14 - E3D14B0AE929FEB7B6C7505A3B54EB26 - 065B9FB6199340EC0652CA62BF0DFCCA - A1B746F70F10AB6E7B1B264B11875144 - A5CCDF66DF82E33E81E8C254EC0CF99F - 2E0F2C319D3A1AB42BFA6AA47618823D - 8823B9C91D9A4B482685EEE106F8B97A - 003B3C8CAF8E9940D888935B688EC426 - 072388CE2D585FE6C118392E1EFE3D4C - C57C689128CAADC8FBC2853A107818DA - 9E12A65403EEC3FFE1EA1E942F4B6F4A - D9D5F4DEBF510D55A4800992A8650F3F - 7DCE78487C34BF62A3E9AC45B9456067 - 6009A72EE18006D841BD743EE9DFFBE7 - 90028EC691399E7E3B5FD391F5E02189 - B21F15F22C29175E25172312B8C98D81 - 5C170752795742E0D4C4C56D8775238C - E36BADA9F6370D253690571B501DABF6 - 0FB8F2E74778DE8CCB7EADE075A82E15 - BBE9EAE7D5813F7762C443D0D5C6DAD7 - E23C3750B13C0C02EB8550A2B6A07078 - 05C3B8BD697727908D761BD327423E31 - D27369D06E1FCD04644F0A51A4B7DE95 - E8E0DEC25B76A9EB8B00772B8075A157 - EA0AC59666797ECC9860FC4B8F95C231 - FD72FA8AF432A95E9F8B40A29B20FA00 - 0CDBD794EE2AF3140E1CC3AFECD52842 - F7478322444B58EE993D0C9AF10F9833 - 7902649584F64EA5A1335AE65645D9E1 - 4E607254C750B2F611615A51919B415B - 0DB5174DB7E168935006D22E78068C7E - F88F26CAFBFE8D62AA42381DD85E23EC - - isa - PBXSourcesBuildPhase - runOnlyForDeploymentPostprocessing - 0 - - 481D7C38BC5A82F329A36F578DE1CB64 - - fileRef - DE6BB7B846C1A43AC489DBA998D89570 - isa - PBXBuildFile - - 48407C7F0E50576AD705C50C52E70627 - - fileRef - F53EBBBB9E019F116D10E964B2EFF452 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 48722B0625674F8BDB3D48591A3398E4 - - fileRef - 7B51BB310FBD253AFCB5F3F673650677 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Project - - - - 487457DE9424F4B356BABB60DB1EFC49 - - fileRef - ABA0E875B25C23893F3D8951ECBB8A95 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 48C345B96837948910EBD823B6B69759 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImagePicture.m - path - framework/Source/iOS/GPUImagePicture.m - sourceTree - <group> - - 48DD8A676DC276AD265D31B122874D9A - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageOpacityFilter.h - path - framework/Source/GPUImageOpacityFilter.h - sourceTree - <group> - - 4941694FCFFA606F7B295A24780B8ED3 - - fileRef - 6903EB1558A2F56354D8930E5C52A9D5 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 497C22736C38BFAFF271CCCD569D158A - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - KSSignalInfo.h - path - Source/KSCrash/Recording/Tools/KSSignalInfo.h - sourceTree - <group> - - 49BB4FBCD53E57F5F8AEC133DF7BF341 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageErosionFilter.m - path - framework/Source/GPUImageErosionFilter.m - sourceTree - <group> - - 49FDC494711AACC6F3DCB12500AE86FE - - fileRef - 2537E6A0E2E058BBCA6E7E2951127C5A - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 4AD276C8A023361AEDF489B55EE8F95E - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageHistogramFilter.m - path - framework/Source/GPUImageHistogramFilter.m - sourceTree - <group> - - 4B2819E29D680D27D246F89D95CBCD3A - - fileRef - CAD41AF3A9BC13973089D8407A2DFAAE - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 4B385CED62DD70779740D493E6CB9ED6 - - children - - 1FFC29D5E47BB4AFF4793103D29004DA - 79E48C7BDB79F8F39B186631B2FA88A5 - E9737A654F0EE713E74C11C06000113F - F75D35773212928F299CADF5A9781EB8 - 12F64DAB4A904E76B574314533103647 - C76D48A5390C630D21014306D9B36D2C - 28ED4A88193818ED6A8E741A0C275DBC - 4BE2D174AAB51D204C2E7DCE8A4B24DC - 59E599D6123E8F2EFE31316B1663C8BA - DD9CF300F20558FDB0AABFCD76F5625E - 6434BAC51E5E83374A5E560025C47C2C - 910798A255B567877C010F464F1AF941 - - isa - PBXGroup - name - Tools - sourceTree - <group> - - 4B54A4DC2E7B9D79D15D0313AAB40D4D - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageAverageLuminanceThresholdFilter.m - path - framework/Source/GPUImageAverageLuminanceThresholdFilter.m - sourceTree - <group> - - 4B566737855C9511728AED02FBE9C268 - - fileRef - 6F10A3607F6912DBE60F58047721F516 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 4B6FCC157424394EEA36252137C12EE0 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - KSCrashDoctor.m - path - Source/KSCrash/Recording/KSCrashDoctor.m - sourceTree - <group> - - 4B71853D33A73D2666CC80E0E255D449 - - fileRef - F55F2FF4FFDAD4321F5AFFC7DFE4D355 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 4B767CE5C0A4EAC8B3997E9EA8549DA3 - - fileRef - CC33809FADEF76309B63E261DDEDB5D7 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 4B7AF404CC2D73D722CA1A05C4F04B7F - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageHighPassFilter.h - path - framework/Source/GPUImageHighPassFilter.h - sourceTree - <group> - - 4B81B3022E5F977E9A5BCD0DB1D100E8 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageRawDataInput.m - path - framework/Source/GPUImageRawDataInput.m - sourceTree - <group> - - 4BA8DFF340B3BEEC55AEEB066F7E9410 - - fileRef - E9D224D3CCA962526FD1CAAB37F1549C - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 4BE2D174AAB51D204C2E7DCE8A4B24DC - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - KSReachabilityKSCrash.m - path - Source/KSCrash/Reporting/Tools/KSReachabilityKSCrash.m - sourceTree - <group> - - 4C73B53BB105DDC8F13C133D37239846 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - KSCrashSentry_MachException.h - path - Source/KSCrash/Recording/Sentry/KSCrashSentry_MachException.h - sourceTree - <group> - - 4CC92C73012EB53B113263ECC2F5D82C - - fileRef - 37A0EFE81513D262000137FC80B6D6AF - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 4CECDDF46DE01673631233B4F3B560E7 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImagePoissonBlendFilter.h - path - framework/Source/GPUImagePoissonBlendFilter.h - sourceTree - <group> - - 4CFA50F4899D200FB607A824AECF3558 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageToonFilter.h - path - framework/Source/GPUImageToonFilter.h - sourceTree - <group> - - 4D3F797ADF5648702A51E3B74BD9655E - - isa - PBXFileReference - lastKnownFileType - wrapper.framework - name - QuartzCore.framework - path - Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/QuartzCore.framework - sourceTree - DEVELOPER_DIR - - 4D6E5F9A6227BEFCF78FB83BE893A1AA - - fileRef - 625B484CE78C818DEB0A4B47246CAA04 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 4D8609EB689B9FC5F4474F7F38A317AC - - fileRef - 90BEEF07CA78C125A3EA286DAE956D1B - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 4DA44BA2E1354E55C22E3CAA2CC439CC - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - KSCrashSentry_Deadlock.m - path - Source/KSCrash/Recording/Sentry/KSCrashSentry_Deadlock.m - sourceTree - <group> - - 4DE6AB58569B9ED9F9E34877B15CC47F - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageColorInvertFilter.h - path - framework/Source/GPUImageColorInvertFilter.h - sourceTree - <group> - - 4E607254C750B2F611615A51919B415B - - fileRef - 910798A255B567877C010F464F1AF941 - isa - PBXBuildFile - - 4EB24AA67DFE55A657AB2836054A77AC - - fileRef - C9694BCD0DC50AC69078F16EBCD194ED - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 4ED2ED9BFCF3548C819DADF3F784C753 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - KSBacktrace.h - path - Source/KSCrash/Recording/Tools/KSBacktrace.h - sourceTree - <group> - - 4EDED25E1CF8193583E96246B4D3ECCC - - fileRef - 82A0DA4C99077BB15BEB09D822D5541F - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 4EE51E906DF18B5F1F431D6E07FDA41F - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - KSCrashReportFilterJSON.h - path - Source/KSCrash/Reporting/Filters/KSCrashReportFilterJSON.h - sourceTree - <group> - - 4F2C0365BE3B25129756AD6B61FD99F1 - - fileRef - 13354CF3232159B703CCF72A89E135DF - isa - PBXBuildFile - - 4F37E8C7DAA3D2BECE85C0AB1F54EC4B - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageMonochromeFilter.h - path - framework/Source/GPUImageMonochromeFilter.h - sourceTree - <group> - - 4F62C1BBC8273FB54C8CAFBB99061117 - - fileRef - A1D9AB7DC3FBAF55D0D4CBB6B43E2B81 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 4F7E35B46937EF1D27F12243C465D09C - - fileRef - D1B1933E9BC6601EB60EA3269EB4D89C - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 4FB251126551FBAD973FEDC8B52602F1 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageChromaKeyFilter.h - path - framework/Source/GPUImageChromaKeyFilter.h - sourceTree - <group> - - 4FB974AED868CD2EF8D3912AE070516D - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageOpeningFilter.h - path - framework/Source/GPUImageOpeningFilter.h - sourceTree - <group> - - 4FB9D82DFC4A54D9A3765D1D9DEB806B - - fileRef - 651E4AB3A6172DD202898B8900492A2A - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 4FD2CB2B28935FA9FA1CB285AFE47518 - - includeInIndex - 1 - isa - PBXFileReference - name - log.c - path - Pod/Classes/pili-librtmp/log.c - sourceTree - <group> - - 4FECBD40389C035DD0012AE53BFCC324 - - fileRef - A9D68732AD0B303B07772DE0E419DBC4 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 500464F1BE18BEAAF5952269538483A4 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - KSSingleton.h - path - Source/KSCrash/Recording/Tools/KSSingleton.h - sourceTree - <group> - - 500A9FFC986DD070FA3EE019206CC16A - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageMosaicFilter.m - path - framework/Source/GPUImageMosaicFilter.m - sourceTree - <group> - - 506C8560289F7A2144691123EE17AF55 - - fileRef - DEF35295A0BF84FCEC0A86E045DA312E - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 50D20F893EEA4A0057281D4C9D018D50 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageLuminosityBlendFilter.m - path - framework/Source/GPUImageLuminosityBlendFilter.m - sourceTree - <group> - - 511A05D5417039FAC51481546667CE20 - - fileRef - 563EBC4C04DA7A81ECEA42E008FDDD52 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 515153F8D784FB97CEA0B3CA439ADB0C - - fileRef - E847441523AB23F74AA6C45E80B028AD - isa - PBXBuildFile - settings - - ATTRIBUTES - - Project - - - - 515BFF8C5DA33A9C8440F226B08F21BA - - fileRef - 6872E4E7A341FBC15C8503525FC475F7 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Project - - - - 519A343D5E80C4C13FCE591BF6272C02 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageSobelEdgeDetectionFilter.m - path - framework/Source/GPUImageSobelEdgeDetectionFilter.m - sourceTree - <group> - - 51E37A9183A2CD056AD50B9FF96BE2C8 - - fileRef - 451F40CE508F63AF6213EA9B3B4DE5D5 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 523CCDEFA561D42F89E63623F0C93E9D - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageWhiteBalanceFilter.h - path - framework/Source/GPUImageWhiteBalanceFilter.h - sourceTree - <group> - - 526E586377DF0B224728CD0A0E890811 - - fileRef - 8EB0D13DC645B43847718841293CC08A - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 52736D938DAEA1BF8C0D888ED9009776 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageDifferenceBlendFilter.m - path - framework/Source/GPUImageDifferenceBlendFilter.m - sourceTree - <group> - - 527675A5E94DFE6B885F542391548FB3 - - fileRef - B4E911D5D57BC1C3B04CCE5251F4BE46 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 52EEEDA830965CC9C1208951FA9BDF7D - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageSolidColorGenerator.m - path - framework/Source/GPUImageSolidColorGenerator.m - sourceTree - <group> - - 53A500004CA4D31CA69519C0FA438127 - - children - - EEC91475716215E7D0D64AB004403758 - A3AEF04474D0EF4AD6FBD4EA0653DE7E - B8354383D009DEFD5B52A97AD807A0BC - 2A1E4F631AC55E1756C9F010B5199EC0 - 82A0DA4C99077BB15BEB09D822D5541F - 8AD5EB5086845A2030BA40198FFE8EBD - 604DABB4530327EE4172349624D7830B - 8627F42E9C2977B288F6CB2E773B2C95 - 7576A7969B60A536E7B91E830088FB83 - A41745915E05362043C7169D4EA3B9BE - A4F4C65C2249BB73DCE68C766EB5074D - 9CE2A0A18ED4B481AD491DCD7BFDE805 - F199C18919740FA9E380111A5FA920EF - 6F853A6FFE2FE2F7AE573B05BACCC83B - 939F99D769032AAEC4111FA9575B4B9F - DB953CBBFB105D0C123B68E889C7129B - 54752E1E4F06A6F3898CDADB90E56738 - B0FA9BB5A07A2A733EB63A0003AE7114 - 4B54A4DC2E7B9D79D15D0313AAB40D4D - EE968A711C6D8B6965E1AE5D071AA8CD - 451F40CE508F63AF6213EA9B3B4DE5D5 - A7DEA3CCADC2AE7773111DDE2B904215 - EF58ACA17008518E965C99469DDBB999 - B4E911D5D57BC1C3B04CCE5251F4BE46 - FF7FF9ED99DA84E72B432A8F5D556476 - 215797708876AE66D4A0187D14F4F1F6 - 9D9CC0798A8622D6EC91B6720FD33068 - E6C263C5F0E75E20D7EF8EBFC83637E6 - 22FD8D1B85EEA67298F0AE0567C9C539 - D7FB996CFC1EF4D5ED2920E2F361F0E1 - 5DF8B0CCC4087B37517384BCA8F33184 - 0F24867758516F8B2782BDA9F444865C - 030142977D56D4465D94D5843449F108 - 9AC3B30125F6CEC34A09CD8CC917D009 - C9694BCD0DC50AC69078F16EBCD194ED - 4FB251126551FBAD973FEDC8B52602F1 - 5A8687F67DFF9E2FC558FA0AC909AF69 - 105DE74A8C35B8E9461A84333D835595 - 92BA75B3FB5E9B772B8B15CBCBB53766 - 563EBC4C04DA7A81ECEA42E008FDDD52 - AB853E63175CC63F2017C6EB3E6C74FE - 280D3D38C7D879EE2B0FEB9BC854EAB5 - 37A0EFE81513D262000137FC80B6D6AF - CE989C096BDBEA0E2FBD1F5D76D06599 - F8B285BFAD9490C434D9B8862BE2592C - 4DE6AB58569B9ED9F9E34877B15CC47F - D9FD081816CF09A146D2BFBCA7C3CBC3 - C3C6623097186206DCC2B0B8758ECEF9 - 5FE0A2B4117F8FEE962177E39EDE46F2 - D703EF9AA1301555632D725057142F3D - 75CF47CA51026D2F117ED6E0D4623C44 - A74E902354A21FB2FD63DFD4FD48843B - 7C825B8D1BEB6C104879794E52ABB5F8 - 1678FB10B8DB87EA81A0DC35D86CF0EC - B07E1C97D5DB98AA9D01AA833BF9ED08 - E5E455A352AD2807BE9E3A80DE8B532C - B724143D653C63BB3BD09CC823836D4E - 6B619102F20817833BBCC176367ECE4C - 20FE481B177D78E07C02703C790B7A91 - 12C0722DD47207B5E41D3317B6CBFAA2 - 010C6A9C0D535A158DB0F65AD8702D88 - C325DE2CA13A7E5A7C373ABE220B5AB7 - 716E99AF71F6DC3D945730A7B12FC5F6 - 26D312363BA73C26A62AB8FEF82F2C64 - 52736D938DAEA1BF8C0D888ED9009776 - 5716473DEBCF4611FC87929555E55AAC - DC6D037E2D422A242F54831415DE2E58 - 06313BB6250FEA7E0C499FFA8482BF49 - 8EB0D13DC645B43847718841293CC08A - B30E0F68D1795A3CBDDC92D416C47F6F - DCAD82F94D09169DAF84F7B3E73F6AF8 - F221FE418A67C22B1B5D38A8A046698C - 39745A9180A858D7AEEC3E307B565FAC - D9E8F5E570681DDD0CAB94032A33A10F - 2834780AD10C7054DFF06F2C831C7437 - A10D7595A30700C19758E33CEB0489C6 - F5CC65661152F9B209A4B8BCE15BBB4E - 020815670BF0BF0DC12009D55D3B1F1E - 49BB4FBCD53E57F5F8AEC133DF7BF341 - 3D68A9C15435E6CE2091476E09914389 - 625B484CE78C818DEB0A4B47246CAA04 - 607A8E231980D4E35480F8F02B0AE7B0 - B5901B5F6E5FACFAD00C9CED1E4AE49C - 9DCA971563C3FD47B2B4C12BC802EE55 - B3D1835DAC26CE32DA3AE465DE9B99BE - C8F217CDE37BFF7C5822D3280E224778 - 1E1D0354D41178DDB496283C2EA2F2BA - 307AE59A4B57EE153DF017146CAD3AEF - EA8CCEF605BCF13506BC3B74CE5437DA - 8554ACFF2BDC54A3658C65D1B3649601 - 697F1664C211276DD833F9A13037C36E - 5922EA6101792D57D8ED73E9FA4022FD - 57EA8F05E99FC4CB5B4775E7EDAFB46D - 9A3C143C88046E69C497E8D1BD7D47A6 - 7A0BA924A1E1E10325F3DF8F0746E0F2 - 9EA03D378ECEFB6D4ADF16C2C65EE383 - 98AA34659AB0229E769EE6262E7F2CA1 - F607EB959A48F63C5DDDF20750B1A6DF - 2A2EAB22565F94059D78AD5244372E43 - CF09C1EA9D6B5D5EE62ACA89290DD6A7 - C92FCF79BEF58C119B0414CC50EB4CFE - 75A54E5DE45332799C6E4DA1F3715626 - D990CC93A416200635478D0B48C770E2 - 078242935268BFF82B9896C7759B3771 - 6BE2E07A526EE7AA52703C557C4E26A8 - 7978E744735994C26C56B1863161C375 - B6051A06EA74E0039E6E458CFA586D9E - 80D32B6E8A3FD0343AEDB560C2F3A6BB - AA4A99ED5462E9DCA02207E3DCA158AD - 1E533413165AA54DA401C922C4A445F3 - F3CD7A531BA1CB65AAAD66E9E0596A11 - 8694640F34DFFE21B7F98A75F2D55E18 - AF7B75E627CF3DC8F909ABE1EA4ACA20 - 5773C6E3791CA0B5EC470A6A16132A73 - 8D2204766D1BF9680601A67092F8A1FE - 79133C646102AEF3E35D2B9DCD4D7F02 - C0B0048E0376557330174CB35A447187 - 6F0E42EBEE74F0799B20DB8B9EB97D33 - B5AFCFD6E106F74936B27A963CC24A38 - 6F3E6BAAF61ECD36EAD9BC08AEAB6430 - 4B7AF404CC2D73D722CA1A05C4F04B7F - 5A3C19191280C1915DAB7419D99D4D55 - E6007C84F87EAB1F04BC9E4ECF7DC033 - 26FA0E6B1AB439B3251BCD334D24404E - A92233E258066FB3D7CB7BB346A2A1F3 - 4AD276C8A023361AEDF489B55EE8F95E - 80716CD8CF21489AA526BC3B7CC03952 - D37E7F6F10F34E6E21E6E2C5D188CB81 - C8F855F265BA141A17CB5759DE9FA816 - EA9BD959D4ABB55A7C473890CD64DB0F - 0B64E82729635EFBBAE0A268B6765024 - 70643F1A68C1F35B5C9E66DFECD0EB3D - 6F10A3607F6912DBE60F58047721F516 - BFEEBB996B03B49960AE0E15055B58F9 - 32F10E26C8D5FA98047AC3BBA3ADEC1A - 38D6EFC2D1AD594A9020E98097377EBD - B1033E700B25D3F9FF6859E92D433876 - F53EBBBB9E019F116D10E964B2EFF452 - ABA0E875B25C23893F3D8951ECBB8A95 - AAE2ACDD7706DEE3EEE2EB0307344DA2 - E0DB74E9B291EA24204505B63733BAAE - CCFEEF71B2973B2FACB9369616B186DE - F5578FA1C947C29B90D96B549E05D327 - 53B4DDD1FD1A8833D3FD3B3671CA2CB5 - 28EBA817530A57A1224BC49AE06906A1 - 43FE53C32091A843DD606138EC3B1917 - DE1EB68B92000894EDD16152AAEF9EF0 - A9D68732AD0B303B07772DE0E419DBC4 - 2C0B44DD04F8ABA584B33720D8960281 - 6C01DD5C2408B1FA09ED24621715C615 - 1D9CD952FF9D2A15089783DE729811A8 - 0B699C6DA38D9E5DF91689201AD0F141 - 1F6282B7656CD08F3A6790808132E63A - CAD41AF3A9BC13973089D8407A2DFAAE - 020BC6A465F176D7217ACB0F225437C1 - 1B0CC3E7D2AF852AAA90AB53BF3B6CCE - 764E153ECA24CE8D7028F7285B4ACB3F - BB76D5471E1D0411B7C6F70C23D152D2 - 7733728D8382BAA9B605C135D9E59120 - 5A02D625BDBF5BA885DA14BFCBF45630 - 7C5E93FE2733ADFDCFF2296FF8EA1260 - 181BD4B2309764C0A457DB5BFD0048D5 - 91E59D60D9F970D2444F9658869FD879 - FB50417176E7ADE3DA3D17065ACE250A - 975260C33AF9EEA8BD05A7B61BF6F079 - 75BE49462527D76A402C44064AAE0F28 - 260ADE460929451E6B07734408BA6695 - 2681E58815FB1BFA9DC82C1552A9BBFC - D1B1933E9BC6601EB60EA3269EB4D89C - 50D20F893EEA4A0057281D4C9D018D50 - 31E25A33783C58FB035A799742E6EBE1 - 6803B0B5CF422749CFEE32C1CDCE838F - 10B536A379BDD680470BD5B3A703F4DD - 54EEC1355FB27A2C998795CFFAD27266 - B3C1BB8A03608886E11ED854206798C9 - E1C8BBD709EA58EB1EFBAE6C2CDCAB1D - 4F37E8C7DAA3D2BECE85C0AB1F54EC4B - 89920751328423998C297A9378E9EBCD - 8CAC1F3102417835DC9CC168F6F99B9C - 500A9FFC986DD070FA3EE019206CC16A - D6B09D400E1BDE26550AC445410E5963 - 1C8F786DF81D82A063D3F7606FF24B5C - 6817D013D0956C3F97645B101E1C5FF9 - A9FC11F4B5E0F7B39D33F92568CFD4C2 - FAED007BECE0B836FC537A62ED4D1347 - ECCC8A041B93EACCB1EAB62C5C94963E - E61300BD2988486AA4DB476E6133A2E0 - 35A6173430560CDD800C36EF343DB6A7 - 1634B0AF70075E59D89AA66AC92C8E0E - 19C672571071CB9D48B375DF53D74D71 - D2F7D654545356534565F89381414B46 - 73DE50DCE200522A7F81F453A1874794 - 9DCAF19C2A614D03BD882939966A33ED - 69971451DB89A436877BE1C1D1CFEB8C - 6903EB1558A2F56354D8930E5C52A9D5 - 5812AAD6269E509AD56359A81847EC4E - 31D79CB8E5F1B9E05CE531EE378D886C - 6CB153B8FF313FC4285556594B298BD1 - 48DD8A676DC276AD265D31B122874D9A - C8F31130E66DDBB7E6D9F73EC858D2F9 - 4FB974AED868CD2EF8D3912AE070516D - 0B7BE15B07B8ABFA57F0D783188DF604 - 1FAD8D1CE26A60925D4D109A47C78094 - AD0378DD0D9BAF74CCA8138241F48472 - A6759934E8A5D7F2782667AA1D631DA6 - 79442E11E1F3944B27F5C66E03C5D144 - 8DFAC0F47295A88430858484C308E3C0 - 0D0E1784C4112C92A682729C85FCA8A8 - 4029E258831C21E188134202E44233A5 - DEF35295A0BF84FCEC0A86E045DA312E - 9E3090B055E79BA8ECB78363F9D3E99A - 48C345B96837948910EBD823B6B69759 - 2E60B908FBF83B9A87334AA0F9A85855 - 8A6B94F6F5925E9CBC904F9AEF7847F8 - CFAC9916ED281A103F1C76C7B6E5A70F - 1A276443E028FF3D8802C84CAD23817C - C77C1E7B3CC3CCFB2106A350971272D6 - 3B9CB4DAEDC1E8DE06AC360C275669A1 - 2537E6A0E2E058BBCA6E7E2951127C5A - 69AE16497C2CD67E23F1E30D7C985364 - 4CECDDF46DE01673631233B4F3B560E7 - 32047914649F6DE47F151EBA3E0D6141 - B3C05379FD4C1FC0FB63CEF6CF90AA18 - 2820806159AF08038E20C7BC162848A7 - A134BDAAD990E3DD96BF5F0892DF4DC5 - 958E6A52D32061DB5D24A492D208F762 - 87664A8F0633FF91070DED1C712D5491 - DC474EA85AED84D841AF0FCC2F50E5AC - 69579BA19BC8AB182699351EF48792F1 - 881178C7475ACBA225025BC031485EB3 - 622A4C4C0A8CF0BA3F6B3A961C9570E3 - 4B81B3022E5F977E9A5BCD0DB1D100E8 - 2F7997175B00E6BC07C24939E4073E0D - 2E3766B8838D1643C2B7D1EE69C64361 - BED5D1815B3AD19DE87CCDB505B4284E - 847F726A96642F45CF1751EA53AACA76 - F9D88523BA387B62C9478404DBD24798 - FC1BBA9B13A11A95B94397866C8E790D - 0DBCEF9E916A39FD9D1324C02B5E3C51 - F2B6BFDAD1B2008BE07A39EA23C3FCBB - 5589FDD1C84DAAC76849657DBBA51EFE - 6475E17CF508A4B15312F63ADFFFAB69 - 24F811993EE75392D4BFD49DE58A344E - 0F0E38AA5A53967EB5308B2150FD5D17 - 5D6306F3ED158DD4A06AC5CC86484EC8 - 8770973ACBAD38A6557000C7231940A3 - 85491FF2A5A02D2FF8C8EE5B1E47EE95 - A285A6DDE00B05D44F8A61D0DDF1F769 - 59BB1AE67294F53D4B7C1944E5C2341C - DFCCACD89E81C587D918490F2C07F72F - 7DB4D1585B8674316AE82EBDB08A3F64 - 7D29B57C84DFB475E83C6E5C9FEF4672 - F55F2FF4FFDAD4321F5AFFC7DFE4D355 - 1F6783F6458C6EC2F0CB14EF08B9B4E6 - 303B00A244AB82A548467B513409B634 - 899A02A5C8C6DA97FCFD228CD98A3210 - B4E29202508B5ECA52C681504261237E - B0B5F90B3EB5C44789E157210E00B8D0 - 08225C56C49C8D83AD3800C37D949148 - DE22D66FAD5E945BF296A8064EF334D9 - 07D7FDBB2C70E19CDA69F9FFBC4C8CB7 - CD58767A3FC3CCC5606F91DB0758FF0D - D1829C020FDE73136EAA700A530CB9CC - 519A343D5E80C4C13FCE591BF6272C02 - 15F94A1E97297D98AF3F8B5091BBC464 - AE03B11A67332C072FB78F1FC6D79C81 - 651E4AB3A6172DD202898B8900492A2A - 21F25F7849F9B78D38AEB81B36238632 - 3B282C61BFA5CB838BD548AFD14DD106 - 52EEEDA830965CC9C1208951FA9BDF7D - 86AA185065F2DB289DC3A70BEB1DB432 - 1A609B09FA743E9627B6E0DD4E8BB577 - 78932A8392FB0E676C722EDB8E8A09F4 - E9D224D3CCA962526FD1CAAB37F1549C - 387FA0EE4F6697FCCF4B7FA88126C2CF - D61453ADBEB94EB9DBE53548142A82C7 - 37C83E1AC1289519C466DB79E1A5DF5F - FAB852361583D00A2E0DD7EFBD92B355 - ECDE17CB25E8171A45BDD99A8F109654 - CB1B272772428232E7B93280DF065E31 - 2D9CEA819995A18A9CA436711FAD121B - 39A290037E708BF4D292E78C62E40D54 - EC4C4036C068230BB75187C1C49D28DD - BE8472A5EFDEA2721849BC76CE3EE3DB - 30EE9D525966FB7B8639C3A457F7988C - 618B74F32097C85D9FA7D6F2C0C235B8 - 1DA27B908CA2B43C391117CA48D6AE78 - B62C7FAEC2D3A458A2A44995F0C097F2 - C93FFCE1629B26DFB4E8B88CB72A4DA5 - B18CD9E6901F06D33A5A9901DAF83941 - 896899374D584C6EE78E316A1E4CE72C - 866C5305A0C19C21B1D34562066AF28A - DA86515BD79B09EDBB74DD7867A483B8 - D3E2D64AA95AC4D29FB7BA227B0DA400 - E64D0F3DDD22D44175B4387DCB6C503B - AA6561DBCA92FB72E3AC0E928776812C - A0DD30814F20C6E21C35CFF0526E63AB - F5036BF7E478FE9C51EEA4B473E56A4B - 4CFA50F4899D200FB607A824AECF3558 - 561D24B75926E05E2E5DDD570DCF7AEC - 6AFE7AEE3001068FB98237D1470EB4BC - 02F19F3E650F604270E07D50B6B5F681 - ED71C09207CB0200C95ECEC74DB989E9 - 0339FB6F3BBFA4F1F82E07287E9D9733 - 14B7CFD33D9D8A4C83D8AD7EEBB209EF - 88780FFF540DE8E6563FAF16EFA82250 - 3E469ED7212AA53CF315D71AC8B13CCD - 78A175629FFE90C4A5F7D9FE92AAC22D - 82AD2F4352325A947B5855C428C0AC97 - A4C8DE890668305CCC425CD9C079702A - 851807777C95C7C10986A5887AA43287 - 3314E03E9CBA3E8E2D13EBD39165A97F - BDA5C8818E131E67F8FCC8D002154EC5 - 5E41732305F4C856818F2C8FEE41E9C7 - A39C5BEFDD5E8EEE0511E5F981F6B71B - 9D9FDA83E3DEE286A2EB1AE2A3DF723E - 00E780EF336D0ACD8C5FE942FCEACE8A - 72683B53AAE81C5DCA2DA1853CAC9098 - 2CC40622081559A1F50B780E63DDC631 - 9FE5AA9EE443C4F5ACEF2F954E4E7EB7 - 0A07B03EB1EFAFAAEACB7F2EE13A0F3F - A25BA2D4D9D922A6E316F92313FFFD30 - A8616B363560C564304297A9882B696E - 91069F36DD1639A0956DE92EBA95F69C - 523CCDEFA561D42F89E63623F0C93E9D - 5EEE7A68B87CDA68EB310714202CE862 - F9D42910F8095A6ADD393C7E0B703E17 - A9C590A4278BE22A3944ABBA0499A974 - 36ADC0E37BD5BCCF327DC8963E1EA59F - 6FEFCD63C992EB9E58DC9EF3C3A8CC96 - 12FB2EBF99E36C2D2B3544952AFB2BA0 - 251972E17B9EAB7FCFE3AEC91CDACA3A - - isa - PBXGroup - name - GPUImage - path - GPUImage - sourceTree - <group> - - 53B4DDD1FD1A8833D3FD3B3671CA2CB5 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageKuwaharaRadius3Filter.m - path - framework/Source/GPUImageKuwaharaRadius3Filter.m - sourceTree - <group> - - 53B721E64339A583B98B9A503157A074 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - rtmp.h - path - Pod/Classes/pili-librtmp/rtmp.h - sourceTree - <group> - - 53C62ECAEC6E6618FB7F7AC65EEA6554 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - Container+DeepSearch.m - path - Source/KSCrash/Reporting/Filters/Tools/Container+DeepSearch.m - sourceTree - <group> - - 53D666997254E134312B2F6C91713889 - - fileRef - 69579BA19BC8AB182699351EF48792F1 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 54032FA324D708D6195A8626B028EE0A - - children - - 650EAE39B2A13B982CCF6F38868E9E25 - - isa - PBXGroup - name - precompiled - sourceTree - <group> - - 540CD03258D73E25C77689F9042BD6BB - - fileRef - 1FFC29D5E47BB4AFF4793103D29004DA - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 545B2490C290D710A4F4A3D7EEA6F019 - - fileRef - 8627F42E9C2977B288F6CB2E773B2C95 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 54752E1E4F06A6F3898CDADB90E56738 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageAverageColor.m - path - framework/Source/GPUImageAverageColor.m - sourceTree - <group> - - 54EEC1355FB27A2C998795CFFAD27266 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageMedianFilter.m - path - framework/Source/GPUImageMedianFilter.m - sourceTree - <group> - - 555505BC4D2FC3B080E26C2E8B6AF84B - - fileRef - 1E533413165AA54DA401C922C4A445F3 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 55728F82ECB7E3ADD705B328329303FF - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - KSCrashReportFilterAppleFmt.m - path - Source/KSCrash/Reporting/Filters/KSCrashReportFilterAppleFmt.m - sourceTree - <group> - - 5589FDD1C84DAAC76849657DBBA51EFE - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageRGBFilter.h - path - framework/Source/GPUImageRGBFilter.h - sourceTree - <group> - - 55F997817C35712807387B72101AB320 - - fileRef - A41745915E05362043C7169D4EA3B9BE - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 561D24B75926E05E2E5DDD570DCF7AEC - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageToonFilter.m - path - framework/Source/GPUImageToonFilter.m - sourceTree - <group> - - 562CB9A1EACE586AB9C693A820B8E41F - - includeInIndex - 1 - isa - PBXFileReference - name - KSObjC.c - path - Source/KSCrash/Recording/Tools/KSObjC.c - sourceTree - <group> - - 563EBC4C04DA7A81ECEA42E008FDDD52 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageColorBlendFilter.h - path - framework/Source/GPUImageColorBlendFilter.h - sourceTree - <group> - - 5658DCB3B12C0F2A4D4C50977EE75722 - - fileRef - 4C73B53BB105DDC8F13C133D37239846 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Project - - - - 56B32CB8D79FBB39E38685D3822B0A71 - - buildActionMask - 2147483647 - files - - 426BC3D45E3263BFE4CB3FE897E78C28 - - isa - PBXFrameworksBuildPhase - runOnlyForDeploymentPostprocessing - 0 - - 56E2FAA20DF7C2AA44D89CAF7BD5807D - - fileRef - EE968A711C6D8B6965E1AE5D071AA8CD - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 56F6D7E0C05FA197FBC39EB3FC21F419 - - fileRef - E6C263C5F0E75E20D7EF8EBFC83637E6 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 5716473DEBCF4611FC87929555E55AAC - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageDilationFilter.h - path - framework/Source/GPUImageDilationFilter.h - sourceTree - <group> - - 57541CA0FE35976A44C81A79315E1FCB - - fileRef - 500464F1BE18BEAAF5952269538483A4 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Project - - - - 5773C6E3791CA0B5EC470A6A16132A73 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageHardLightBlendFilter.m - path - framework/Source/GPUImageHardLightBlendFilter.m - sourceTree - <group> - - 579E1E46A7B7CACA12568D48E6140EC2 - - fileRef - 5E41732305F4C856818F2C8FEE41E9C7 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 57BE0671CEE88A84BA5CEBEB2C0D0FF1 - - fileRef - 8EAEAFE3F75689EC21DCDDE454247807 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Project - - - - 57EA8F05E99FC4CB5B4775E7EDAFB46D - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageFilterPipeline.m - path - framework/Source/GPUImageFilterPipeline.m - sourceTree - <group> - - 5812AAD6269E509AD56359A81847EC4E - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageNonMaximumSuppressionFilter.m - path - framework/Source/GPUImageNonMaximumSuppressionFilter.m - sourceTree - <group> - - 582B0B80CD25A11ADC01E282D20D663C - - children - - 7976ED803218E9C10FB975BAF579D7D9 - - isa - PBXGroup - name - precompiled - sourceTree - <group> - - 583E9C7A7859693C883DCBE9D2BE2277 - - children - - DFB50BEF61D6A7D6C1EA4CE8A3BF6190 - - isa - PBXGroup - name - Library - path - Library - sourceTree - <group> - - 590BBA3731C33F4C4A8541079EEB6D35 - - fileRef - 79442E11E1F3944B27F5C66E03C5D144 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 5913A557A824E36148BA5D027DF390AE - - buildActionMask - 2147483647 - files - - 999BC088CF01F4A8C4FD5343E02BE09B - A86197F4F3C92350321F83ED2B8599DE - 449677A54DC9CDB8C8A47BEE12BB0A2E - B814AB108E3DB51D7C04F0C3328957AD - 08464F74EEB7A877C5C5493F8E7BB504 - 01434075420B08CC4232C4AB1051C309 - 614172618531148E73F7587C132D3325 - - isa - PBXSourcesBuildPhase - runOnlyForDeploymentPostprocessing - 0 - - 5915D23A2711BDB29433466D73772A7D - - fileRef - FC1BBA9B13A11A95B94397866C8E790D - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 5922EA6101792D57D8ED73E9FA4022FD - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageFilterPipeline.h - path - framework/Source/GPUImageFilterPipeline.h - sourceTree - <group> - - 593224ECEFA99ED4952565D1FB672B3B - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - HappyDNS-prefix.pch - sourceTree - <group> - - 59BB1AE67294F53D4B7C1944E5C2341C - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageScreenBlendFilter.h - path - framework/Source/GPUImageScreenBlendFilter.h - sourceTree - <group> - - 59D99EA0B8A57F6D273B74294B33D185 - - isa - PBXTargetDependency - name - pili-librtmp - target - 2BAC7CF49C86172B8F10A9ADFC08EF59 - targetProxy - 9EC9E03148D30B9D21731A3EBBFF0B47 - - 59E599D6123E8F2EFE31316B1663C8BA - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - NSMutableData+AppendUTF8.h - path - Source/KSCrash/Reporting/Tools/NSMutableData+AppendUTF8.h - sourceTree - <group> - - 5A02D625BDBF5BA885DA14BFCBF45630 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageLookupFilter.m - path - framework/Source/GPUImageLookupFilter.m - sourceTree - <group> - - 5A3C19191280C1915DAB7419D99D4D55 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageHighPassFilter.m - path - framework/Source/GPUImageHighPassFilter.m - sourceTree - <group> - - 5A68C3A26CE16FA260AD1C538453BCAA - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - handshake.h - path - Pod/Classes/pili-librtmp/handshake.h - sourceTree - <group> - - 5A8687F67DFF9E2FC558FA0AC909AF69 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageChromaKeyFilter.m - path - framework/Source/GPUImageChromaKeyFilter.m - sourceTree - <group> - - 5ACA822DBE47821C7113B72A43655B4D - - fileRef - B10913FBAEAD125838A2D805A44E259F - isa - PBXBuildFile - - 5AF2F88648B6F77C118B236B969EE266 - - children - - A6EE7A8B2AB31AC5EB693557E785553D - - isa - PBXGroup - name - Targets Support Files - sourceTree - <group> - - 5B90CFA57C1EE2E8C6865ABA08A7A041 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - QNNetworkInfo.h - path - HappyDNS/Common/QNNetworkInfo.h - sourceTree - <group> - - 5C170752795742E0D4C4C56D8775238C - - fileRef - 562CB9A1EACE586AB9C693A820B8E41F - isa - PBXBuildFile - - 5C5D3B0148542B2915EC152664DFF76C - - fileRef - 2681E58815FB1BFA9DC82C1552A9BBFC - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 5C7497BA4C6480C0799AC143688AF9E9 - - includeInIndex - 1 - isa - PBXFileReference - name - NSString+Demangle.mm - path - Source/KSCrash/Recording/Tools/NSString+Demangle.mm - sourceTree - <group> - - 5C8B1F7C6C0EFE23C3643FF57983BE8D - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - PLStreamStatus.h - path - Pod/Library/include/PLStreamingKit/PLStreamStatus.h - sourceTree - <group> - - 5D5F62A97FEB335D5F55BEFAB0AA1CBA - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - KSCrashInstallation.m - path - Source/KSCrash/Installations/KSCrashInstallation.m - sourceTree - <group> - - 5D6306F3ED158DD4A06AC5CC86484EC8 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageSaturationBlendFilter.h - path - framework/Source/GPUImageSaturationBlendFilter.h - sourceTree - <group> - - 5DC594E456ACE784A5A097067FBC7D5D - - fileRef - F221FE418A67C22B1B5D38A8A046698C - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 5DF8B0CCC4087B37517384BCA8F33184 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageCannyEdgeDetectionFilter.m - path - framework/Source/GPUImageCannyEdgeDetectionFilter.m - sourceTree - <group> - - 5E41732305F4C856818F2C8FEE41E9C7 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageUnsharpMaskFilter.m - path - framework/Source/GPUImageUnsharpMaskFilter.m - sourceTree - <group> - - 5E66EA76C8A5C0E48113C2AC6B9C210A - - fileRef - 39745A9180A858D7AEEC3E307B565FAC - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 5E8E0B8EFED4C907A9E18116284D0A64 - - buildConfigurations - - 2F30C71F9D40A7239004845A6490C3C6 - 14CC0476BB49A9088961AF96772769C2 - - defaultConfigurationIsVisible - 0 - defaultConfigurationName - Release - isa - XCConfigurationList - - 5E9CFCB6C27F57ACA0B469BDD26D0CD2 - - fileRef - F2B6BFDAD1B2008BE07A39EA23C3FCBB - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 5EEE7A68B87CDA68EB310714202CE862 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageWhiteBalanceFilter.m - path - framework/Source/GPUImageWhiteBalanceFilter.m - sourceTree - <group> - - 5F4C81863CF90A970B3D568784CC9511 - - fileRef - 0F75B3522EB3632D9F24504AFA8810AC - isa - PBXBuildFile - - 5F91DCAC6C432269DE86AA0AE4CF48A3 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - PLTypeDefines.h - path - Pod/Library/include/PLStreamingKit/PLTypeDefines.h - sourceTree - <group> - - 5FE0A2B4117F8FEE962177E39EDE46F2 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageColorMatrixFilter.m - path - framework/Source/GPUImageColorMatrixFilter.m - sourceTree - <group> - - 5FF7C99CEB55E5C6934A606BF0AF0E45 - - includeInIndex - 1 - isa - PBXFileReference - name - KSDynamicLinker.c - path - Source/KSCrash/Recording/Tools/KSDynamicLinker.c - sourceTree - <group> - - 6009A72EE18006D841BD743EE9DFFBE7 - - fileRef - F2AC2815DBACBDEF3561B8DE51598CFC - isa - PBXBuildFile - - 6023B7C276B66E6A6A342BAB767F2123 - - fileRef - 21F25F7849F9B78D38AEB81B36238632 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 604DABB4530327EE4172349624D7830B - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImage3x3TextureSamplingFilter.m - path - framework/Source/GPUImage3x3TextureSamplingFilter.m - sourceTree - <group> - - 607A8E231980D4E35480F8F02B0AE7B0 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageExposureFilter.h - path - framework/Source/GPUImageExposureFilter.h - sourceTree - <group> - - 60F5AE2E1139D65964093594E5A3CD8A - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - QNRecord.m - path - HappyDNS/Common/QNRecord.m - sourceTree - <group> - - 6141399000D2C9AEF7B095513D3EC14C - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - KSCrashSentry_CPPException.h - path - Source/KSCrash/Recording/Sentry/KSCrashSentry_CPPException.h - sourceTree - <group> - - 614172618531148E73F7587C132D3325 - - fileRef - 774EF787230FBF7CEF6CA788AFDCBDC7 - isa - PBXBuildFile - - 617DC4B764B112BDA758ADE11F1DF22B - - fileRef - 07D7FDBB2C70E19CDA69F9FFBC4C8CB7 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 618B74F32097C85D9FA7D6F2C0C235B8 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageTextureOutput.m - path - framework/Source/GPUImageTextureOutput.m - sourceTree - <group> - - 618D5905B7DA28AFA428F48743D1F4C4 - - children - - B6A0CBD93D292CC7080DE2E7103EF236 - E2F8B468CC75C2FB12B563CCFAF600C0 - 89C5D5F58B4C3E642123062B6CE8B347 - 21A8AA0077CB3B47E078ED3EC938EE75 - B10913FBAEAD125838A2D805A44E259F - B9F6F1E9F20DF392C01284D38176E692 - 13354CF3232159B703CCF72A89E135DF - 2EC4A3FD0C6A821E91C5DBDE0B6A653B - 4248F0718D60C2B111EADF9A03124842 - E5ABCAF3A4737C12FDE44477CF0C4994 - 75C335E787390CF7B50C58509C927EAC - 241C6D7BA40F4900853C56A67B674E31 - D908808FACBF42D36BBF8C426BF1C57B - CC33809FADEF76309B63E261DDEDB5D7 - DBE8F2B284BD7FE7975C46593CDAC655 - 9A32D8064BF7A730927C86A2CD1B4989 - B99EA5DB4530B2E53ADD1DDC655F3B90 - 6BF769096689E07BF51213D0B66BA6C3 - DE6BB7B846C1A43AC489DBA998D89570 - 5B90CFA57C1EE2E8C6865ABA08A7A041 - 02FBC8C109FD847E789F54C4B5629861 - 3F5C2DE2B654D3E10F7AB470559B282B - 60F5AE2E1139D65964093594E5A3CD8A - 8660F62C4ECD9AC11558FDC34287F3CE - 22B06CADFEF7169B8A96E2143E2ADF5F - 1D9E0E73CFC5D12F73B53BE58202BB30 - BBCFB117CEC7DD1961FF535FD6D371DC - 401A9B227A5CEEC7590D42C50C81A194 - 61AD7F0D211CA08F3CE6F593E4B889C3 - 28ACEA6B165C0A4015024FD0EB9F6BE8 - 439764C765DD1A6BC5C2623460980790 - - isa - PBXGroup - name - HappyDNS - path - HappyDNS - sourceTree - <group> - - 61AD7F0D211CA08F3CE6F593E4B889C3 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - QNTxtResolver.h - path - HappyDNS/Local/QNTxtResolver.h - sourceTree - <group> - - 61B1F0A20109898ACF7CC14D78D3FD42 - - fileRef - 5D6306F3ED158DD4A06AC5CC86484EC8 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 622A4C4C0A8CF0BA3F6B3A961C9570E3 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageRawDataInput.h - path - framework/Source/GPUImageRawDataInput.h - sourceTree - <group> - - 625B484CE78C818DEB0A4B47246CAA04 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageExclusionBlendFilter.m - path - framework/Source/GPUImageExclusionBlendFilter.m - sourceTree - <group> - - 626E3C85A43CC6B647471AE639B232E1 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - KSCrashDoctor.h - path - Source/KSCrash/Recording/KSCrashDoctor.h - sourceTree - <group> - - 62A67CF32ECC3C7AB2698F1F226929A7 - - fileRef - 8608BADB7A60234FE26D008E1372399E - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 631258C3505CBAF8EE6CDF5A08217EF5 - - includeInIndex - 1 - isa - PBXFileReference - name - KSMach.c - path - Source/KSCrash/Recording/Tools/KSMach.c - sourceTree - <group> - - 632A1F1A3B7E33C3F1732BE260B180A0 - - fileRef - 59BB1AE67294F53D4B7C1944E5C2341C - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 6434BAC51E5E83374A5E560025C47C2C - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - NSString+URLEncode.h - path - Source/KSCrash/Reporting/Tools/NSString+URLEncode.h - sourceTree - <group> - - 644C377381458730FCA19CF74C268B4D - - fileRef - 8F8933FFC6CCE99F653ED9E79532CA8B - isa - PBXBuildFile - settings - - ATTRIBUTES - - Project - - - - 645FB25B6AF90E1666652C47FC39F415 - - fileRef - F199C18919740FA9E380111A5FA920EF - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 6475E17CF508A4B15312F63ADFFFAB69 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageRGBFilter.m - path - framework/Source/GPUImageRGBFilter.m - sourceTree - <group> - - 64D5064E9B29FF6E03293A87088455CF - - fileRef - 4CFA50F4899D200FB607A824AECF3558 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 64FCBB6C1D4C1110E361DCFDA4C18275 - - fileRef - D7FB996CFC1EF4D5ED2920E2F361F0E1 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 650EAE39B2A13B982CCF6F38868E9E25 - - children - - 8159CE7483F14271FA034D1CA307D2FB - - isa - PBXGroup - name - Frameworks - sourceTree - <group> - - 651E4AB3A6172DD202898B8900492A2A - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageSoftLightBlendFilter.h - path - framework/Source/GPUImageSoftLightBlendFilter.h - sourceTree - <group> - - 65301885F9094F153CA19616F9E5A10B - - fileRef - B3D1835DAC26CE32DA3AE465DE9B99BE - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 6610362E50A6DE8BACCA1F2885CD9157 - - buildConfigurationList - 9E27E4D11520BFB6B563DD7070A08E9E - buildPhases - - DCEDB56DC444F1D13C8A53D68E33C33E - E95269D7BD9767E5ACD87653D6B262C6 - 0BAD991A1B71F44548C893BEE86303CA - - buildRules - - dependencies - - isa - PBXNativeTarget - name - GPUImage - productName - GPUImage - productReference - F7AC648B0C0450A86D84CB660B86ACA0 - productType - com.apple.product-type.library.static - - 66503EF1668A14359637CC42F69FEE38 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - KSLogger.m - path - Source/KSCrash/Recording/Tools/KSLogger.m - sourceTree - <group> - - 66E84AFE041AE92454B80B3A416E12DF - - fileRef - 87DAB3728AF8C084C114410637742B19 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 66F5A0BE1857A4F55C1F01C6A8A91391 - - fileRef - BBCFB117CEC7DD1961FF535FD6D371DC - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 66FCA835F06AE4F519FFDF9877247243 - - fileRef - 6AFE7AEE3001068FB98237D1470EB4BC - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 6767EA6299B14B4DDFDE3EB4359EE94B - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - KSSystemCapabilities.h - path - Source/KSCrash/Recording/KSSystemCapabilities.h - sourceTree - <group> - - 678BFAF0C74ACAEFD6B7E5A9E1C66AC1 - - fileRef - 9AC3B30125F6CEC34A09CD8CC917D009 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 67A17433C9AFE8486B65F86970B7C435 - - fileRef - B7254D8F85C23ECC56952EC5C1873D6D - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 67AC61A270C7E894F1CD5667C41E23D0 - - fileRef - 7FB3FE368E1B54C3EABE084290F43ECA - isa - PBXBuildFile - settings - - ATTRIBUTES - - Project - - - - 6803B0B5CF422749CFEE32C1CDCE838F - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageMaskFilter.m - path - framework/Source/GPUImageMaskFilter.m - sourceTree - <group> - - 6807DAF1AA31ED744B3298FEAE2CC427 - - fileRef - 17A5064583EB6B9817F7164304E49E16 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 6817D013D0956C3F97645B101E1C5FF9 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageMotionDetector.h - path - framework/Source/GPUImageMotionDetector.h - sourceTree - <group> - - 683B48DFBDC0534E21B7002EDD5EED04 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - KSCrashContext.h - path - Source/KSCrash/Recording/KSCrashContext.h - sourceTree - <group> - - 6872E4E7A341FBC15C8503525FC475F7 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - SwiftStrings.h - path - Source/KSCrash/swift/SwiftStrings.h - sourceTree - <group> - - 68A4D7E3E69128BF4E05FB5B4CF04846 - - includeInIndex - 1 - isa - PBXFileReference - name - lookup.png - path - framework/Resources/lookup.png - sourceTree - <group> - - 68D6F42C93ECEB75BB1D61DCDE8EB7C0 - - fileRef - 607A8E231980D4E35480F8F02B0AE7B0 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 68F6BEA2610A5DBC6AD2618A706789B0 - - children - - 0BA67DF9A2F9DE2570AB3E64008D70D5 - BBF83555B04D96B36A13D146D334A607 - 88857831A02772260D9531ACB472CD84 - DF97CF541DBFF0ADD47D503793B2CA1A - F33BDD5FF48E71D77209F14251F50C92 - 4D3F797ADF5648702A51E3B74BD9655E - C61801EB75C001B6F55EC61E6424925B - - isa - PBXGroup - name - iOS - sourceTree - <group> - - 6901638D4E4661990E30C49AA467DFEB - - fileRef - A7B41F99AA1AE58974DE1786AB555E76 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Project - - - - 6903EB1558A2F56354D8930E5C52A9D5 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageNonMaximumSuppressionFilter.h - path - framework/Source/GPUImageNonMaximumSuppressionFilter.h - sourceTree - <group> - - 69579BA19BC8AB182699351EF48792F1 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImagePrewittEdgeDetectionFilter.h - path - framework/Source/GPUImagePrewittEdgeDetectionFilter.h - sourceTree - <group> - - 6973E1E07BCFEF6CEF42C11B8AA75706 - - fileRef - 030142977D56D4465D94D5843449F108 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 697C10509B5A2F26820D39DD7702E669 - - fileRef - D0B9E5CB4D657156E6F4BB939DDD26D4 - isa - PBXBuildFile - - 697F1664C211276DD833F9A13037C36E - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageFilterGroup.m - path - framework/Source/GPUImageFilterGroup.m - sourceTree - <group> - - 6988CF3A1CB7F40C38EFD0B9F46D82FC - - fileRef - 60F5AE2E1139D65964093594E5A3CD8A - isa - PBXBuildFile - - 69971451DB89A436877BE1C1D1CFEB8C - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageNobleCornerDetectionFilter.m - path - framework/Source/GPUImageNobleCornerDetectionFilter.m - sourceTree - <group> - - 69AE16497C2CD67E23F1E30D7C985364 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImagePixellatePositionFilter.m - path - framework/Source/GPUImagePixellatePositionFilter.m - sourceTree - <group> - - 6A088B65586B4E73AA15D66780434385 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - KSCrashReportFilterSets.m - path - Source/KSCrash/Reporting/Filters/KSCrashReportFilterSets.m - sourceTree - <group> - - 6A4E24B67F6B6F1FD3E2C9CEB55ECCE6 - - fileRef - 75BE49462527D76A402C44064AAE0F28 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 6A5D9BF654FCCEE5462A287C67FD5CF2 - - fileRef - 5B90CFA57C1EE2E8C6865ABA08A7A041 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 6A7FB61B613B60624A7B649697F44369 - - fileRef - 5589FDD1C84DAAC76849657DBBA51EFE - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 6AB5DA7B103C468E47443CF122E7D8FC - - fileRef - E5E455A352AD2807BE9E3A80DE8B532C - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 6AF53F82DC91312D75B05D0555747FB2 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - KSCrashSentry_User.h - path - Source/KSCrash/Recording/Sentry/KSCrashSentry_User.h - sourceTree - <group> - - 6AFE7AEE3001068FB98237D1470EB4BC - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageTransformFilter.h - path - framework/Source/GPUImageTransformFilter.h - sourceTree - <group> - - 6B04A7D89B0E6047B13C2CF2843B5020 - - fileRef - 241C6D7BA40F4900853C56A67B674E31 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 6B619102F20817833BBCC176367ECE4C - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageCrosshairGenerator.h - path - framework/Source/GPUImageCrosshairGenerator.h - sourceTree - <group> - - 6B78DF7FA9BCC1820A6AF40CDFB2E71F - - fileRef - 15F94A1E97297D98AF3F8B5091BBC464 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 6BAA2E2D1719BF266313816C9E93612F - - fileRef - 34535A76829A4DEA9EAC85583B2A002A - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 6BE2E07A526EE7AA52703C557C4E26A8 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageGaussianSelectiveBlurFilter.h - path - framework/Source/GPUImageGaussianSelectiveBlurFilter.h - sourceTree - <group> - - 6BEE9C075C04972E09B9923B11E3643D - - fileRef - 88857831A02772260D9531ACB472CD84 - isa - PBXBuildFile - - 6BF769096689E07BF51213D0B66BA6C3 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - QNIP.h - path - HappyDNS/Util/QNIP.h - sourceTree - <group> - - 6C01DD5C2408B1FA09ED24621715C615 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageLevelsFilter.m - path - framework/Source/GPUImageLevelsFilter.m - sourceTree - <group> - - 6C9418A1038F927B5474B28DE328BE52 - - fileRef - 32F10E26C8D5FA98047AC3BBA3ADEC1A - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 6CAC5DEEAA0514E6E7F59C6CFF59A2A5 - - fileRef - E279FCA9B6F87AAC42E3C77473144713 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 6CB153B8FF313FC4285556594B298BD1 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageNormalBlendFilter.m - path - framework/Source/GPUImageNormalBlendFilter.m - sourceTree - <group> - - 6CBB8C1D469C58F19ADC861B76BAC4D3 - - baseConfigurationReference - 3EB9B417E6FC0A3FDFF6635509BA51E4 - buildSettings - - ENABLE_STRICT_OBJC_MSGSEND - YES - GCC_PREFIX_HEADER - Target Support Files/pili-librtmp/pili-librtmp-prefix.pch - IPHONEOS_DEPLOYMENT_TARGET - 7.0 - MTL_ENABLE_DEBUG_INFO - NO - OTHER_LDFLAGS - - OTHER_LIBTOOLFLAGS - - PRIVATE_HEADERS_FOLDER_PATH - - PRODUCT_NAME - $(TARGET_NAME) - PUBLIC_HEADERS_FOLDER_PATH - - SDKROOT - iphoneos - SKIP_INSTALL - YES - - isa - XCBuildConfiguration - name - Release - - 6D13A9B1B91E5BD41CF5D3968BF3EEE5 - - fileRef - 8DFAC0F47295A88430858484C308E3C0 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 6D76E744014686941643D53B63092BC3 - - fileRef - 2CC40622081559A1F50B780E63DDC631 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 6DFC494801E8E569870C8F0211E1C8C0 - - fileRef - 6BE2E07A526EE7AA52703C557C4E26A8 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 6E0C35C1C493E2FBE9D5496F3DB5D6FA - - fileRef - 3B282C61BFA5CB838BD548AFD14DD106 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 6E9227441537E3C64FCD9F0210FEB33D - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - KSCrashSentry_Private.h - path - Source/KSCrash/Recording/Sentry/KSCrashSentry_Private.h - sourceTree - <group> - - 6F03B7DFB1D9E37A025BF264A7B27B2A - - fileRef - 896899374D584C6EE78E316A1E4CE72C - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 6F0E42EBEE74F0799B20DB8B9EB97D33 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageHazeFilter.m - path - framework/Source/GPUImageHazeFilter.m - sourceTree - <group> - - 6F10A3607F6912DBE60F58047721F516 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageHueBlendFilter.h - path - framework/Source/GPUImageHueBlendFilter.h - sourceTree - <group> - - 6F172712D5C1E1296ED4E355E12B8D17 - - fileRef - 02F19F3E650F604270E07D50B6B5F681 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 6F3E6BAAF61ECD36EAD9BC08AEAB6430 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageHighlightShadowFilter.m - path - framework/Source/GPUImageHighlightShadowFilter.m - sourceTree - <group> - - 6F5F3C929F254EF033D639D322DA6558 - - fileRef - 2EBF2541A6955F78DC2CA6B9B6E4DF00 - isa - PBXBuildFile - - 6F853A6FFE2FE2F7AE573B05BACCC83B - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageAmatorkaFilter.h - path - framework/Source/GPUImageAmatorkaFilter.h - sourceTree - <group> - - 6FEFCD63C992EB9E58DC9EF3C3A8CC96 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageZoomBlurFilter.m - path - framework/Source/GPUImageZoomBlurFilter.m - sourceTree - <group> - - 7062E0ABB660735A062FBAC488E07703 - - fileRef - 75CF47CA51026D2F117ED6E0D4623C44 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 70643F1A68C1F35B5C9E66DFECD0EB3D - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageHSBFilter.m - path - framework/Source/GPUImageHSBFilter.m - sourceTree - <group> - - 706CE2321B01AF00AA3DE5568130DE4E - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - KSFileUtils.h - path - Source/KSCrash/Recording/Tools/KSFileUtils.h - sourceTree - <group> - - 70B945562B2AF99DE7D0957059E9E73A - - fileRef - AA6561DBCA92FB72E3AC0E928776812C - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 713624CCD7054229110D31A0CF80204C - - fileRef - 4248F0718D60C2B111EADF9A03124842 - isa - PBXBuildFile - - 716E99AF71F6DC3D945730A7B12FC5F6 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageDarkenBlendFilter.m - path - framework/Source/GPUImageDarkenBlendFilter.m - sourceTree - <group> - - 720DC354002092C31669D06F9D57032B - - fileRef - 851807777C95C7C10986A5887AA43287 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 72683B53AAE81C5DCA2DA1853CAC9098 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageView.m - path - framework/Source/iOS/GPUImageView.m - sourceTree - <group> - - 72CE5DFF8D73C141DBB92CD6F435415B - - includeInIndex - 1 - isa - PBXFileReference - name - lookup_soft_elegance_1.png - path - framework/Resources/lookup_soft_elegance_1.png - sourceTree - <group> - - 732442EDE614BE22817490AA6ACD94BF - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - dh.h - path - Pod/Classes/pili-librtmp/dh.h - sourceTree - <group> - - 739AA70298B55C090917C67059E76BBA - - fileRef - B0B5F90B3EB5C44789E157210E00B8D0 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 73DE50DCE200522A7F81F453A1874794 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageMultiplyBlendFilter.m - path - framework/Source/GPUImageMultiplyBlendFilter.m - sourceTree - <group> - - 74209F1B104283C94240FE21D36F25D9 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - KSMach.h - path - Source/KSCrash/Recording/Tools/KSMach.h - sourceTree - <group> - - 7478D4B41B8A859EF5EF670BA7D74171 - - fileRef - 69971451DB89A436877BE1C1D1CFEB8C - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 74B4FDB0C6FDE18EDB0D33F627F191B6 - - fileRef - 6767EA6299B14B4DDFDE3EB4359EE94B - isa - PBXBuildFile - settings - - ATTRIBUTES - - Project - - - - 7576A7969B60A536E7B91E830088FB83 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageAdaptiveThresholdFilter.m - path - framework/Source/GPUImageAdaptiveThresholdFilter.m - sourceTree - <group> - - 75A54E5DE45332799C6E4DA1F3715626 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageGaussianBlurFilter.m - path - framework/Source/GPUImageGaussianBlurFilter.m - sourceTree - <group> - - 75BE49462527D76A402C44064AAE0F28 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageLuminanceThresholdFilter.m - path - framework/Source/GPUImageLuminanceThresholdFilter.m - sourceTree - <group> - - 75C335E787390CF7B50C58509C927EAC - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - QNDomain.m - path - HappyDNS/Common/QNDomain.m - sourceTree - <group> - - 75CF47CA51026D2F117ED6E0D4623C44 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageColorPackingFilter.m - path - framework/Source/GPUImageColorPackingFilter.m - sourceTree - <group> - - 75FB19F919886142B16DA417292AF227 - - fileRef - 91E59D60D9F970D2444F9658869FD879 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 764E153ECA24CE8D7028F7285B4ACB3F - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageLocalBinaryPatternFilter.h - path - framework/Source/GPUImageLocalBinaryPatternFilter.h - sourceTree - <group> - - 76504FBCEC7E0C1F8EB3A5B08885174B - - fileRef - 6F0E42EBEE74F0799B20DB8B9EB97D33 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 7721D993ED2B6C2DEF3331B64CF7FF53 - - buildConfigurationList - E76A355B4BFDFD3A266094D085BE5B86 - buildPhases - - 47FD504D03B81A75763C96AD06A2B9AA - AF847C4042334D259EF41926FB435CD1 - CA1A032B0E87DEAFA1C720698C71900E - - buildRules - - dependencies - - isa - PBXNativeTarget - name - KSCrash - productName - KSCrash - productReference - 438452E287D667FEBF7861442F84C2F3 - productType - com.apple.product-type.library.static - - 772EFE207902AC45C880655A35C91230 - - includeInIndex - 1 - isa - PBXFileReference - name - KSCrashSentry_User.c - path - Source/KSCrash/Recording/Sentry/KSCrashSentry_User.c - sourceTree - <group> - - 7733728D8382BAA9B605C135D9E59120 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageLookupFilter.h - path - framework/Source/GPUImageLookupFilter.h - sourceTree - <group> - - 774EF787230FBF7CEF6CA788AFDCBDC7 - - includeInIndex - 1 - isa - PBXFileReference - name - rtmp.c - path - Pod/Classes/pili-librtmp/rtmp.c - sourceTree - <group> - - 776B81118086A788D6F2EF26E6BD3496 - - fileRef - 9EA03D378ECEFB6D4ADF16C2C65EE383 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 77CAE2021809AB249594DA45165E7309 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - HappyDNS-dummy.m - sourceTree - <group> - - 77E79C966AC2AD4EEDC635D8C16E05F8 - - includeInIndex - 1 - isa - PBXFileReference - name - KSCrashC.c - path - Source/KSCrash/Recording/KSCrashC.c - sourceTree - <group> - - 7825A13CD152DB1626BEA58C1BB93970 - - fileRef - 1FAD8D1CE26A60925D4D109A47C78094 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 784930B2F938573A7D2B150ED986C5F9 - - fileRef - 69AE16497C2CD67E23F1E30D7C985364 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 78932A8392FB0E676C722EDB8E8A09F4 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageSphereRefractionFilter.h - path - framework/Source/GPUImageSphereRefractionFilter.h - sourceTree - <group> - - 789430B0BEDB3F2E069095B29A8F26C0 - - fileRef - 61AD7F0D211CA08F3CE6F593E4B889C3 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 78A175629FFE90C4A5F7D9FE92AAC22D - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageTwoPassFilter.m - path - framework/Source/GPUImageTwoPassFilter.m - sourceTree - <group> - - 7902649584F64EA5A1335AE65645D9E1 - - fileRef - 5C7497BA4C6480C0799AC143688AF9E9 - isa - PBXBuildFile - - 790CA0240F9E02E506907B098602C4C8 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - KSCrashInstallation+Private.h - path - Source/KSCrash/Installations/KSCrashInstallation+Private.h - sourceTree - <group> - - 79133C646102AEF3E35D2B9DCD4D7F02 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageHarrisCornerDetectionFilter.m - path - framework/Source/GPUImageHarrisCornerDetectionFilter.m - sourceTree - <group> - - 79442E11E1F3944B27F5C66E03C5D144 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageOverlayBlendFilter.m - path - framework/Source/GPUImageOverlayBlendFilter.m - sourceTree - <group> - - 7976ED803218E9C10FB975BAF579D7D9 - - children - - 0FE2ECB4B3BEDAD0F91EC8E458420F21 - - isa - PBXGroup - name - Frameworks - sourceTree - <group> - - 7978E744735994C26C56B1863161C375 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageGaussianSelectiveBlurFilter.m - path - framework/Source/GPUImageGaussianSelectiveBlurFilter.m - sourceTree - <group> - - 798B6B4E9FEC91D74E94A8CB34C2239D - - buildConfigurationList - 5E8E0B8EFED4C907A9E18116284D0A64 - buildPhases - - BA25E4D118C1CE955285F4BAC647D73A - 56B32CB8D79FBB39E38685D3822B0A71 - - buildRules - - dependencies - - F0C51131791BECA98886CF1918340344 - C0A698F697D624F2A28D5948150504A2 - A6F0F5FEB09B7D8FAA25D25C58D6332C - 59D99EA0B8A57F6D273B74294B33D185 - - isa - PBXNativeTarget - name - Pods-PLCameraStreamingKit - productName - Pods-PLCameraStreamingKit - productReference - B0D2688C6D2ADC89BDD43CA7B0095EDA - productType - com.apple.product-type.library.static - - 79A5AD2A1DB4F39CF759ADD7946C9DEC - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - KSSystemInfo.h - path - Source/KSCrash/Recording/KSSystemInfo.h - sourceTree - <group> - - 79B2682D22F264404C0F34662B9A356F - - fileRef - 2F7997175B00E6BC07C24939E4073E0D - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 79D898C59BA5AFC30D7BA26AF3BEE2DE - - fileRef - DC474EA85AED84D841AF0FCC2F50E5AC - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 79E48C7BDB79F8F39B186631B2FA88A5 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - KSCString.m - path - Source/KSCrash/Reporting/Tools/KSCString.m - sourceTree - <group> - - 7A0BA924A1E1E10325F3DF8F0746E0F2 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageFramebuffer.m - path - framework/Source/GPUImageFramebuffer.m - sourceTree - <group> - - 7A4F7452DB20B8C9B0406B5FA19FBBC1 - - fileRef - 88857831A02772260D9531ACB472CD84 - isa - PBXBuildFile - - 7AA3E3A3B4ABB83CFACB184206A7EFE1 - - fileRef - D37E7F6F10F34E6E21E6E2C5D188CB81 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 7AC70375B391A9837AFAD85359820059 - - fileRef - A9C590A4278BE22A3944ABBA0499A974 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 7B51BB310FBD253AFCB5F3F673650677 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - LLVM.h - path - Source/KSCrash/swift/Basic/LLVM.h - sourceTree - <group> - - 7B63360818CC899959E58B93D83E763E - - includeInIndex - 1 - isa - PBXFileReference - name - hashswf.c - path - Pod/Classes/pili-librtmp/hashswf.c - sourceTree - <group> - - 7BA606BDDBCF9DA9C74C5F5B6CAC08AD - - fileRef - 4B54A4DC2E7B9D79D15D0313AAB40D4D - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 7BD3F1EAE832407A81328635B48794D0 - - fileRef - E1C8BBD709EA58EB1EFBAE6C2CDCAB1D - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 7BE97A99EB7CE228C3B05ADF81167E37 - - fileRef - 6817D013D0956C3F97645B101E1C5FF9 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 7C5E93FE2733ADFDCFF2296FF8EA1260 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageLowPassFilter.h - path - framework/Source/GPUImageLowPassFilter.h - sourceTree - <group> - - 7C6D6034FA4AAFA93B1E566B93350412 - - fileRef - EC4C4036C068230BB75187C1C49D28DD - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 7C825B8D1BEB6C104879794E52ABB5F8 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageContext.m - path - framework/Source/iOS/GPUImageContext.m - sourceTree - <group> - - 7C99CDD4D38288FA54323EBD6A66097E - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - text.plist.xml - path - Pods-PLCameraStreamingKit-acknowledgements.plist - sourceTree - <group> - - 7CC2985EDB8DEBC29964D25BF19462EF - - fileRef - AD0378DD0D9BAF74CCA8138241F48472 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 7D29B57C84DFB475E83C6E5C9FEF4672 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageSepiaFilter.m - path - framework/Source/GPUImageSepiaFilter.m - sourceTree - <group> - - 7D33774109711DA7F57FBE88983AABF6 - - fileRef - D990CC93A416200635478D0B48C770E2 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 7D84124D15687644CBCC13BB58B836F2 - - fileRef - 7C5E93FE2733ADFDCFF2296FF8EA1260 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 7DB346D0F39D3F0E887471402A8071AB - - children - - BA6428E9F66FD5A23C0A2E06ED26CD2F - F1D67E26F955C71D989E0FE8B96FD698 - F4CDA5FA9197A41E0081E84F932906EB - CBD971445F74B919457EC4B0C0006D5C - E5AF0CE76749CAAB29C4E046059E35A7 - 5AF2F88648B6F77C118B236B969EE266 - - isa - PBXGroup - sourceTree - <group> - - 7DB4D1585B8674316AE82EBDB08A3F64 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageSepiaFilter.h - path - framework/Source/GPUImageSepiaFilter.h - sourceTree - <group> - - 7DCE78487C34BF62A3E9AC45B9456067 - - fileRef - DA335841F6E2C267CD27B5C7DEFFD43D - isa - PBXBuildFile - - 7EC6DADAE5F0D9AED24602ED48EBF078 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - NSDictionary+Merge.h - path - Source/KSCrash/Recording/Tools/NSDictionary+Merge.h - sourceTree - <group> - - 7ED726FE53318104E23F183528459BF1 - - fileRef - 30EE9D525966FB7B8639C3A457F7988C - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 7EF0483D74FB12B9D760809B32FC625B - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - KSDynamicLinker.h - path - Source/KSCrash/Recording/Tools/KSDynamicLinker.h - sourceTree - <group> - - 7F97663A543EEFCF7E5C791E67590D38 - - fileRef - F5578FA1C947C29B90D96B549E05D327 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 7FB3FE368E1B54C3EABE084290F43ECA - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - Fallthrough.h - path - Source/KSCrash/swift/Basic/Fallthrough.h - sourceTree - <group> - - 806D76BF5FCACB89D3D9A8F02D0B5072 - - fileRef - 0108B2923568D5F52A297499664190D0 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Project - - - - 80716CD8CF21489AA526BC3B7CC03952 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageHistogramGenerator.h - path - framework/Source/GPUImageHistogramGenerator.h - sourceTree - <group> - - 80BD0E34BE433E08B9D1E6386FC478BD - - fileRef - BDA5C8818E131E67F8FCC8D002154EC5 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 80D2DC6144CD80E242F81C17097204C0 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - error.h - path - Pod/Classes/pili-librtmp/error.h - sourceTree - <group> - - 80D32B6E8A3FD0343AEDB560C2F3A6BB - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageGlassSphereFilter.m - path - framework/Source/GPUImageGlassSphereFilter.m - sourceTree - <group> - - 80E0969F123168A6FE113378C6E5AD4B - - fileRef - 497C22736C38BFAFF271CCCD569D158A - isa - PBXBuildFile - settings - - ATTRIBUTES - - Project - - - - 810C982F43430F055E482D839B656DC1 - - fileRef - 1F6C934BB152E2140627865D5D9D2573 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 811BD3A6C9C6839B14477AFDC49FB4D4 - - children - - 8C96FCE342BDF826E898B44D88A03503 - 53C62ECAEC6E6618FB7F7AC65EEA6554 - 2A441D102C3F72AC5C5FDD2D32B1EE78 - 981FE33008995082E35FF48421F0EBC6 - 8608BADB7A60234FE26D008E1372399E - EC18D3C7D3227C1F4F8B81D22FF97B6F - - isa - PBXGroup - name - Base - sourceTree - <group> - - 8159CE7483F14271FA034D1CA307D2FB - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - archive.ar - name - libPLCameraStreamingKit.a - path - Pod/Library/lib/libPLCameraStreamingKit.a - sourceTree - <group> - - 816E935836F8C6A86F627DF4130773FA - - fileRef - 7978E744735994C26C56B1863161C375 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 81878C4369469F33372AAF4907417AFE - - fileRef - 8694640F34DFFE21B7F98A75F2D55E18 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 81B2CEF0A9A4D9CA438E989034BE689F - - fileRef - A8616B363560C564304297A9882B696E - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 81D9621463A7404DAC77839259365800 - - fileRef - 53B721E64339A583B98B9A503157A074 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 81F3D0BA797A3AE7C0679260998CF4D8 - - fileRef - 790CA0240F9E02E506907B098602C4C8 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 81F952081A5B1802D41528F701AD89D6 - - fileRef - 519A343D5E80C4C13FCE591BF6272C02 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 820EBCF32A44C7144CB4A127B7CFCBD9 - - children - - 4399C491F419738BA0CAEB0FC3E18903 - 5D5F62A97FEB335D5F55BEFAB0AA1CBA - E96F61B3AE97DF2C677FF5304B7E7CE9 - 445DB472F621B4D299934C121AF73C3D - 790CA0240F9E02E506907B098602C4C8 - 0F6758DE87A1D16C095A8D6DBF35117A - 88134EE7E53D850D5D4B7E00E23FE0BE - F592D5D528AADB4C07BAB475D1020FCC - 41CD5729222343A9F0D92BB4F987F368 - A1A383B33727CA4B2BB2D017E4DE5C98 - F4119119303A6F52D249483A7E683A68 - 9026762F3B53DCB843AB06B14B05DF00 - 2F08C793A543FC969986B2FFA2C59C57 - 90BEEF07CA78C125A3EA286DAE956D1B - E692B5B09321366F58738DF9E36A0964 - - isa - PBXGroup - name - Installations - sourceTree - <group> - - 8270D87901068D7FFCB38EC2D6175C57 - - fileRef - F5CC65661152F9B209A4B8BCE15BBB4E - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 82A0DA4C99077BB15BEB09D822D5541F - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImage3x3ConvolutionFilter.m - path - framework/Source/GPUImage3x3ConvolutionFilter.m - sourceTree - <group> - - 82AD2F4352325A947B5855C428C0AC97 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageTwoPassTextureSamplingFilter.h - path - framework/Source/GPUImageTwoPassTextureSamplingFilter.h - sourceTree - <group> - - 82B1F7DECBD0EDFD842E1D5B866CE378 - - fileRef - E0AAD18CB3F21200D283C3A56394844D - isa - PBXBuildFile - settings - - ATTRIBUTES - - Project - - - - 82BB6D6F348CEBCF64B3156803F8F9EF - - fileRef - 26FA0E6B1AB439B3251BCD334D24404E - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 82D08EC2DE139C4C99E7F3410C84E1AA - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - KSCrashReportFilterAlert.h - path - Source/KSCrash/Reporting/Filters/KSCrashReportFilterAlert.h - sourceTree - <group> - - 837F634701C85DE0386C5BEDCFAFC88C - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - KSZombie.m - path - Source/KSCrash/Recording/Tools/KSZombie.m - sourceTree - <group> - - 83919063356F3ED4B2A922D6CE848AA4 - - fileRef - 78932A8392FB0E676C722EDB8E8A09F4 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 83A9D8C98E9654494773237748835FB6 - - fileRef - 561D24B75926E05E2E5DDD570DCF7AEC - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 84127C59C36AAB508556B9B2A44C0053 - - children - - 3539F8980920B472D8B552DD7F77BA04 - 837F634701C85DE0386C5BEDCFAFC88C - - isa - PBXGroup - name - no-arc - sourceTree - <group> - - 841E67CCC3011BDDFE68B4AA1A000052 - - fileRef - 3D68A9C15435E6CE2091476E09914389 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 8420B6E953B63C63DD209BEC3972F293 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - KSCrashReportFilterBasic.m - path - Source/KSCrash/Reporting/Filters/KSCrashReportFilterBasic.m - sourceTree - <group> - - 84378B748B6EB79F5CA35D2BD5648921 - - fileRef - 2E60B908FBF83B9A87334AA0F9A85855 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 84503F35B34D28B00B726552684D492C - - fileRef - 4B81B3022E5F977E9A5BCD0DB1D100E8 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 847F726A96642F45CF1751EA53AACA76 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageRGBClosingFilter.m - path - framework/Source/GPUImageRGBClosingFilter.m - sourceTree - <group> - - 851807777C95C7C10986A5887AA43287 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageUIElement.h - path - framework/Source/GPUImageUIElement.h - sourceTree - <group> - - 8548BDF5160F9597031EFEFD46935FF1 - - fileRef - E96F61B3AE97DF2C677FF5304B7E7CE9 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 85491FF2A5A02D2FF8C8EE5B1E47EE95 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageSaturationFilter.h - path - framework/Source/GPUImageSaturationFilter.h - sourceTree - <group> - - 8554ACFF2BDC54A3658C65D1B3649601 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageFilterGroup.h - path - framework/Source/GPUImageFilterGroup.h - sourceTree - <group> - - 85BD980E58016E21A0266AA862667475 - - fileRef - 80D32B6E8A3FD0343AEDB560C2F3A6BB - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 85DB2ACBD12E700050FF9650133BE187 - - fileRef - 20FE481B177D78E07C02703C790B7A91 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 85F70911B8D8C22F234BBBD8D2012AA5 - - fileRef - 0FEF63F7F5A2091B039480B24129982E - isa - PBXBuildFile - settings - - ATTRIBUTES - - Project - - - - 8608BADB7A60234FE26D008E1372399E - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - NSData+GZip.h - path - Source/KSCrash/Reporting/Filters/Tools/NSData+GZip.h - sourceTree - <group> - - 861BBBB10DB621E037A837C28060FF07 - - fileRef - 28EBA817530A57A1224BC49AE06906A1 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 8627F42E9C2977B288F6CB2E773B2C95 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageAdaptiveThresholdFilter.h - path - framework/Source/GPUImageAdaptiveThresholdFilter.h - sourceTree - <group> - - 864A2EA46B466EB346BBEF545F6D21F2 - - fileRef - 1D9E0E73CFC5D12F73B53BE58202BB30 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 86506E8D4E7CECA8EFE0E949401C0EBB - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - http.h - path - Pod/Classes/pili-librtmp/http.h - sourceTree - <group> - - 8650AE0156486320BD60A2CDB6003CBC - - fileRef - 54752E1E4F06A6F3898CDADB90E56738 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 8660F62C4ECD9AC11558FDC34287F3CE - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - QNResolver.h - path - HappyDNS/Local/QNResolver.h - sourceTree - <group> - - 866C5305A0C19C21B1D34562066AF28A - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageThresholdedNonMaximumSuppressionFilter.m - path - framework/Source/GPUImageThresholdedNonMaximumSuppressionFilter.m - sourceTree - <group> - - 8694640F34DFFE21B7F98A75F2D55E18 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageHalftoneFilter.m - path - framework/Source/GPUImageHalftoneFilter.m - sourceTree - <group> - - 86AA185065F2DB289DC3A70BEB1DB432 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageSourceOverBlendFilter.h - path - framework/Source/GPUImageSourceOverBlendFilter.h - sourceTree - <group> - - 86FE79EC69D9F6C1ACD57641E0069D1E - - fileRef - 2C5BD5FCA1D8E988DA851EDEEC834DEB - isa - PBXBuildFile - settings - - ATTRIBUTES - - Project - - - - 8709EEE0A3E0A1F2614F97CD45B97261 - - includeInIndex - 1 - isa - PBXFileReference - name - KSJSONCodec.c - path - Source/KSCrash/Recording/Tools/KSJSONCodec.c - sourceTree - <group> - - 87664A8F0633FF91070DED1C712D5491 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImagePosterizeFilter.h - path - framework/Source/GPUImagePosterizeFilter.h - sourceTree - <group> - - 8770973ACBAD38A6557000C7231940A3 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageSaturationBlendFilter.m - path - framework/Source/GPUImageSaturationBlendFilter.m - sourceTree - <group> - - 87DAB3728AF8C084C114410637742B19 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - rtmp_sys.h - path - Pod/Classes/pili-librtmp/rtmp_sys.h - sourceTree - <group> - - 881178C7475ACBA225025BC031485EB3 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImagePrewittEdgeDetectionFilter.m - path - framework/Source/GPUImagePrewittEdgeDetectionFilter.m - sourceTree - <group> - - 88134EE7E53D850D5D4B7E00E23FE0BE - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - KSCrashInstallationConsole.m - path - Source/KSCrash/Installations/KSCrashInstallationConsole.m - sourceTree - <group> - - 8823B9C91D9A4B482685EEE106F8B97A - - fileRef - F75D35773212928F299CADF5A9781EB8 - isa - PBXBuildFile - - 884533B82B26741E3E336A9876B1B9C1 - - fileRef - 08225C56C49C8D83AD3800C37D949148 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 88551BB2DCD94A421A71F8A28427BC5A - - fileRef - 9CE2A0A18ED4B481AD491DCD7BFDE805 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 885F540C3721EB398522C1646259619C - - fileRef - 523CCDEFA561D42F89E63623F0C93E9D - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 88780FFF540DE8E6563FAF16EFA82250 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageTwoInputFilter.m - path - framework/Source/GPUImageTwoInputFilter.m - sourceTree - <group> - - 88857831A02772260D9531ACB472CD84 - - isa - PBXFileReference - lastKnownFileType - wrapper.framework - name - Foundation.framework - path - Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/Foundation.framework - sourceTree - DEVELOPER_DIR - - 88B1DBACC9F94DE26FD3DDC4F2FCD8D7 - - baseConfigurationReference - 2326C7C92075A44B14DB2315EB030438 - buildSettings - - ENABLE_STRICT_OBJC_MSGSEND - YES - GCC_PREFIX_HEADER - Target Support Files/GPUImage/GPUImage-prefix.pch - IPHONEOS_DEPLOYMENT_TARGET - 7.0 - MTL_ENABLE_DEBUG_INFO - YES - OTHER_LDFLAGS - - OTHER_LIBTOOLFLAGS - - PRIVATE_HEADERS_FOLDER_PATH - - PRODUCT_NAME - $(TARGET_NAME) - PUBLIC_HEADERS_FOLDER_PATH - - SDKROOT - iphoneos - SKIP_INSTALL - YES - - isa - XCBuildConfiguration - name - Debug - - 88F8C110FEEB0F52D054504AFA72C85C - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - KSCrashReportStore.m - path - Source/KSCrash/Recording/KSCrashReportStore.m - sourceTree - <group> - - 896899374D584C6EE78E316A1E4CE72C - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageThresholdedNonMaximumSuppressionFilter.h - path - framework/Source/GPUImageThresholdedNonMaximumSuppressionFilter.h - sourceTree - <group> - - 896C4A9A7CB7747B35022A11992B398A - - fileRef - 9D9CC0798A8622D6EC91B6720FD33068 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 89920751328423998C297A9378E9EBCD - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageMonochromeFilter.m - path - framework/Source/GPUImageMonochromeFilter.m - sourceTree - <group> - - 899A02A5C8C6DA97FCFD228CD98A3210 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageShiTomasiFeatureDetectionFilter.m - path - framework/Source/GPUImageShiTomasiFeatureDetectionFilter.m - sourceTree - <group> - - 89A80BFE76A39FD811B0D1BA13E0499B - - fileRef - 1C8F786DF81D82A063D3F7606FF24B5C - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 89C5D5F58B4C3E642123062B6CE8B347 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - QNDes.m - path - HappyDNS/Util/QNDes.m - sourceTree - <group> - - 8A5D307EAEBF94673A7F4E778DF577EC - - fileRef - BED5D1815B3AD19DE87CCDB505B4284E - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 8A6B94F6F5925E9CBC904F9AEF7847F8 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImagePicture+TextureSubimage.m - path - framework/Source/iOS/GPUImagePicture+TextureSubimage.m - sourceTree - <group> - - 8AABAC62132AC3FFAD3C2F37CBCBEA60 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - NSError+SimpleConstructor.h - path - Source/KSCrash/Recording/Tools/NSError+SimpleConstructor.h - sourceTree - <group> - - 8AD5EB5086845A2030BA40198FFE8EBD - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImage3x3TextureSamplingFilter.h - path - framework/Source/GPUImage3x3TextureSamplingFilter.h - sourceTree - <group> - - 8B7B75BDDA8FB5F466A5CB10D5811A26 - - fileRef - 2ECC8E7DBB59923196C558633E9BEBFD - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 8BB2C7F9BF1302F905EAF7D19D6BE67A - - fileRef - C77C1E7B3CC3CCFB2106A350971272D6 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 8C0AA8199DC44FAE432D719510E02586 - - fileRef - C0F16BBAF381672AA13CF240ABDD8366 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 8C5FB8F427702BA76976A32988D9625D - - fileRef - 0F6758DE87A1D16C095A8D6DBF35117A - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 8C96FCE342BDF826E898B44D88A03503 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - Container+DeepSearch.h - path - Source/KSCrash/Reporting/Filters/Tools/Container+DeepSearch.h - sourceTree - <group> - - 8CAC1F3102417835DC9CC168F6F99B9C - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageMosaicFilter.h - path - framework/Source/GPUImageMosaicFilter.h - sourceTree - <group> - - 8D2204766D1BF9680601A67092F8A1FE - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageHarrisCornerDetectionFilter.h - path - framework/Source/GPUImageHarrisCornerDetectionFilter.h - sourceTree - <group> - - 8D261F4966F34330768723403A925E0D - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - dhgroups.h - path - Pod/Classes/pili-librtmp/dhgroups.h - sourceTree - <group> - - 8D45F2A0E5969B0606B6258A15EB38F2 - - children - - 583E9C7A7859693C883DCBE9D2BE2277 - - isa - PBXGroup - name - Pod - path - Pod - sourceTree - <group> - - 8D4B0E83F507CA646E16AECAE63AB08E - - fileRef - E65C788C69CD95534E7A168343B9B1C7 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 8D8FED742A729A6091B2D43D4619929B - - fileRef - C17863972058A6C2638A95730FC8BA4F - isa - PBXBuildFile - - 8DB1E5DD8FCD34C27CD21DF44A861EA3 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - KSCrash-prefix.pch - sourceTree - <group> - - 8DBB62F9E8A771CF56B9E4843BE93A48 - - fileRef - 6C01DD5C2408B1FA09ED24621715C615 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 8DF2AE3FE8620124EFDBF2A3682B11BF - - fileRef - 91069F36DD1639A0956DE92EBA95F69C - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 8DFAC0F47295A88430858484C308E3C0 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageParallelCoordinateLineTransformFilter.h - path - framework/Source/GPUImageParallelCoordinateLineTransformFilter.h - sourceTree - <group> - - 8E246454AF23117CC3E4FB02DBD592A8 - - fileRef - 1985BE14D6E317FC2F60960A07F1935A - isa - PBXBuildFile - - 8E54783F214061B516C87C931169F9ED - - fileRef - 57EA8F05E99FC4CB5B4775E7EDAFB46D - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 8EAEAFE3F75689EC21DCDDE454247807 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - type_traits.h - path - Source/KSCrash/llvm/Support/type_traits.h - sourceTree - <group> - - 8EB0D13DC645B43847718841293CC08A - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageDirectionalNonMaximumSuppressionFilter.m - path - framework/Source/GPUImageDirectionalNonMaximumSuppressionFilter.m - sourceTree - <group> - - 8F1406E7B3732D0DBF05BAF315EB0CEA - - fileRef - ED71C09207CB0200C95ECEC74DB989E9 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 8F8933FFC6CCE99F653ED9E79532CA8B - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - KSCrashReport.h - path - Source/KSCrash/Recording/KSCrashReport.h - sourceTree - <group> - - 90028EC691399E7E3B5FD391F5E02189 - - fileRef - 227A38D53B31ECCFB050EC06A20B5694 - isa - PBXBuildFile - - 90169C817DED636388514A58128D689E - - fileRef - 02FDAF375EB3E6CC323CE38B4168F706 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 9026762F3B53DCB843AB06B14B05DF00 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - KSCrashInstallationStandard.h - path - Source/KSCrash/Installations/KSCrashInstallationStandard.h - sourceTree - <group> - - 90997605B8D24F402BF415600169204F - - fileRef - 307AE59A4B57EE153DF017146CAD3AEF - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 90BEEF07CA78C125A3EA286DAE956D1B - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - KSCrashInstallationVictory.h - path - Source/KSCrash/Installations/KSCrashInstallationVictory.h - sourceTree - <group> - - 90FCFDAC036253E55C999133CB2A3F44 - - fileRef - E5ABCAF3A4737C12FDE44477CF0C4994 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 91069F36DD1639A0956DE92EBA95F69C - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageWeakPixelInclusionFilter.m - path - framework/Source/GPUImageWeakPixelInclusionFilter.m - sourceTree - <group> - - 910798A255B567877C010F464F1AF941 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - NSString+URLEncode.m - path - Source/KSCrash/Reporting/Tools/NSString+URLEncode.m - sourceTree - <group> - - 9150372647BA1780BD15EE36B9F5D4A5 - - fileRef - 163A1BAF7F620B6EA2D3F2B6073929A2 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 917A0EF93F272C54445750898427C255 - - fileRef - CE989C096BDBEA0E2FBD1F5D76D06599 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 919A063C2E14D042A4EB26F366888A73 - - fileRef - 0B64E82729635EFBBAE0A268B6765024 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 91E59D60D9F970D2444F9658869FD879 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageLuminanceRangeFilter.h - path - framework/Source/GPUImageLuminanceRangeFilter.h - sourceTree - <group> - - 926123466ECAC14985DA80F186F204BF - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - PLVideoStreamingConfiguration.h - path - Pod/Library/include/PLStreamingKit/PLVideoStreamingConfiguration.h - sourceTree - <group> - - 92BA75B3FB5E9B772B8B15CBCBB53766 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageClosingFilter.m - path - framework/Source/GPUImageClosingFilter.m - sourceTree - <group> - - 92FD18E49F36524BB33AFA9899F2BAB8 - - children - - DC1EDCB2F0D7F0E2CF706651A8A7DA6D - D6FCEA640495D290C7A4293C58C3DFF0 - - isa - PBXGroup - name - Stringify - sourceTree - <group> - - 931E315DB56EC7307D3E3799F68CF1DB - - fileRef - 2757C1E0B437B9E0A90FCB7E248C7B77 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Project - - - - 932ED160BE0383A471BBC772F779CFBA - - fileRef - 3314E03E9CBA3E8E2D13EBD39165A97F - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 9391E907BB55DA1F1B294672BE6BE99D - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - KSJSONCodecObjC.m - path - Source/KSCrash/Recording/Tools/KSJSONCodecObjC.m - sourceTree - <group> - - 9396A0C10B2F95EE74A93CE22CC315E7 - - fileRef - 03F7C1126725C54F25AED330CD33A163 - isa - PBXBuildFile - - 939F99D769032AAEC4111FA9575B4B9F - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageAmatorkaFilter.m - path - framework/Source/GPUImageAmatorkaFilter.m - sourceTree - <group> - - 93ECFF9D9936CEE7539DC89169A11E25 - - fileRef - 59E599D6123E8F2EFE31316B1663C8BA - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 93ED4C2036C716DBA95ABBA2E8922A8F - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - KSCrashSentry_NSException.h - path - Source/KSCrash/Recording/Sentry/KSCrashSentry_NSException.h - sourceTree - <group> - - 9435208F002C2AF88F9B43C7161CDFF8 - - children - - 4EE51E906DF18B5F1F431D6E07FDA41F - 0B40CF909BDF85FFA0BFA32CC29BC930 - - isa - PBXGroup - name - JSON - sourceTree - <group> - - 9450818522DF37CE9B8FC4880BAA3DC4 - - fileRef - A92233E258066FB3D7CB7BB346A2A1F3 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 94AD6E90BC0E7E297DC143BFF05AD832 - - fileRef - 8C96FCE342BDF826E898B44D88A03503 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 94AF77FD05887BD2FC2580E98C32EDA0 - - fileRef - 8660F62C4ECD9AC11558FDC34287F3CE - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 94E6ADDA3181DA63A576C6728AE0A169 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - PLStream.h - path - Pod/Library/include/PLStreamingKit/PLStream.h - sourceTree - <group> - - 94F8A4E02C80FE57747ECAC2EE81D037 - - fileRef - C325DE2CA13A7E5A7C373ABE220B5AB7 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 95629A55D898988FC5EB9066CED634CB - - fileRef - 73DE50DCE200522A7F81F453A1874794 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 958E6A52D32061DB5D24A492D208F762 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImagePolkaDotFilter.m - path - framework/Source/GPUImagePolkaDotFilter.m - sourceTree - <group> - - 959424FA8BCC2E31DEED4C332C15868B - - fileRef - 1634B0AF70075E59D89AA66AC92C8E0E - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 95E0BF770AE54038704A0299B3031872 - - fileRef - 0B7BE15B07B8ABFA57F0D783188DF604 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 95E640FE201CB568AA541E201AB3CAD2 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - KSLogger.h - path - Source/KSCrash/Recording/Tools/KSLogger.h - sourceTree - <group> - - 95F606AD95B4990F2F0C869D2B8E60ED - - fileRef - EA8CCEF605BCF13506BC3B74CE5437DA - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 96CD75528FAE32B60C511B88C338CE01 - - fileRef - 79133C646102AEF3E35D2B9DCD4D7F02 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 975260C33AF9EEA8BD05A7B61BF6F079 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageLuminanceThresholdFilter.h - path - framework/Source/GPUImageLuminanceThresholdFilter.h - sourceTree - <group> - - 97D8628F350619CAAEC1BA86A20C1C8B - - children - - A0B68EE09A068D7795432D4D5A2AFE35 - E0AAD18CB3F21200D283C3A56394844D - A1BD467BA2243819E9E9BE4A14F29B82 - 16C0871E7C07D1C24421DD08DD7C7869 - A7B41F99AA1AE58974DE1786AB555E76 - 9CA77467B5AE080DCFED7737A2353B53 - 7FB3FE368E1B54C3EABE084290F43ECA - 163A1BAF7F620B6EA2D3F2B6073929A2 - 4355B550CFD53BDB6632B00476EB72FC - 4ED2ED9BFCF3548C819DADF3F784C753 - 2757C1E0B437B9E0A90FCB7E248C7B77 - 17A5064583EB6B9817F7164304E49E16 - D0B9E5CB4D657156E6F4BB939DDD26D4 - 9A02118A8CADA80659D54ABE276F8470 - 77E79C966AC2AD4EEDC635D8C16E05F8 - 3365B9CCDACF66239F5B1D0B2F2BA29D - 1CA93A775E23E1B333B00A58DDC38E05 - C17863972058A6C2638A95730FC8BA4F - 683B48DFBDC0534E21B7002EDD5EED04 - 626E3C85A43CC6B647471AE639B232E1 - 4B6FCC157424394EEA36252137C12EE0 - 0B97D7498878B71528256629E481C8A2 - 8F8933FFC6CCE99F653ED9E79532CA8B - 350A92C6FD710AF6BF49E67AD142E4C6 - C0F16BBAF381672AA13CF240ABDD8366 - 2C5BD5FCA1D8E988DA851EDEEC834DEB - 88F8C110FEEB0F52D054504AFA72C85C - A1D9AB7DC3FBAF55D0D4CBB6B43E2B81 - FC51E98F2892A8B7D4A0B7DFA3204C0E - C0187336298930E1072F129FAA643A3A - 02FDAF375EB3E6CC323CE38B4168F706 - 6141399000D2C9AEF7B095513D3EC14C - DFC6F9C8BD399C99F9B6D707BDD35483 - 0FEF63F7F5A2091B039480B24129982E - 4DA44BA2E1354E55C22E3CAA2CC439CC - 03F7C1126725C54F25AED330CD33A163 - 4C73B53BB105DDC8F13C133D37239846 - 93ED4C2036C716DBA95ABBA2E8922A8F - C9DC6DF03847BB749944415558D277DD - 6E9227441537E3C64FCD9F0210FEB33D - 20BAD3ECC4E9904226C5CB3D4C1E4F0E - 9F311D8DF93DA1765F0E518C3446550D - 772EFE207902AC45C880655A35C91230 - 6AF53F82DC91312D75B05D0555747FB2 - B74E6A82A202F549B8AB4AB0597A034F - B7254D8F85C23ECC56952EC5C1873D6D - CB9E685E7A4D0BFDCA358AD4BAFAFB68 - 17156E8B9DD0C83C197A04D8D54EABA9 - 5FF7C99CEB55E5C6934A606BF0AF0E45 - 7EF0483D74FB12B9D760809B32FC625B - 24D02CF9463A8487350D5FE58C5ADADB - 706CE2321B01AF00AA3DE5568130DE4E - 8709EEE0A3E0A1F2614F97CD45B97261 - 0108B2923568D5F52A297499664190D0 - 160746860BB84D12336A96619DCCA283 - 9391E907BB55DA1F1B294672BE6BE99D - 95E640FE201CB568AA541E201AB3CAD2 - 66503EF1668A14359637CC42F69FEE38 - 631258C3505CBAF8EE6CDF5A08217EF5 - 74209F1B104283C94240FE21D36F25D9 - DA335841F6E2C267CD27B5C7DEFFD43D - F2AC2815DBACBDEF3561B8DE51598CFC - 227A38D53B31ECCFB050EC06A20B5694 - 33ADAB1A2193E60A8BFD8AF5B7ADDBA8 - FEA6D9E34F4B3DE1BD6B2881897CFB63 - 562CB9A1EACE586AB9C693A820B8E41F - B41F6F618A8B7B0D673DB88EAA6C1EA6 - F78FC3588F7D185DB7C3E8459DC1E74D - FA928403614B76C71BBF7F68A94F5232 - 9EADF783DE0BCB252E333C90594D56C7 - C4709F60F1DDB68D3FF57615522B4077 - 497C22736C38BFAFF271CCCD569D158A - 500464F1BE18BEAAF5952269538483A4 - 159F09C556CFFDFB1AC3A2934BE81013 - DCCF298E9F2DD0441A356BA5BE07C308 - DC39FCBF566EB870672C37AB60D24F8B - C6BD2820BE950938C50BC09BC6C3CB6C - 6767EA6299B14B4DDFDE3EB4359EE94B - 79A5AD2A1DB4F39CF759ADD7946C9DEC - 99015278C5B19B2707C3261878941BD6 - 1C64B847A140EE5CA8AC53B782D352B0 - 7B51BB310FBD253AFCB5F3F673650677 - E109D7867A7BDB60AF686CEE2619B0AD - 1793F911D06FD8DD3E1E1BC5C31174D1 - F52DF774CC535C7EA363ACFBF04A9BA7 - 7EC6DADAE5F0D9AED24602ED48EBF078 - 3505DCE33AF9209A01CA862524B53239 - 8AABAC62132AC3FFAD3C2F37CBCBEA60 - C232CDD9BE229AB4789D71C606149243 - 435D5A3585E18EC66D89261A6411D007 - 5C7497BA4C6480C0799AC143688AF9E9 - E847441523AB23F74AA6C45E80B028AD - 1D7ABD1155F542414C6F714D2E2016E5 - 38E2E975DD4981181B23AFB0C3E153C3 - 3DEADB5E0B979793FB30D2D0005CC0C5 - 19F8D385E026C6B2BDF7A6D9A58C59FA - E7F77FCFB6F98D6541A4395818A7C726 - 6872E4E7A341FBC15C8503525FC475F7 - 8EAEAFE3F75689EC21DCDDE454247807 - - isa - PBXGroup - name - Recording - sourceTree - <group> - - 981FE33008995082E35FF48421F0EBC6 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - KSVarArgs.h - path - Source/KSCrash/Reporting/Filters/Tools/KSVarArgs.h - sourceTree - <group> - - 982D23487384E2D45C3676CFAAB978EC - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - text.script.sh - path - Pods-PLCameraStreamingKit-frameworks.sh - sourceTree - <group> - - 98330210BD22E9125C7D76107D59C208 - - fileRef - A134BDAAD990E3DD96BF5F0892DF4DC5 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 988BADE2956AEDF36E085A753F87083A - - fileRef - 350A92C6FD710AF6BF49E67AD142E4C6 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Project - - - - 98A0781A2EB476F67BAEC9AFE13A7570 - - fileRef - 280D3D38C7D879EE2B0FEB9BC854EAB5 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 98AA34659AB0229E769EE6262E7F2CA1 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageFramebufferCache.m - path - framework/Source/GPUImageFramebufferCache.m - sourceTree - <group> - - 99015278C5B19B2707C3261878941BD6 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - KSSystemInfo.m - path - Source/KSCrash/Recording/KSSystemInfo.m - sourceTree - <group> - - 991A976FC15010AA4D511E7B5DE2E19E - - fileRef - 5A8687F67DFF9E2FC558FA0AC909AF69 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 999BC088CF01F4A8C4FD5343E02BE09B - - fileRef - 3D2D82890C27903F01FDF9E6AFBBE49B - isa - PBXBuildFile - - 99AF1FBEB748F3B1681597A60876B0B3 - - buildActionMask - 2147483647 - files - - BF81C1F41F880FD0B775A30678E54325 - - isa - PBXFrameworksBuildPhase - runOnlyForDeploymentPostprocessing - 0 - - 9A02118A8CADA80659D54ABE276F8470 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - KSCrashAdvanced.h - path - Source/KSCrash/Recording/KSCrashAdvanced.h - sourceTree - <group> - - 9A32D8064BF7A730927C86A2CD1B4989 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - QNHosts.h - path - HappyDNS/Local/QNHosts.h - sourceTree - <group> - - 9A3C143C88046E69C497E8D1BD7D47A6 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageFramebuffer.h - path - framework/Source/GPUImageFramebuffer.h - sourceTree - <group> - - 9A4C9CD2FBA719248B2EE733CBF3D6C8 - - fileRef - 697F1664C211276DD833F9A13037C36E - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 9AC3B30125F6CEC34A09CD8CC917D009 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageChromaKeyBlendFilter.h - path - framework/Source/GPUImageChromaKeyBlendFilter.h - sourceTree - <group> - - 9AD5086F972F74CCBE02621E23BB3DB1 - - fileRef - 181BD4B2309764C0A457DB5BFD0048D5 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 9CA77467B5AE080DCFED7737A2353B53 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - DemangleNodes.h - path - Source/KSCrash/swift/Basic/DemangleNodes.h - sourceTree - <group> - - 9CE2A0A18ED4B481AD491DCD7BFDE805 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageAlphaBlendFilter.h - path - framework/Source/GPUImageAlphaBlendFilter.h - sourceTree - <group> - - 9D826F5D5C132D6AACC56B444BEE84A2 - - fileRef - 9A3C143C88046E69C497E8D1BD7D47A6 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 9D9CC0798A8622D6EC91B6720FD33068 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageBuffer.m - path - framework/Source/GPUImageBuffer.m - sourceTree - <group> - - 9D9FDA83E3DEE286A2EB1AE2A3DF723E - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageVideoCamera.m - path - framework/Source/GPUImageVideoCamera.m - sourceTree - <group> - - 9DCA971563C3FD47B2B4C12BC802EE55 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageFalseColorFilter.h - path - framework/Source/GPUImageFalseColorFilter.h - sourceTree - <group> - - 9DCAF19C2A614D03BD882939966A33ED - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageNobleCornerDetectionFilter.h - path - framework/Source/GPUImageNobleCornerDetectionFilter.h - sourceTree - <group> - - 9E12A65403EEC3FFE1EA1E942F4B6F4A - - fileRef - 66503EF1668A14359637CC42F69FEE38 - isa - PBXBuildFile - - 9E27E4D11520BFB6B563DD7070A08E9E - - buildConfigurations - - 88B1DBACC9F94DE26FD3DDC4F2FCD8D7 - A18346F08C143282A398C2123A3C2E1A - - defaultConfigurationIsVisible - 0 - defaultConfigurationName - Release - isa - XCConfigurationList - - 9E3090B055E79BA8ECB78363F9D3E99A - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImagePicture.h - path - framework/Source/iOS/GPUImagePicture.h - sourceTree - <group> - - 9EA03D378ECEFB6D4ADF16C2C65EE383 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageFramebufferCache.h - path - framework/Source/GPUImageFramebufferCache.h - sourceTree - <group> - - 9EADF783DE0BCB252E333C90594D56C7 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - KSSafeCollections.m - path - Source/KSCrash/Recording/Tools/KSSafeCollections.m - sourceTree - <group> - - 9EAF408D8C385CD7956FEFF138ABF870 - - fileRef - AB853E63175CC63F2017C6EB3E6C74FE - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 9EB0F1A3C0BADC4A7A90086E0208DA98 - - includeInIndex - 1 - isa - PBXFileReference - name - parseurl.c - path - Pod/Classes/pili-librtmp/parseurl.c - sourceTree - <group> - - 9EC9E03148D30B9D21731A3EBBFF0B47 - - containerPortal - D41D8CD98F00B204E9800998ECF8427E - isa - PBXContainerItemProxy - proxyType - 1 - remoteGlobalIDString - 2BAC7CF49C86172B8F10A9ADFC08EF59 - remoteInfo - pili-librtmp - - 9F016468BB47F88291C86903CD0B7B8C - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - KSCrashReportSinkEMail.m - path - Source/KSCrash/Reporting/Sinks/KSCrashReportSinkEMail.m - sourceTree - <group> - - 9F2CD80EA4395D5BBCC47B5A1E06976D - - fileRef - CFAC9916ED281A103F1C76C7B6E5A70F - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 9F311D8DF93DA1765F0E518C3446550D - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - KSCrashSentry_Signal.h - path - Source/KSCrash/Recording/Sentry/KSCrashSentry_Signal.h - sourceTree - <group> - - 9FD464EC925C29A5CCC746F8A0979A32 - - fileRef - B4E29202508B5ECA52C681504261237E - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 9FE5AA9EE443C4F5ACEF2F954E4E7EB7 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageVignetteFilter.m - path - framework/Source/GPUImageVignetteFilter.m - sourceTree - <group> - - A03D4EBD58A86F27055E57727E9A7F9E - - fileRef - 52EEEDA830965CC9C1208951FA9BDF7D - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - A08A24285816BAF077BF6658324270C5 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - PLCameraStreamingKit.h - sourceTree - <group> - - A0903F82A32FD898712B73804E7D16B0 - - children - - A14E2305CE89FE9C2263DBC6FA9117AA - B4A252B184C41DB8B5AAF8579F9EF0F1 - 8DB1E5DD8FCD34C27CD21DF44A861EA3 - - isa - PBXGroup - name - Support Files - path - ../Target Support Files/KSCrash - sourceTree - <group> - - A0A6350BE12E403194CB8F75677B9196 - - fileRef - 95E640FE201CB568AA541E201AB3CAD2 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Project - - - - A0B68EE09A068D7795432D4D5A2AFE35 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - AlignOf.h - path - Source/KSCrash/llvm/Support/AlignOf.h - sourceTree - <group> - - A0DD30814F20C6E21C35CFF0526E63AB - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageToneCurveFilter.h - path - framework/Source/GPUImageToneCurveFilter.h - sourceTree - <group> - - A0E36C5F85EDC1EF9FB0766C915B08B9 - - fileRef - 88857831A02772260D9531ACB472CD84 - isa - PBXBuildFile - - A10D7595A30700C19758E33CEB0489C6 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageEmbossFilter.h - path - framework/Source/GPUImageEmbossFilter.h - sourceTree - <group> - - A134BDAAD990E3DD96BF5F0892DF4DC5 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImagePolkaDotFilter.h - path - framework/Source/GPUImagePolkaDotFilter.h - sourceTree - <group> - - A14E2305CE89FE9C2263DBC6FA9117AA - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - text.xcconfig - path - KSCrash.xcconfig - sourceTree - <group> - - A18346F08C143282A398C2123A3C2E1A - - baseConfigurationReference - 2326C7C92075A44B14DB2315EB030438 - buildSettings - - ENABLE_STRICT_OBJC_MSGSEND - YES - GCC_PREFIX_HEADER - Target Support Files/GPUImage/GPUImage-prefix.pch - IPHONEOS_DEPLOYMENT_TARGET - 7.0 - MTL_ENABLE_DEBUG_INFO - NO - OTHER_LDFLAGS - - OTHER_LIBTOOLFLAGS - - PRIVATE_HEADERS_FOLDER_PATH - - PRODUCT_NAME - $(TARGET_NAME) - PUBLIC_HEADERS_FOLDER_PATH - - SDKROOT - iphoneos - SKIP_INSTALL - YES - - isa - XCBuildConfiguration - name - Release - - A18B1725D91EC59323DF6E1AD32BE257 - - fileRef - D3E2D64AA95AC4D29FB7BA227B0DA400 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - A1A383B33727CA4B2BB2D017E4DE5C98 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - KSCrashInstallationQuincyHockey.h - path - Source/KSCrash/Installations/KSCrashInstallationQuincyHockey.h - sourceTree - <group> - - A1B746F70F10AB6E7B1B264B11875144 - - fileRef - 79E48C7BDB79F8F39B186631B2FA88A5 - isa - PBXBuildFile - - A1BD467BA2243819E9E9BE4A14F29B82 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - Compiler.h - path - Source/KSCrash/llvm/Support/Compiler.h - sourceTree - <group> - - A1D9AB7DC3FBAF55D0D4CBB6B43E2B81 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - KSCrashReportVersion.h - path - Source/KSCrash/Recording/KSCrashReportVersion.h - sourceTree - <group> - - A25BA2D4D9D922A6E316F92313FFFD30 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageVoronoiConsumerFilter.m - path - framework/Source/GPUImageVoronoiConsumerFilter.m - sourceTree - <group> - - A285A6DDE00B05D44F8A61D0DDF1F769 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageSaturationFilter.m - path - framework/Source/GPUImageSaturationFilter.m - sourceTree - <group> - - A2C05A8201DA21305BDE4212AC66175B - - fileRef - 22FD8D1B85EEA67298F0AE0567C9C539 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - A2ECFC4C875986590F85E7159FB34AFC - - fileRef - 5A68C3A26CE16FA260AD1C538453BCAA - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - A3207852EFEC69653F515E3491745B39 - - fileRef - 0A07B03EB1EFAFAAEACB7F2EE13A0F3F - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - A38B80C4BECDB75B5CA3C1C216B3C70B - - fileRef - A10D7595A30700C19758E33CEB0489C6 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - A39C5BEFDD5E8EEE0511E5F981F6B71B - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageVideoCamera.h - path - framework/Source/GPUImageVideoCamera.h - sourceTree - <group> - - A3AEF04474D0EF4AD6FBD4EA0653DE7E - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GLProgram.m - path - framework/Source/GLProgram.m - sourceTree - <group> - - A41745915E05362043C7169D4EA3B9BE - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageAddBlendFilter.h - path - framework/Source/GPUImageAddBlendFilter.h - sourceTree - <group> - - A4776FF79A1BFEE7F0AA41CFCBB403D2 - - fileRef - 8D2204766D1BF9680601A67092F8A1FE - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - A4BFB12186A4B1274CA94830FB572712 - - fileRef - 2083637A2E0B7D8BFC2E8A7DE3946A72 - isa - PBXBuildFile - - A4C8DE890668305CCC425CD9C079702A - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageTwoPassTextureSamplingFilter.m - path - framework/Source/GPUImageTwoPassTextureSamplingFilter.m - sourceTree - <group> - - A4D81C1839F42D131FDC6F9FF7E2F947 - - fileRef - BBF83555B04D96B36A13D146D334A607 - isa - PBXBuildFile - - A4F4C65C2249BB73DCE68C766EB5074D - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageAddBlendFilter.m - path - framework/Source/GPUImageAddBlendFilter.m - sourceTree - <group> - - A5053B89A18AB30839BAEB8DE8EBF5E8 - - fileRef - 53B4DDD1FD1A8833D3FD3B3671CA2CB5 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - A50EF64C55E26CFE79DCD551D9A81A44 - - fileRef - 6AF53F82DC91312D75B05D0555747FB2 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Project - - - - A535BEC52B6E7EC4FC35F26E7597EB10 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - bytes.h - path - Pod/Classes/pili-librtmp/bytes.h - sourceTree - <group> - - A5B0DAC0AC01F58C4F70A9C40207CCA8 - - containerPortal - D41D8CD98F00B204E9800998ECF8427E - isa - PBXContainerItemProxy - proxyType - 1 - remoteGlobalIDString - 7721D993ED2B6C2DEF3331B64CF7FF53 - remoteInfo - KSCrash - - A5B33F246C704CFE931582FB2D1F3617 - - fileRef - 0F24867758516F8B2782BDA9F444865C - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - A5BC3AF9ED13B98282B24B4C45F62F38 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - pili-librtmp-prefix.pch - sourceTree - <group> - - A5CCDF66DF82E33E81E8C254EC0CF99F - - fileRef - 5FF7C99CEB55E5C6934A606BF0AF0E45 - isa - PBXBuildFile - - A6759934E8A5D7F2782667AA1D631DA6 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageOverlayBlendFilter.h - path - framework/Source/GPUImageOverlayBlendFilter.h - sourceTree - <group> - - A6A3DD1ECC832D4C2053B83D511B3312 - - fileRef - 215797708876AE66D4A0187D14F4F1F6 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - A6C872FEC9B4511D4B31CFCAD45F120A - - fileRef - 706CE2321B01AF00AA3DE5568130DE4E - isa - PBXBuildFile - settings - - ATTRIBUTES - - Project - - - - A6EE7A8B2AB31AC5EB693557E785553D - - children - - 10152358E869A0AAB4AE3FB88A0D9CDD - 7C99CDD4D38288FA54323EBD6A66097E - 2083637A2E0B7D8BFC2E8A7DE3946A72 - 982D23487384E2D45C3676CFAAB978EC - CD59A65E16D95E57C6143B69F2C3C889 - 39BA61E5926FD0261D121C768C52925B - 3201021BF3D4BAE755203B71D8492C2B - - isa - PBXGroup - name - Pods-PLCameraStreamingKit - path - Target Support Files/Pods-PLCameraStreamingKit - sourceTree - <group> - - A6F0F5FEB09B7D8FAA25D25C58D6332C - - isa - PBXTargetDependency - name - KSCrash - target - 7721D993ED2B6C2DEF3331B64CF7FF53 - targetProxy - A5B0DAC0AC01F58C4F70A9C40207CCA8 - - A74E902354A21FB2FD63DFD4FD48843B - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageContext.h - path - framework/Source/iOS/GPUImageContext.h - sourceTree - <group> - - A7B41F99AA1AE58974DE1786AB555E76 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - Demangle.h - path - Source/KSCrash/swift/Basic/Demangle.h - sourceTree - <group> - - A7DEA3CCADC2AE7773111DDE2B904215 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageBoxBlurFilter.h - path - framework/Source/GPUImageBoxBlurFilter.h - sourceTree - <group> - - A84AB6BCD4B34A05D1394B790FDF4F5E - - fileRef - 16C0871E7C07D1C24421DD08DD7C7869 - isa - PBXBuildFile - - A8616B363560C564304297A9882B696E - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageWeakPixelInclusionFilter.h - path - framework/Source/GPUImageWeakPixelInclusionFilter.h - sourceTree - <group> - - A86197F4F3C92350321F83ED2B8599DE - - fileRef - E35FE4E1AEEB9A2BAA210459DE58E0D7 - isa - PBXBuildFile - - A89C4F29843A297941AC5A093FFDA399 - - fileRef - 4B7AF404CC2D73D722CA1A05C4F04B7F - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - A92233E258066FB3D7CB7BB346A2A1F3 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageHistogramFilter.h - path - framework/Source/GPUImageHistogramFilter.h - sourceTree - <group> - - A9C590A4278BE22A3944ABBA0499A974 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageXYDerivativeFilter.m - path - framework/Source/GPUImageXYDerivativeFilter.m - sourceTree - <group> - - A9D68732AD0B303B07772DE0E419DBC4 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageLaplacianFilter.m - path - framework/Source/GPUImageLaplacianFilter.m - sourceTree - <group> - - A9FC11F4B5E0F7B39D33F92568CFD4C2 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageMotionDetector.m - path - framework/Source/GPUImageMotionDetector.m - sourceTree - <group> - - AA2B79A4FFF8A0FE08952B465CD39838 - - fileRef - 1678FB10B8DB87EA81A0DC35D86CF0EC - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - AA4A99ED5462E9DCA02207E3DCA158AD - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageGrayscaleFilter.h - path - framework/Source/GPUImageGrayscaleFilter.h - sourceTree - <group> - - AA6561DBCA92FB72E3AC0E928776812C - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageTiltShiftFilter.m - path - framework/Source/GPUImageTiltShiftFilter.m - sourceTree - <group> - - AAE2ACDD7706DEE3EEE2EB0307344DA2 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageJFAVoronoiFilter.m - path - framework/Source/GPUImageJFAVoronoiFilter.m - sourceTree - <group> - - AB31AED3878D2D5BDB149CD3B1C35559 - - fileRef - B07E1C97D5DB98AA9D01AA833BF9ED08 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - AB853E63175CC63F2017C6EB3E6C74FE - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageColorBlendFilter.m - path - framework/Source/GPUImageColorBlendFilter.m - sourceTree - <group> - - ABA0E875B25C23893F3D8951ECBB8A95 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageJFAVoronoiFilter.h - path - framework/Source/GPUImageJFAVoronoiFilter.h - sourceTree - <group> - - AC10457DD3A122C0E973AEF17388820C - - fileRef - 9026762F3B53DCB843AB06B14B05DF00 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - AD0378DD0D9BAF74CCA8138241F48472 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageOutput.m - path - framework/Source/GPUImageOutput.m - sourceTree - <group> - - AD1C29AFB321F9B6360864083EB98698 - - fileRef - 5A02D625BDBF5BA885DA14BFCBF45630 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - AD73ABBD47CB850FB9F036FC1D84DF55 - - fileRef - B9F6F1E9F20DF392C01284D38176E692 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - ADD6DA84F2B259794192E8E4082304AC - - fileRef - A6759934E8A5D7F2782667AA1D631DA6 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - AE03B11A67332C072FB78F1FC6D79C81 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageSoftEleganceFilter.m - path - framework/Source/GPUImageSoftEleganceFilter.m - sourceTree - <group> - - AE04BCAF5B6C30B4545FF847AC8C7EFA - - fileRef - AE90EA2F82C31682262B9984EA3C4A8A - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - AE90EA2F82C31682262B9984EA3C4A8A - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - KSCrashReportSinkEMail.h - path - Source/KSCrash/Reporting/Sinks/KSCrashReportSinkEMail.h - sourceTree - <group> - - AEBB84925131760C7C90553800A45F5B - - fileRef - 75C335E787390CF7B50C58509C927EAC - isa - PBXBuildFile - - AEDE1E49581E0BA348F6E82F7F3E1802 - - fileRef - 3E469ED7212AA53CF315D71AC8B13CCD - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - AF622D3DCDE7A624463CA806FFC90AA8 - - fileRef - 401A9B227A5CEEC7590D42C50C81A194 - isa - PBXBuildFile - - AF7B75E627CF3DC8F909ABE1EA4ACA20 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageHardLightBlendFilter.h - path - framework/Source/GPUImageHardLightBlendFilter.h - sourceTree - <group> - - AF847C4042334D259EF41926FB435CD1 - - buildActionMask - 2147483647 - files - - 6BEE9C075C04972E09B9923B11E3643D - D4F1B3CF20819AF5C23B2482B7C41188 - EA3033230C2BF9D1C97B0D98FBD9F4AF - - isa - PBXFrameworksBuildPhase - runOnlyForDeploymentPostprocessing - 0 - - B07C000F2ED16BF9344EB9622AAD7EF1 - - fileRef - 981FE33008995082E35FF48421F0EBC6 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - B07E1C97D5DB98AA9D01AA833BF9ED08 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageContrastFilter.m - path - framework/Source/GPUImageContrastFilter.m - sourceTree - <group> - - B0B5F90B3EB5C44789E157210E00B8D0 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageSingleComponentGaussianBlurFilter.m - path - framework/Source/GPUImageSingleComponentGaussianBlurFilter.m - sourceTree - <group> - - B0D2688C6D2ADC89BDD43CA7B0095EDA - - explicitFileType - archive.ar - includeInIndex - 0 - isa - PBXFileReference - name - libPods-PLCameraStreamingKit.a - path - libPods-PLCameraStreamingKit.a - sourceTree - BUILT_PRODUCTS_DIR - - B0FA9BB5A07A2A733EB63A0003AE7114 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageAverageLuminanceThresholdFilter.h - path - framework/Source/GPUImageAverageLuminanceThresholdFilter.h - sourceTree - <group> - - B1033E700B25D3F9FF6859E92D433876 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageiOSBlurFilter.h - path - framework/Source/GPUImageiOSBlurFilter.h - sourceTree - <group> - - B10913FBAEAD125838A2D805A44E259F - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - QNDnsManager.m - path - HappyDNS/Common/QNDnsManager.m - sourceTree - <group> - - B18CD9E6901F06D33A5A9901DAF83941 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageThresholdEdgeDetectionFilter.m - path - framework/Source/GPUImageThresholdEdgeDetectionFilter.m - sourceTree - <group> - - B1B526431CAD28D181A113006CD48583 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - PLStreamingSession.h - path - Pod/Library/include/PLStreamingKit/PLStreamingSession.h - sourceTree - <group> - - B1CAEFAF13EBD518C358BE027AC73C40 - - fileRef - 52736D938DAEA1BF8C0D888ED9009776 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - B21F15F22C29175E25172312B8C98D81 - - fileRef - 33ADAB1A2193E60A8BFD8AF5B7ADDBA8 - isa - PBXBuildFile - - B250BEAFFCA727EA6C1A9BB33028ACED - - fileRef - 1A609B09FA743E9627B6E0DD4E8BB577 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - B2A2E310465D4F3953C5FA07C70C98B4 - - fileRef - 1A276443E028FF3D8802C84CAD23817C - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - B2CFE3BE8386B2B635A9CBCA2E6FCD6C - - fileRef - 82D08EC2DE139C4C99E7F3410C84E1AA - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - B2FD34655D08D8A2FBF0267E2BECCD09 - - fileRef - 49BB4FBCD53E57F5F8AEC133DF7BF341 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - B30A047D0F0B2813E319DF1586B9E0B4 - - children - - 330225816CCEEE73B873C7A87DDB4E0A - 303F57A5752139ACF19E7FAD9F4F22B7 - - isa - PBXGroup - name - GZip - sourceTree - <group> - - B30E0F68D1795A3CBDDC92D416C47F6F - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageDirectionalSobelEdgeDetectionFilter.h - path - framework/Source/GPUImageDirectionalSobelEdgeDetectionFilter.h - sourceTree - <group> - - B37F0F91F85060E28F1DAAB522DC7EC1 - - buildSettings - - ALWAYS_SEARCH_USER_PATHS - NO - CLANG_CXX_LANGUAGE_STANDARD - gnu++0x - CLANG_CXX_LIBRARY - libc++ - CLANG_ENABLE_MODULES - YES - CLANG_ENABLE_OBJC_ARC - YES - CLANG_WARN_BOOL_CONVERSION - YES - CLANG_WARN_CONSTANT_CONVERSION - YES - CLANG_WARN_DIRECT_OBJC_ISA_USAGE - YES - CLANG_WARN_EMPTY_BODY - YES - CLANG_WARN_ENUM_CONVERSION - YES - CLANG_WARN_INT_CONVERSION - YES - CLANG_WARN_OBJC_ROOT_CLASS - YES - CLANG_WARN_UNREACHABLE_CODE - YES - CLANG_WARN__DUPLICATE_METHOD_MATCH - YES - COPY_PHASE_STRIP - NO - GCC_C_LANGUAGE_STANDARD - gnu99 - GCC_DYNAMIC_NO_PIC - NO - GCC_OPTIMIZATION_LEVEL - 0 - GCC_PREPROCESSOR_DEFINITIONS - - DEBUG=1 - $(inherited) - - GCC_SYMBOLS_PRIVATE_EXTERN - NO - GCC_WARN_64_TO_32_BIT_CONVERSION - YES - GCC_WARN_ABOUT_RETURN_TYPE - YES - GCC_WARN_UNDECLARED_SELECTOR - YES - GCC_WARN_UNINITIALIZED_AUTOS - YES - GCC_WARN_UNUSED_FUNCTION - YES - GCC_WARN_UNUSED_VARIABLE - YES - IPHONEOS_DEPLOYMENT_TARGET - 7.0 - ONLY_ACTIVE_ARCH - YES - STRIP_INSTALLED_PRODUCT - NO - SYMROOT - ${SRCROOT}/../build - - isa - XCBuildConfiguration - name - Debug - - B3C05379FD4C1FC0FB63CEF6CF90AA18 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImagePolarPixellateFilter.h - path - framework/Source/GPUImagePolarPixellateFilter.h - sourceTree - <group> - - B3C1BB8A03608886E11ED854206798C9 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageMissEtikateFilter.h - path - framework/Source/GPUImageMissEtikateFilter.h - sourceTree - <group> - - B3D1835DAC26CE32DA3AE465DE9B99BE - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageFalseColorFilter.m - path - framework/Source/GPUImageFalseColorFilter.m - sourceTree - <group> - - B41F6F618A8B7B0D673DB88EAA6C1EA6 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - KSObjC.h - path - Source/KSCrash/Recording/Tools/KSObjC.h - sourceTree - <group> - - B44345CCD7BCE659FB5874DF2B110F36 - - fileRef - DC6D037E2D422A242F54831415DE2E58 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - B484717FD06021EEBD37796F17B108EB - - fileRef - 6A088B65586B4E73AA15D66780434385 - isa - PBXBuildFile - - B4A252B184C41DB8B5AAF8579F9EF0F1 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - KSCrash-dummy.m - sourceTree - <group> - - B4E29202508B5ECA52C681504261237E - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageSingleComponentGaussianBlurFilter.h - path - framework/Source/GPUImageSingleComponentGaussianBlurFilter.h - sourceTree - <group> - - B4E911D5D57BC1C3B04CCE5251F4BE46 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageBrightnessFilter.h - path - framework/Source/GPUImageBrightnessFilter.h - sourceTree - <group> - - B4F1EB1C934879AE2BABA5930205BBFE - - fileRef - A39C5BEFDD5E8EEE0511E5F981F6B71B - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - B504DAC60CD3D4FD20D155FCBBB26BA7 - - fileRef - 31D79CB8E5F1B9E05CE531EE378D886C - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - B519F19CB518AB88B5374FD5AB996D8D - - fileRef - B30E0F68D1795A3CBDDC92D416C47F6F - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - B546249124A687E93AD774450E357DAE - - fileRef - 88780FFF540DE8E6563FAF16EFA82250 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - B5901B5F6E5FACFAD00C9CED1E4AE49C - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageExposureFilter.m - path - framework/Source/GPUImageExposureFilter.m - sourceTree - <group> - - B5A3EE334E556A21E198B16552D6B9AF - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - amf.h - path - Pod/Classes/pili-librtmp/amf.h - sourceTree - <group> - - B5A9717B3F7C395AE0FDE9BC10492D10 - - fileRef - 2A441D102C3F72AC5C5FDD2D32B1EE78 - isa - PBXBuildFile - - B5AFCFD6E106F74936B27A963CC24A38 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageHighlightShadowFilter.h - path - framework/Source/GPUImageHighlightShadowFilter.h - sourceTree - <group> - - B5B81600E89D0984502DD7DAD21B4A9D - - includeInIndex - 1 - isa - PBXFileReference - name - lookup_soft_elegance_2.png - path - framework/Resources/lookup_soft_elegance_2.png - sourceTree - <group> - - B5BCABFB6D33093693FD4E2579F62A61 - - fileRef - 26D312363BA73C26A62AB8FEF82F2C64 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - B5D95E56939ACD41F6372FB9940F7F06 - - fileRef - 303F57A5752139ACF19E7FAD9F4F22B7 - isa - PBXBuildFile - - B6051A06EA74E0039E6E458CFA586D9E - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageGlassSphereFilter.h - path - framework/Source/GPUImageGlassSphereFilter.h - sourceTree - <group> - - B60DED9F5100F02BDE3538A41658E5D5 - - fileRef - 4029E258831C21E188134202E44233A5 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - B62C7FAEC2D3A458A2A44995F0C097F2 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageThreeInputFilter.m - path - framework/Source/GPUImageThreeInputFilter.m - sourceTree - <group> - - B687C907909C6BA7F1D143CE0BE90ED0 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - PLSourceAccessProtocol.h - sourceTree - <group> - - B6A0CBD93D292CC7080DE2E7103EF236 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - HappyDNS.h - path - HappyDNS/HappyDNS.h - sourceTree - <group> - - B6C59CA9660141DD622DC033F05E9EA1 - - fileRef - EF58ACA17008518E965C99469DDBB999 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - B724143D653C63BB3BD09CC823836D4E - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageCropFilter.m - path - framework/Source/GPUImageCropFilter.m - sourceTree - <group> - - B7254D8F85C23ECC56952EC5C1873D6D - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - KSCrashState.h - path - Source/KSCrash/Recording/KSCrashState.h - sourceTree - <group> - - B7404204C8ED44BB14D3F5E811B9CFD3 - - buildActionMask - 2147483647 - files - - 090F80C7722BF9B1547D4C1508FCC9A5 - 09A388C2F06C538A695030269E5724C5 - FAF712B434A8E371E00215A492991E63 - AD73ABBD47CB850FB9F036FC1D84DF55 - 25F037BF9D82014B39AEB04A8CE0F9B5 - 90FCFDAC036253E55C999133CB2A3F44 - 6B04A7D89B0E6047B13C2CF2843B5020 - 4B767CE5C0A4EAC8B3997E9EA8549DA3 - 051C24A0A8CF6271BD0343C068741AC4 - 4234B3AFF291FF98EF5472201E5EF7CE - 6A5D9BF654FCCEE5462A287C67FD5CF2 - C0FBC677A244AD6B919AFA5D323AC305 - 94AF77FD05887BD2FC2580E98C32EDA0 - 864A2EA46B466EB346BBEF545F6D21F2 - 66F5A0BE1857A4F55C1F01C6A8A91391 - 789430B0BEDB3F2E069095B29A8F26C0 - - isa - PBXHeadersBuildPhase - runOnlyForDeploymentPostprocessing - 0 - - B74E6A82A202F549B8AB4AB0597A034F - - includeInIndex - 1 - isa - PBXFileReference - name - KSCrashState.c + KSCrashReportFilterAppleFmt.m path - Source/KSCrash/Recording/KSCrashState.c + Source/KSCrash/Reporting/Filters/KSCrashReportFilterAppleFmt.m sourceTree <group> - B814AB108E3DB51D7C04F0C3328957AD + 70234DF393C0F79335F5532A42706B72 + + containerPortal + D41D8CD98F00B204E9800998ECF8427E + isa + PBXContainerItemProxy + proxyType + 1 + remoteGlobalIDString + 2BAC7CF49C86172B8F10A9ADFC08EF59 + remoteInfo + pili-librtmp + + 70981A9ADEDF4A98F5DE255E0570525E fileRef - 4FD2CB2B28935FA9FA1CB285AFE47518 + C852AF4EFDBA90A69AF4085F493B98EC isa PBXBuildFile - B8354383D009DEFD5B52A97AD807A0BC + 74ADA6E8FA320A0C0D7699B6DEDDFA09 includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.h + sourcecode.c.objc name - GPUImage.h + KSReachabilityKSCrash.m path - framework/Source/GPUImage.h + Source/KSCrash/Reporting/Tools/KSReachabilityKSCrash.m sourceTree <group> - B84F9B9933525B36D7008008A2BB3529 + 74B4FDB0C6FDE18EDB0D33F627F191B6 fileRef - 5EEE7A68B87CDA68EB310714202CE862 + E53DC191CCAE24046FB52C14C2E30EB0 isa PBXBuildFile settings - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 + ATTRIBUTES + + Project + - B8B4EC9246AA6F0A31CD3E77ACA98462 - - fileRef - E692B5B09321366F58738DF9E36A0964 - isa - PBXBuildFile - - B8D58314E6BFE4123D76F2CE2C5145B7 + 758B9FFF730211B24564B38D7738721D - fileRef - 5773C6E3791CA0B5EC470A6A16132A73 + includeInIndex + 1 isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - + PBXFileReference + name + KSMach_x86_32.c + path + Source/KSCrash/Recording/Tools/KSMach_x86_32.c + sourceTree + <group> - B8D75E1CC87C8CF44A0DC26C69A4D221 + 759E9BACEF9E002F58DBAD4DB5A2FC3B children - E65C788C69CD95534E7A168343B9B1C7 - 6A088B65586B4E73AA15D66780434385 + 46171E7F8252F3147BB46A9CB3190260 isa PBXGroup name - Sets + Frameworks sourceTree <group> - B8ED0B47606233B06D40C67B229579BB + 7616ED9D684A120FE1D8AF4E569ACC7C - fileRef - 88F8C110FEEB0F52D054504AFA72C85C + buildConfigurations + + B70A4FAA700AECADAE2D554EB9058951 + 962B6243BE3AAC24060BDB520E1AFBFF + + defaultConfigurationIsVisible + 0 + defaultConfigurationName + Release isa - PBXBuildFile + XCConfigurationList - B99EA5DB4530B2E53ADD1DDC655F3B90 + 7665187E91CBCA09063EFE48E666F5AE includeInIndex 1 @@ -13513,13 +3565,13 @@ lastKnownFileType sourcecode.c.objc name - QNHosts.m + KSCrashReportFilterAlert.m path - HappyDNS/Local/QNHosts.m + Source/KSCrash/Reporting/Filters/KSCrashReportFilterAlert.m sourceTree <group> - B9F6F1E9F20DF392C01284D38176E692 + 76EE931BE8DC6039011FF32C5448E603 includeInIndex 1 @@ -13528,79 +3580,16 @@ lastKnownFileType sourcecode.c.h name - QNDnspodEnterprise.h + DemangleNodes.h path - HappyDNS/Http/QNDnspodEnterprise.h + Source/KSCrash/swift/Basic/DemangleNodes.h sourceTree <group> - BA25E4D118C1CE955285F4BAC647D73A - - buildActionMask - 2147483647 - files - - A4BFB12186A4B1274CA94830FB572712 - - isa - PBXSourcesBuildPhase - runOnlyForDeploymentPostprocessing - 0 - - BA6428E9F66FD5A23C0A2E06ED26CD2F - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - text - name - Podfile - path - ../Podfile - sourceTree - SOURCE_ROOT - xcLanguageSpecificationIdentifier - xcode.lang.ruby - - BAD7C381DFF9B9B603E029F245C84615 + 76F8A17901F86C1B3FDF3429552183D5 fileRef - 881178C7475ACBA225025BC031485EB3 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - BAE6C0A6544F8F4F7CAEC2FA774C4287 - - fileRef - 02FBC8C109FD847E789F54C4B5629861 - isa - PBXBuildFile - - BAF4F0536F6F838C6A41341B19B8F39F - - fileRef - 387FA0EE4F6697FCCF4B7FA88126C2CF - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - BAFD651E1BB5AD426DD2FA2DDDBCA52E - - fileRef - 8AABAC62132AC3FFAD3C2F37CBCBEA60 + 6631D34394C8ED41F013A7BBE88BEB8A isa PBXBuildFile settings @@ -13611,177 +3600,132 @@ - BB1230F1B1613D374AEAF15BD7CD9954 - - fileRef - CCFEEF71B2973B2FACB9369616B186DE - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - BB16373261F0F78FD6425740CCDBF8B0 + 7721D993ED2B6C2DEF3331B64CF7FF53 - fileRef - 939F99D769032AAEC4111FA9575B4B9F + buildConfigurationList + E76A355B4BFDFD3A266094D085BE5B86 + buildPhases + + 47FD504D03B81A75763C96AD06A2B9AA + AF847C4042334D259EF41926FB435CD1 + CA1A032B0E87DEAFA1C720698C71900E + + buildRules + + dependencies + isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - + PBXNativeTarget + name + KSCrash + productName + KSCrash + productReference + 4E7CE311BE5327A45D89151C067574A6 + productType + com.apple.product-type.library.static - BB76D5471E1D0411B7C6F70C23D152D2 + 775A08A0B5F16C2DF14AF8A7EAAF9304 includeInIndex 1 isa PBXFileReference - lastKnownFileType - sourcecode.c.objc name - GPUImageLocalBinaryPatternFilter.m + KSBacktrace.c path - framework/Source/GPUImageLocalBinaryPatternFilter.m + Source/KSCrash/Recording/Tools/KSBacktrace.c sourceTree <group> - BB8E449ABFD8B0D29ABAAE57CD375384 - - fileRef - 1DA27B908CA2B43C391117CA48D6AE78 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - BBCFB117CEC7DD1961FF535FD6D371DC + 78448C101AF261CA4E2E5A8347068098 - includeInIndex - 1 + children + + 0733836CAF3126A8A94940ECF8D54F5C + FC018833295F80674BA5CB7E0E7EF75D + 28DF7EB18C5D7B550694B54247431A29 + A9234335929E14519911829A090C6989 + CDC5842FC0DB3C0D21F03287CEC277A7 + isa - PBXFileReference - lastKnownFileType - sourcecode.c.h + PBXGroup name - QNResolvUtil.h + KSCrash path - HappyDNS/Local/QNResolvUtil.h + KSCrash sourceTree <group> - BBE9EAE7D5813F7762C443D0D5C6DAD7 - - fileRef - C4709F60F1DDB68D3FF57615522B4077 - isa - PBXBuildFile - - BBF83555B04D96B36A13D146D334A607 + 78FB1ED04EA8902F6B0966C34E575CCC + includeInIndex + 1 isa PBXFileReference lastKnownFileType - wrapper.framework + sourcecode.c.objc name - CoreMedia.framework + KSCrashReportFilterGZip.m path - Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/CoreMedia.framework + Source/KSCrash/Reporting/Filters/KSCrashReportFilterGZip.m sourceTree - DEVELOPER_DIR - - BC1F509C7EA7D75F2CA7DA0682C7006C - - fileRef - 6475E17CF508A4B15312F63ADFFFAB69 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - BC588A7555702F0E01420DDA7D784BDC - - fileRef - 9DCA971563C3FD47B2B4C12BC802EE55 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - BC94B9441E9D2BA4FD86801CE168E757 - - fileRef - A4C8DE890668305CCC425CD9C079702A - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - + <group> - BD895D030B1E94116216074C6D439683 + 7902649584F64EA5A1335AE65645D9E1 fileRef - A3AEF04474D0EF4AD6FBD4EA0653DE7E + 627CFA84EA1FB4397AE0C5FF046B58F0 isa PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - BDA5C8818E131E67F8FCC8D002154EC5 + 7922266915634D745A22500FABDACB46 includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.h + sourcecode.c.objc name - GPUImageUnsharpMaskFilter.h + KSCrash.m path - framework/Source/GPUImageUnsharpMaskFilter.h + Source/KSCrash/Recording/KSCrash.m sourceTree <group> - BE4B9D5E89EA6DE98E10597CC38064EE + 79386F6F0DAF715D018A6685423A0BE3 - fileRef - 8554ACFF2BDC54A3658C65D1B3649601 + buildActionMask + 2147483647 + files + + C4020B78AF4623E4E0EE8AB67237E0A4 + AA256E56BF90E33FD0C4EE90B0DBB93B + 7AC02AC23D3A24F57937072BF9CDD262 + 5677698E34A33FC193C2043620443E09 + 56E4ED59678EA36A2D215331E9BEFE2D + C25859BD8824F2D0932A7AC9D5C2EB4A + 5DC18321CDA99413DD98243EE63A0DD6 + C1730FE58756342D4C9DA2C2434D7A79 + 5E74345EC178C674D4D7E09036076075 + 969D9D9491ADED77D177032394F02D57 + BDFB8DC3F2C2A2066ECF92F2D0A50704 + 55B03707239576D5F3391B915168323F + 0B1C8B124200827A242E1A2D627361D4 + 0ED8E8B6FD129D1F3030ACCEC61865FB + E75BFE765B6BE19645D619A0AD087DBF + B950E3066023E46649F8702D3A9FB173 + isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - + PBXSourcesBuildPhase + runOnlyForDeploymentPostprocessing + 0 - BE67171473D6DAD09D361975E0C990E5 + 795BB14AD47981246892AA62DD59FA49 fileRef - A535BEC52B6E7EC4FC35F26E7597EB10 + FFF2269EF3DB19A1B0483A5C4A544A89 isa PBXBuildFile settings @@ -13792,7 +3736,7 @@ - BE8472A5EFDEA2721849BC76CE3EE3DB + 79898051B5D1324F8403D689F819CE28 includeInIndex 1 @@ -13801,126 +3745,115 @@ lastKnownFileType sourcecode.c.objc name - GPUImageTextureInput.m + KSCrashReportSinkEMail.m path - framework/Source/GPUImageTextureInput.m + Source/KSCrash/Reporting/Sinks/KSCrashReportSinkEMail.m sourceTree <group> - BEC6C7377BFF43A0C0EAF6D966EB7506 + 7AC02AC23D3A24F57937072BF9CDD262 fileRef - 9A02118A8CADA80659D54ABE276F8470 + 67C17CE9EDE2F2FF066F48845CFF418F isa PBXBuildFile - settings - - ATTRIBUTES - - Project - - - BED5D1815B3AD19DE87CCDB505B4284E + 7AF0D8D7E108370DC64100A59EE4D523 includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.h + sourcecode.c.objc name - GPUImageRGBClosingFilter.h + QNResolvUtil.m path - framework/Source/GPUImageRGBClosingFilter.h + HappyDNS/Local/QNResolvUtil.m sourceTree <group> - BF3FA9A5BA290F8C9A1383279E0603E5 + 7C99CDD4D38288FA54323EBD6A66097E - fileRef - 2834780AD10C7054DFF06F2C831C7437 + includeInIndex + 1 isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - + PBXFileReference + lastKnownFileType + text.plist.xml + path + Pods-PLCameraStreamingKit-acknowledgements.plist + sourceTree + <group> - BF42D47BA97EB7F1B422C919BB9A8CB2 + 7CC1EDBCEDFE8AD3EC747B3475DEF5F9 fileRef - B5901B5F6E5FACFAD00C9CED1E4AE49C + F8B08201AC3EFC1AF8EED9DD18CE89CE isa PBXBuildFile settings - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 + ATTRIBUTES + + Public + - BF81C1F41F880FD0B775A30678E54325 + 7DB346D0F39D3F0E887471402A8071AB + + children + + BA6428E9F66FD5A23C0A2E06ED26CD2F + F1D67E26F955C71D989E0FE8B96FD698 + 122DA2E5084A4393C29BE363C764795C + 6453BC9D66D1660C6225175E75077D09 + 157C3FFD507947EA2FAF054BE9A32E56 + 5AF2F88648B6F77C118B236B969EE266 + + isa + PBXGroup + sourceTree + <group> + + 7DCE78487C34BF62A3E9AC45B9456067 fileRef - 88857831A02772260D9531ACB472CD84 + CCAE8545268600AACBE94C00AB13B618 isa PBXBuildFile - BFEEBB996B03B49960AE0E15055B58F9 + 7E6CA6F06E2E937025AAD8F9AA49DD11 includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.objc + sourcecode.c.h name - GPUImageHueBlendFilter.m + KSCrashInstallation.h path - framework/Source/GPUImageHueBlendFilter.m + Source/KSCrash/Installations/KSCrashInstallation.h sourceTree <group> - C0187336298930E1072F129FAA643A3A + 7E8B64BFDFF40F6CFD3F42C2D6A694D8 includeInIndex 1 isa PBXFileReference + lastKnownFileType + sourcecode.c.h name - KSCrashSentry.c + KSFileUtils.h path - Source/KSCrash/Recording/Sentry/KSCrashSentry.c + Source/KSCrash/Recording/Tools/KSFileUtils.h sourceTree <group> - C06F84D262039EEEA8DD3DDECD8E30E6 - - fileRef - 9DCAF19C2A614D03BD882939966A33ED - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - C0A698F697D624F2A28D5948150504A2 - - isa - PBXTargetDependency - name - HappyDNS - target - 0DC8BCC337CBE1F795C675E87C3D1B3E - targetProxy - E37A7949CE0C57F40BBA10B6A1A1B672 - - C0B0048E0376557330174CB35A447187 + 7EB921AAC9BD160B112ED8AAFA817F12 includeInIndex 1 @@ -13929,13 +3862,13 @@ lastKnownFileType sourcecode.c.h name - GPUImageHazeFilter.h + dhgroups.h path - framework/Source/GPUImageHazeFilter.h + Pod/Classes/pili-librtmp/dhgroups.h sourceTree <group> - C0F16BBAF381672AA13CF240ABDD8366 + 7F7FA55C4CB12E917C0DF52C7BA7330D includeInIndex 1 @@ -13944,44 +3877,44 @@ lastKnownFileType sourcecode.c.h name - KSCrashReportFilter.h + KSCrashInstallation+Alert.h path - Source/KSCrash/Reporting/Filters/KSCrashReportFilter.h + Source/KSCrash/Installations/KSCrashInstallation+Alert.h sourceTree <group> - C0FBC677A244AD6B919AFA5D323AC305 + 806D76BF5FCACB89D3D9A8F02D0B5072 fileRef - 3F5C2DE2B654D3E10F7AB470559B282B + 064972A492CC18F33E91E826AAA8FE9D isa PBXBuildFile settings ATTRIBUTES - Public + Project - C1160C73DB5C27A943D630066BFA9E69 + 80E0969F123168A6FE113378C6E5AD4B fileRef - ECDE17CB25E8171A45BDD99A8F109654 + 3B2CA186D75D0182B5A04ABC8CC02AE1 isa PBXBuildFile settings ATTRIBUTES - Public + Project - C1319E426F19F8CBE48A7FE04A6F6B72 + 810C982F43430F055E482D839B656DC1 fileRef - 8AD5EB5086845A2030BA40198FFE8EBD + 3B5A64EDE47B37741500AE4957ECDAAE isa PBXBuildFile settings @@ -13992,25 +3925,25 @@ - C17863972058A6C2638A95730FC8BA4F + 8159CE7483F14271FA034D1CA307D2FB includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.objc + archive.ar name - KSCrashCallCompletion.m + libPLCameraStreamingKit.a path - Source/KSCrash/Recording/Tools/KSCrashCallCompletion.m + Pod/Library/lib/libPLCameraStreamingKit.a sourceTree <group> - C22CBF65410185A97D139AF06B277E09 + 81D9621463A7404DAC77839259365800 fileRef - 36ADC0E37BD5BCCF327DC8963E1EA59F + AFCE7D3E58BF73B38A50C154F464DF13 isa PBXBuildFile settings @@ -14021,79 +3954,63 @@ - C232CDD9BE229AB4789D71C606149243 + 81EE3723DE592727B72F15663AD30A05 includeInIndex 1 isa PBXFileReference - lastKnownFileType - sourcecode.c.objc name - NSError+SimpleConstructor.m + KSString.c path - Source/KSCrash/Recording/Tools/NSError+SimpleConstructor.m + Source/KSCrash/Recording/Tools/KSString.c sourceTree <group> - C2997D3A3C5A1335454780269CED5C64 + 81F3D0BA797A3AE7C0679260998CF4D8 fileRef - DCCF298E9F2DD0441A356BA5BE07C308 + 50D8645A0B547C3A6511E6CAEC652EA4 isa PBXBuildFile settings ATTRIBUTES - Project + Public - C325DE2CA13A7E5A7C373ABE220B5AB7 + 825C3031BB628FAE2BBD1412F6630EC1 includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.h + sourcecode.c.objc name - GPUImageDarkenBlendFilter.h + NSString+URLEncode.m path - framework/Source/GPUImageDarkenBlendFilter.h + Source/KSCrash/Reporting/Tools/NSString+URLEncode.m sourceTree <group> - C3273CF37576883380788A8E08CCAAB0 + 82B1F7DECBD0EDFD842E1D5B866CE378 fileRef - 48DD8A676DC276AD265D31B122874D9A + 5BA590791E0404AA6ED1C969693381DF isa PBXBuildFile settings ATTRIBUTES - Public + Project - C34C81260ADCECB2185D0A35065B5681 - - children - - 1F6C934BB152E2140627865D5D9D2573 - 8420B6E953B63C63DD209BEC3972F293 - - isa - PBXGroup - name - Basic - sourceTree - <group> - - C3C2D026BEA4EFA755B9D564519F11A4 + 836E10B07BF651A7D7F0C25B5C127060 includeInIndex 1 @@ -14102,13 +4019,13 @@ lastKnownFileType sourcecode.c.h name - KSCrashReportSinkStandard.h + Malloc.h path - Source/KSCrash/Reporting/Sinks/KSCrashReportSinkStandard.h + Source/KSCrash/swift/Basic/Malloc.h sourceTree <group> - C3C6623097186206DCC2B0B8758ECEF9 + 84162111E849343F0C96A5FE90E420F4 includeInIndex 1 @@ -14117,112 +4034,140 @@ lastKnownFileType sourcecode.c.h name - GPUImageColorMatrixFilter.h + NSMutableData+AppendUTF8.h path - framework/Source/GPUImageColorMatrixFilter.h + Source/KSCrash/Reporting/Tools/NSMutableData+AppendUTF8.h sourceTree <group> - C4709F60F1DDB68D3FF57615522B4077 + 8548BDF5160F9597031EFEFD46935FF1 + + fileRef + 7F7FA55C4CB12E917C0DF52C7BA7330D + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 857A37F970203842C373BD8CE271D9B8 includeInIndex 1 isa PBXFileReference + lastKnownFileType + sourcecode.c.h name - KSSignalInfo.c + KSCrashReportFilterAlert.h path - Source/KSCrash/Recording/Tools/KSSignalInfo.c + Source/KSCrash/Reporting/Filters/KSCrashReportFilterAlert.h sourceTree <group> - C4A764A117E9C166FEF5A6739B3C0977 - - fileRef - B4A252B184C41DB8B5AAF8579F9EF0F1 - isa - PBXBuildFile - - C507A50864B7F2649D337D3B6FC3DD73 + 85F70911B8D8C22F234BBBD8D2012AA5 fileRef - 14B7CFD33D9D8A4C83D8AD7EEBB209EF + D9F37C64F797446762E05661D45093B3 isa PBXBuildFile settings ATTRIBUTES - Public + Project - C5311B346ED3865015653FDCA4CFE075 + 86FE79EC69D9F6C1ACD57641E0069D1E fileRef - 2F08C793A543FC969986B2FFA2C59C57 + C47338DC04F7F181A7C0D25286F0AC25 isa PBXBuildFile + settings + + ATTRIBUTES + + Project + + - C57C689128CAADC8FBC2853A107818DA + 8823B9C91D9A4B482685EEE106F8B97A fileRef - 9391E907BB55DA1F1B294672BE6BE99D + 3C98ABC2D561BF92CD06C8DAAF5A8E4C isa PBXBuildFile - C5E52BC32985882768733B8D881C50D1 + 8B7B75BDDA8FB5F466A5CB10D5811A26 fileRef - A285A6DDE00B05D44F8A61D0DDF1F769 + 633DFB668B08EA7DF044936512533D20 isa PBXBuildFile settings - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 + ATTRIBUTES + + Public + - C61801EB75C001B6F55EC61E6424925B - - isa - PBXFileReference - lastKnownFileType - wrapper.framework - name - SystemConfiguration.framework - path - Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/SystemConfiguration.framework - sourceTree - DEVELOPER_DIR - - C67BAE8902A7A6EF8CB13A11A404EC65 + 8C0AA8199DC44FAE432D719510E02586 fileRef - FB50417176E7ADE3DA3D17065ACE250A + 624C928C37AE0C69332B114FC679712B isa PBXBuildFile settings - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 + ATTRIBUTES + + Public + - C69A821CED2A5685603E2C61ECAE9989 + 8C5FB8F427702BA76976A32988D9625D fileRef - E109D7867A7BDB60AF686CEE2619B0AD + EA8FF5B01BA6A155DE2616E718B491C5 isa PBXBuildFile settings ATTRIBUTES - Project + Public - C6BD2820BE950938C50BC09BC6C3CB6C + 8CA2B5D3CB4C1B74481BE30CCE356944 + + children + + 4077F158CE58DF9F55136258BF3E32BC + 3C4CE671C45A48E7752F75AB005E8275 + 3B34E9C1892FE5E53753BFA31004CA41 + E676732106E72170045D866DB7649124 + 0EE979F4EC2C10F0D33B61C9640D59B2 + AA750D948CCD51E875B53E33546E5241 + 578B3AF4962BC50E096A2D6E6791FA84 + 61649932FAA8298AC6D88A9592DDB863 + 09C053B8102981FC2B09BBF1F21AA98B + + isa + PBXGroup + name + Filters + sourceTree + <group> + + 8CF7DF6F8D051D148F2822DDC8854AF2 includeInIndex 1 @@ -14231,16 +4176,31 @@ lastKnownFileType sourcecode.c.h name - KSSysCtl.h + KSMach.h path - Source/KSCrash/Recording/Tools/KSSysCtl.h + Source/KSCrash/Recording/Tools/KSMach.h sourceTree <group> - C6C05B79D9A0165A7C919D4CD6E2E2E3 + 8D45F2A0E5969B0606B6258A15EB38F2 + + children + + 583E9C7A7859693C883DCBE9D2BE2277 + + isa + PBXGroup + name + Pod + path + Pod + sourceTree + <group> + + 8D4B0E83F507CA646E16AECAE63AB08E fileRef - 17156E8B9DD0C83C197A04D8D54EABA9 + 125A369C6EAACFA85A94047A14C5C77B isa PBXBuildFile settings @@ -14251,36 +4211,36 @@ - C6C60B1E6BBF6D0529C2A58C225C8610 + 8D8FED742A729A6091B2D43D4619929B fileRef - 10B536A379BDD680470BD5B3A703F4DD + C68874D22FE9CD4F26DB4801888B847C + isa + PBXBuildFile + + 8E246454AF23117CC3E4FB02DBD592A8 + + fileRef + 48DECC4AF9AB2E28F8BBC691A591474A isa PBXBuildFile - settings - - ATTRIBUTES - - Public - - - C76D48A5390C630D21014306D9B36D2C + 8EB793DF7E346163F18E268487D55737 includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.objc + sourcecode.c.h name - KSHTTPRequestSender.m + KSCrashDoctor.h path - Source/KSCrash/Reporting/Tools/KSHTTPRequestSender.m + Source/KSCrash/Recording/KSCrashDoctor.h sourceTree <group> - C77C1E7B3CC3CCFB2106A350971272D6 + 8F433BC4B6B27E2678EA5E39F83ADC54 includeInIndex 1 @@ -14289,28 +4249,37 @@ lastKnownFileType sourcecode.c.h name - GPUImagePixellateFilter.h + KSString.h path - framework/Source/GPUImagePixellateFilter.h + Source/KSCrash/Recording/Tools/KSString.h sourceTree <group> - C88197D03E280C52AEA4C5022EB0FB82 + 90028EC691399E7E3B5FD391F5E02189 + + fileRef + 758B9FFF730211B24564B38D7738721D + isa + PBXBuildFile + + 90169C817DED636388514A58128D689E fileRef - ECCC8A041B93EACCB1EAB62C5C94963E + F5A8E7DD5F25A62C38F0997552843F37 isa PBXBuildFile settings - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 + ATTRIBUTES + + Public + - C88AB78DD910AA723BD79164EB7CF3D4 + 9150372647BA1780BD15EE36B9F5D4A5 fileRef - C3C2D026BEA4EFA755B9D564519F11A4 + 6064CCF6912C39990F5ECE21398AC0FC isa PBXBuildFile settings @@ -14321,20 +4290,22 @@ - C8D9671C7CF65E0461E1247AC4521F3C + 9160CF7C57EAA370B4D63540BB94ECC3 includeInIndex 1 isa PBXFileReference + lastKnownFileType + sourcecode.c.h name - lookup_amatorka.png + KSHTTPMultipartPostBody.h path - framework/Resources/lookup_amatorka.png + Source/KSCrash/Reporting/Tools/KSHTTPMultipartPostBody.h sourceTree <group> - C8F217CDE37BFF7C5822D3280E224778 + 91B586173B88C39A05F7BC9A1B158C7B includeInIndex 1 @@ -14343,13 +4314,13 @@ lastKnownFileType sourcecode.c.h name - GPUImageFASTCornerDetectionFilter.h + KSDynamicLinker.h path - framework/Source/GPUImageFASTCornerDetectionFilter.h + Source/KSCrash/Recording/Tools/KSDynamicLinker.h sourceTree <group> - C8F31130E66DDBB7E6D9F73EC858D2F9 + 920FCA94CB0C1A190E45022D58058890 includeInIndex 1 @@ -14358,13 +4329,13 @@ lastKnownFileType sourcecode.c.objc name - GPUImageOpacityFilter.m + KSCrashDoctor.m path - framework/Source/GPUImageOpacityFilter.m + Source/KSCrash/Recording/KSCrashDoctor.m sourceTree <group> - C8F855F265BA141A17CB5759DE9FA816 + 9317DE5F5C832747A6C7A413D78C5EFF includeInIndex 1 @@ -14373,30 +4344,52 @@ lastKnownFileType sourcecode.c.h name - GPUImageHoughTransformLineDetector.h + LLVM.h path - framework/Source/GPUImageHoughTransformLineDetector.h + Source/KSCrash/swift/Basic/LLVM.h sourceTree <group> - C916C9CBF719A86DCBB89652DA0A4EFC + 931E315DB56EC7307D3E3799F68CF1DB fileRef - C3C6623097186206DCC2B0B8758ECEF9 + FC0988CC68727AEE0F44DD8E032318D5 isa PBXBuildFile settings ATTRIBUTES - Public + Project - C92EE8E578B8F830BE14C0DA3CB872CF + 937CE426A3093A1040394D15CB395F35 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + KSCrashType.h + path + Source/KSCrash/Recording/KSCrashType.h + sourceTree + <group> + + 9396A0C10B2F95EE74A93CE22CC315E7 + + fileRef + EA148D6FA5B3CEE4C36204312CCE3966 + isa + PBXBuildFile + + 93ECFF9D9936CEE7539DC89169A11E25 fileRef - 4DE6AB58569B9ED9F9E34877B15CC47F + 84162111E849343F0C96A5FE90E420F4 isa PBXBuildFile settings @@ -14407,7 +4400,7 @@ - C92FCF79BEF58C119B0414CC50EB4CFE + 9413000CCFC048AD3A7933974E376DF3 includeInIndex 1 @@ -14416,13 +4409,74 @@ lastKnownFileType sourcecode.c.h name - GPUImageGaussianBlurFilter.h + KSMachApple.h path - framework/Source/GPUImageGaussianBlurFilter.h + Source/KSCrash/Recording/Tools/KSMachApple.h sourceTree <group> - C93FFCE1629B26DFB4E8B88CB72A4DA5 + 944E1901D8080C72DDDD6D3DE93B09FE + + baseConfigurationReference + 087D5ADEE133FCDA2B1BA7B40B11EE33 + buildSettings + + ENABLE_STRICT_OBJC_MSGSEND + YES + GCC_PREFIX_HEADER + Target Support Files/HappyDNS/HappyDNS-prefix.pch + IPHONEOS_DEPLOYMENT_TARGET + 7.0 + MTL_ENABLE_DEBUG_INFO + YES + OTHER_LDFLAGS + + OTHER_LIBTOOLFLAGS + + PRIVATE_HEADERS_FOLDER_PATH + + PRODUCT_NAME + $(TARGET_NAME) + PUBLIC_HEADERS_FOLDER_PATH + + SDKROOT + iphoneos + SKIP_INSTALL + YES + + isa + XCBuildConfiguration + name + Debug + + 94AD6E90BC0E7E297DC143BFF05AD832 + + fileRef + 3E6DB9C4E63CD1E8A758D588ECC32AA9 + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 951712E29E6766F95F52EA998FE6E97A + + containerPortal + D41D8CD98F00B204E9800998ECF8427E + isa + PBXContainerItemProxy + proxyType + 1 + remoteGlobalIDString + 7721D993ED2B6C2DEF3331B64CF7FF53 + remoteInfo + KSCrash + + 953CA4E3B7F1326FAC09721909C2068C includeInIndex 1 @@ -14431,173 +4485,120 @@ lastKnownFileType sourcecode.c.h name - GPUImageThresholdEdgeDetectionFilter.h + Fallthrough.h path - framework/Source/GPUImageThresholdEdgeDetectionFilter.h + Source/KSCrash/swift/Basic/Fallthrough.h sourceTree <group> - C9694BCD0DC50AC69078F16EBCD194ED + 962B6243BE3AAC24060BDB520E1AFBFF + + baseConfigurationReference + 3201021BF3D4BAE755203B71D8492C2B + buildSettings + + ENABLE_STRICT_OBJC_MSGSEND + YES + IPHONEOS_DEPLOYMENT_TARGET + 7.0 + MACH_O_TYPE + staticlib + MTL_ENABLE_DEBUG_INFO + NO + OTHER_LDFLAGS + + OTHER_LIBTOOLFLAGS + + PODS_ROOT + $(SRCROOT) + PRODUCT_NAME + $(TARGET_NAME) + SDKROOT + iphoneos + SKIP_INSTALL + YES + + isa + XCBuildConfiguration + name + Release + + 9674E62CA0708ED3778ECD39C22CAAB4 includeInIndex 1 isa PBXFileReference - lastKnownFileType - sourcecode.c.objc name - GPUImageChromaKeyBlendFilter.m + error.c path - framework/Source/GPUImageChromaKeyBlendFilter.m + Pod/Classes/pili-librtmp/error.c sourceTree <group> - C9DC6DF03847BB749944415558D277DD + 969D9D9491ADED77D177032394F02D57 + + fileRef + 5A0A0B242BB448720D9187E00693E0ED + isa + PBXBuildFile + + 96B66177BA8B9146DA4FB8FBA2DBC234 includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.objc + sourcecode.c.h name - KSCrashSentry_NSException.m + RFC3339DateTool.h path - Source/KSCrash/Recording/Sentry/KSCrashSentry_NSException.m + Source/KSCrash/Recording/Tools/RFC3339DateTool.h sourceTree - <group> - - CA1A032B0E87DEAFA1C720698C71900E - - buildActionMask - 2147483647 - files - - 0AAC422034A0DC247261945A3D9C2C8C - 82B1F7DECBD0EDFD842E1D5B866CE378 - 47A8546B1885208B44A30FA16B921D89 - 94AD6E90BC0E7E297DC143BFF05AD832 - 6901638D4E4661990E30C49AA467DFEB - 4047B74704DBFD526F41AB4B9E48774C - 67AC61A270C7E894F1CD5667C41E23D0 - 9150372647BA1780BD15EE36B9F5D4A5 - 063D2D3647A9F5A5EB0A037AB1C44FEE - 931E315DB56EC7307D3E3799F68CF1DB - 6807DAF1AA31ED744B3298FEAE2CC427 - BEC6C7377BFF43A0C0EAF6D966EB7506 - 0D20FD1EB1CAEFB07291F7814934096B - 28BF349D13AA274BEE9E794AB9DD78F1 - EC9CB2E6B3EA7679F855331546BF0F17 - 38FC522671F1FCAE1A0A96F044E3846C - 8548BDF5160F9597031EFEFD46935FF1 - 81F3D0BA797A3AE7C0679260998CF4D8 - 39EDC52AEFCEDA5BB47716DA698B1950 - 8C5FB8F427702BA76976A32988D9625D - 28E03E16731B812EC33497D7FC59AA49 - D7A237E23609DEFBE32AD2DB902A4F95 - AC10457DD3A122C0E973AEF17388820C - 4D8609EB689B9FC5F4474F7F38A317AC - 644C377381458730FCA19CF74C268B4D - 988BADE2956AEDF36E085A753F87083A - 8C0AA8199DC44FAE432D719510E02586 - B2CFE3BE8386B2B635A9CBCA2E6FCD6C - 6BAA2E2D1719BF266313816C9E93612F - 810C982F43430F055E482D839B656DC1 - 1DD32DA67114B71F4D8ECC698ED19639 - 05A72392577F649090F73A642D766CDF - 8D4B0E83F507CA646E16AECAE63AB08E - 1D8F8BB230399E06763B41CFB509DCF4 - 3CB33227F8436D223A9BAA94D4EE3D53 - AE04BCAF5B6C30B4545FF847AC8C7EFA - 6CAC5DEEAA0514E6E7F59C6CFF59A2A5 - C88AB78DD910AA723BD79164EB7CF3D4 - FEB06886753152810816408BCF5EB636 - 86FE79EC69D9F6C1ACD57641E0069D1E - 4F62C1BBC8273FB54C8CAFBB99061117 - 00FC81AA910E690E411E69B34FAC2FDC - 90169C817DED636388514A58128D689E - FEC3100E22E424CF2043615E5F422052 - 85F70911B8D8C22F234BBBD8D2012AA5 - 5658DCB3B12C0F2A4D4C50977EE75722 - CF9834DB49221047637FD6626EA93FF6 - F95BF2904AC7127F6CE0D83A6A66F517 - 32B093D6A9CC44F7E262BF1E99F412BA - A50EF64C55E26CFE79DCD551D9A81A44 - 67A17433C9AFE8486B65F86970B7C435 - C6C05B79D9A0165A7C919D4CD6E2E2E3 - 540CD03258D73E25C77689F9042BD6BB - 0676209BA375FCFAC64363186B627D96 - A6C872FEC9B4511D4B31CFCAD45F120A - D6EB65602B86776685CD533BA719F75D - 12F2259C1ECFECB1F4DE0B73DAD338DE - 806D76BF5FCACB89D3D9A8F02D0B5072 - 1E7F8E001CED4EE74B3210D32064F1A9 - A0A6350BE12E403194CB8F75677B9196 - 0FAF650F4298B10760F0E2F671BAB4EC - 46A7697C447617F43B7EE2BB22F62434 - 1AB43CCB8956C3F14977B75EE33707EF - 34FECD939AC911AF6A05B461AD2C1F5E - D93FA5316FBCF9E2BB6855B6385FD325 - DE30A3580954B0D1CC70C4934322F2DD - 80E0969F123168A6FE113378C6E5AD4B - 57541CA0FE35976A44C81A79315E1FCB - C2997D3A3C5A1335454780269CED5C64 - F9AACFED5FB0FAE71D5A5D38ECDF1DD4 - 74B4FDB0C6FDE18EDB0D33F627F191B6 - F39363001B9C0DB30A89274DE18F5348 - E30E51EDFA4682CBEDE88834A4892E6F - B07C000F2ED16BF9344EB9622AAD7EF1 - 45756F502953DCEA5C0FCCB92FFBAB0A - C69A821CED2A5685603E2C61ECAE9989 - 48722B0625674F8BDB3D48591A3398E4 - 29C8F907EB2A36ABC9955185255A060D - EDDCB9985E765D7B39F992907357CAE6 - 62A67CF32ECC3C7AB2698F1F226929A7 - 19A1454720A07697C6697EBA394A33B9 - BAFD651E1BB5AD426DD2FA2DDDBCA52E - 93ECFF9D9936CEE7539DC89169A11E25 - FBEB06C4573020034E8EB792346D63F5 - 2698FDF76B3B18DFD42A939C9D782052 - 515153F8D784FB97CEA0B3CA439ADB0C - 02361FE8DA7908DBDD6F7850C4EC7771 - CEC5D17EA69344CD96DF1FBE1FCE25D2 - D519C1D1DEF15D09E4AF2E43E87090A1 - 515BFF8C5DA33A9C8440F226B08F21BA - 57BE0671CEE88A84BA5CEBEB2C0D0FF1 - + <group> + + 979E8AF22F2588CA6703323BD5454C3B + + includeInIndex + 1 isa - PBXHeadersBuildPhase - runOnlyForDeploymentPostprocessing - 0 + PBXFileReference + name + KSCrashSentry_CPPException.mm + path + Source/KSCrash/Recording/Sentry/KSCrashSentry_CPPException.mm + sourceTree + <group> - CAD41AF3A9BC13973089D8407A2DFAAE + 982D23487384E2D45C3676CFAAB978EC includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.objc - name - GPUImageLinearBurnBlendFilter.m + text.script.sh path - framework/Source/GPUImageLinearBurnBlendFilter.m + Pods-PLCameraStreamingKit-frameworks.sh sourceTree <group> - CADAACE473538E9055735E6C480420D9 + 988BADE2956AEDF36E085A753F87083A fileRef - 7A0BA924A1E1E10325F3DF8F0746E0F2 + 358039D5C3714957D94BB2974D387625 isa PBXBuildFile settings - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 + ATTRIBUTES + + Project + - CB1B272772428232E7B93280DF065E31 + 98E9E45174549D5E6C2498C615598D31 includeInIndex 1 @@ -14606,117 +4607,98 @@ lastKnownFileType sourcecode.c.objc name - GPUImageSubtractBlendFilter.m + QNTxtResolver.m path - framework/Source/GPUImageSubtractBlendFilter.m + HappyDNS/Local/QNTxtResolver.m sourceTree <group> - CB4489E920FA9AA84D2C76F28657EF87 + 98EB495E9B8588C593C289C5484004D3 - children - - 10BAA3E739989DB39DD766501A5EC6BA - 140F8C4709A8FF8C9ACCB6AD48A41E6A - D95EAD68D37A0FAF6867631F793BCDE0 - 94E6ADDA3181DA63A576C6728AE0A169 - 132D018B93E4082FF091ED210C889D56 - 43AAC6FA2107B32F436D573F2A2C1568 - B1B526431CAD28D181A113006CD48583 - 5C8B1F7C6C0EFE23C3643FF57983BE8D - 5F91DCAC6C432269DE86AA0AE4CF48A3 - 926123466ECAC14985DA80F186F204BF - 582B0B80CD25A11ADC01E282D20D663C - + includeInIndex + 1 isa - PBXGroup + PBXFileReference + lastKnownFileType + sourcecode.c.objc name - PLStreamingKit + KSCString.m path - PLStreamingKit + Source/KSCrash/Reporting/Tools/KSCString.m sourceTree <group> - CB9E685E7A4D0BFDCA358AD4BAFAFB68 + 999BC088CF01F4A8C4FD5343E02BE09B + + fileRef + B453D1E5EFF3158355F8AD2CD370A36B + isa + PBXBuildFile + + 9A57B57FBF97465A28A60DC1BDAC8939 includeInIndex 1 isa PBXFileReference + lastKnownFileType + sourcecode.c.h name - KSCrashType.c + KSHTTPRequestSender.h path - Source/KSCrash/Recording/KSCrashType.c + Source/KSCrash/Reporting/Tools/KSHTTPRequestSender.h sourceTree <group> - CBD971445F74B919457EC4B0C0006D5C + 9C16E44DD717AC30BA3655027D1D9234 - children - - 53A500004CA4D31CA69519C0FA438127 - 618D5905B7DA28AFA428F48743D1F4C4 - D8360535213FBE1BC4E5C184652FB666 - 341AFBA238F5622E07CADD2D9C09FB2E - CB4489E920FA9AA84D2C76F28657EF87 - + includeInIndex + 1 isa - PBXGroup + PBXFileReference name - Pods + KSCrashSentry_User.c + path + Source/KSCrash/Recording/Sentry/KSCrashSentry_User.c sourceTree <group> - CC33809FADEF76309B63E261DDEDB5D7 + 9C885F5CB7C86E5375642A7F6F53B5D3 includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.h + sourcecode.c.objc name - QNHijackingDetectWrapper.h + QNHosts.m path - HappyDNS/Local/QNHijackingDetectWrapper.h + HappyDNS/Local/QNHosts.m sourceTree <group> - CC5405E24A751EB82B94486428DE81D6 - - fileRef - 7D29B57C84DFB475E83C6E5C9FEF4672 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - CC71A3DC300E6218606B8EA10F425E00 - - fileRef - 22B06CADFEF7169B8A96E2143E2ADF5F - isa - PBXBuildFile - - CCF8F7EE753D5D7DB7E4A4482695A89A + 9C8EC88A6A1B297534D249870367C951 - explicitFileType - archive.ar includeInIndex - 0 + 1 isa PBXFileReference name - libHappyDNS.a + KSFileUtils.c path - libHappyDNS.a + Source/KSCrash/Recording/Tools/KSFileUtils.c sourceTree - BUILT_PRODUCTS_DIR + <group> + + 9DB77E8C94668C866C0E12C29370797C + + fileRef + 2083637A2E0B7D8BFC2E8A7DE3946A72 + isa + PBXBuildFile - CCFEEF71B2973B2FACB9369616B186DE + 9DF02DC55CB6BB8E054C6BD394CF96B1 includeInIndex 1 @@ -14725,25 +4707,20 @@ lastKnownFileType sourcecode.c.objc name - GPUImageKuwaharaFilter.m + QNRecord.m path - framework/Source/GPUImageKuwaharaFilter.m + HappyDNS/Common/QNRecord.m sourceTree <group> - CD31C1DC1E095B7D5575BB0744647516 + 9E12A65403EEC3FFE1EA1E942F4B6F4A fileRef - 078242935268BFF82B9896C7759B3771 + B92DBB73974D0B8A5FF94297CB7FD6B5 isa PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - CD58767A3FC3CCC5606F91DB0758FF0D + 9FB7542EFC655ECEB14E60F0EC58C1B8 includeInIndex 1 @@ -14752,66 +4729,62 @@ lastKnownFileType sourcecode.c.objc name - GPUImageSmoothToonFilter.m + KSCrashReportSinkVictory.m path - framework/Source/GPUImageSmoothToonFilter.m + Source/KSCrash/Reporting/Sinks/KSCrashReportSinkVictory.m sourceTree <group> - CD59A65E16D95E57C6143B69F2C3C889 + 9FDB734414E2E3E9E05832B12F5BD78A includeInIndex 1 isa PBXFileReference lastKnownFileType - text.script.sh + sourcecode.c.objc + name + KSCrashInstallationQuincyHockey.m path - Pods-PLCameraStreamingKit-resources.sh + Source/KSCrash/Installations/KSCrashInstallationQuincyHockey.m sourceTree <group> - CDDD82653D0F577EE33DC86B9387725A + A08A24285816BAF077BF6658324270C5 - fileRef - D703EF9AA1301555632D725057142F3D + includeInIndex + 1 isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + PLCameraStreamingKit.h + sourceTree + <group> - CDFAFE970D7C813F257D8C624F4BA5D6 + A0A6350BE12E403194CB8F75677B9196 fileRef - C92FCF79BEF58C119B0414CC50EB4CFE + FBF427E652EB8E00B1E2380AA4D89C63 isa PBXBuildFile settings ATTRIBUTES - Public + Project - CE4199395A07CEE32A80FF802D68F13F + A0E36C5F85EDC1EF9FB0766C915B08B9 fileRef - 6803B0B5CF422749CFEE32C1CDCE838F + C852AF4EFDBA90A69AF4085F493B98EC isa PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - CE989C096BDBEA0E2FBD1F5D76D06599 + A12F96FCDF0BFC94D03511A6A0CBEEB7 includeInIndex 1 @@ -14820,28 +4793,49 @@ lastKnownFileType sourcecode.c.h name - GPUImageColorDodgeBlendFilter.h + amf.h path - framework/Source/GPUImageColorDodgeBlendFilter.h + Pod/Classes/pili-librtmp/amf.h sourceTree <group> - CEC257B4ABA6CFD6F71A003A055C2F05 + A13389E77DE8D8E996BFE29ECA8D9EEF + + buildActionMask + 2147483647 + files + + 70981A9ADEDF4A98F5DE255E0570525E + + isa + PBXFrameworksBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + A1B746F70F10AB6E7B1B264B11875144 fileRef - 5FE0A2B4117F8FEE962177E39EDE46F2 + 98EB495E9B8588C593C289C5484004D3 isa PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - CEC5D17EA69344CD96DF1FBE1FCE25D2 + A28ADCA2E78677E0DCF5F2143AA2A7A3 + + includeInIndex + 1 + isa + PBXFileReference + name + KSMach_Arm64.c + path + Source/KSCrash/Recording/Tools/KSMach_Arm64.c + sourceTree + <group> + + A2ECFC4C875986590F85E7159FB34AFC fileRef - 3DEADB5E0B979793FB30D2D0005CC0C5 + 3FD026CF6AE6BB8E9FD8EFD8F22B0957 isa PBXBuildFile settings @@ -14852,25 +4846,38 @@ - CF09C1EA9D6B5D5EE62ACA89290DD6A7 + A363F6BB6249FA58122B9E79F44803CA + + isa + PBXFileReference + lastKnownFileType + wrapper.framework + name + MessageUI.framework + path + Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/MessageUI.framework + sourceTree + DEVELOPER_DIR + + A386BCB117AA02F47D572DD3BEF479B7 includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.objc + sourcecode.c.h name - GPUImageGammaFilter.m + PLAudioStreamingConfiguration.h path - framework/Source/GPUImageGammaFilter.m + Pod/Library/include/PLStreamingKit/PLAudioStreamingConfiguration.h sourceTree <group> - CF9834DB49221047637FD6626EA93FF6 + A50EF64C55E26CFE79DCD551D9A81A44 fileRef - 93ED4C2036C716DBA95ABBA2E8922A8F + 0601F0DBA97C904F0A99A5E0E73D791B isa PBXBuildFile settings @@ -14881,78 +4888,124 @@ - CFAC9916ED281A103F1C76C7B6E5A70F + A51BF1268F81969CE3D33619782DD96D includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.h + sourcecode.c.objc name - GPUImagePinchDistortionFilter.h + KSSafeCollections.m path - framework/Source/GPUImagePinchDistortionFilter.h + Source/KSCrash/Recording/Tools/KSSafeCollections.m sourceTree <group> - CFC118C640A7F3B4B0A81D21E9CE9B47 + A5CCDF66DF82E33E81E8C254EC0CF99F fileRef - 32047914649F6DE47F151EBA3E0D6141 + BF1B29D465EFBA3AF56454BAD3E28A60 isa PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - CFC1915DAEFF717EF81572A6D1C18738 + A6C872FEC9B4511D4B31CFCAD45F120A fileRef - F607EB959A48F63C5DDDF20750B1A6DF + 7E8B64BFDFF40F6CFD3F42C2D6A694D8 isa PBXBuildFile settings ATTRIBUTES - Public + Project - D0858D878BD7051AEC8CB3024D4BD638 + A6EE7A8B2AB31AC5EB693557E785553D + + children + + 10152358E869A0AAB4AE3FB88A0D9CDD + 7C99CDD4D38288FA54323EBD6A66097E + 2083637A2E0B7D8BFC2E8A7DE3946A72 + 982D23487384E2D45C3676CFAAB978EC + CD59A65E16D95E57C6143B69F2C3C889 + 39BA61E5926FD0261D121C768C52925B + 3201021BF3D4BAE755203B71D8492C2B + + isa + PBXGroup + name + Pods-PLCameraStreamingKit + path + Target Support Files/Pods-PLCameraStreamingKit + sourceTree + <group> + + A701716FFEE675C691924B5DD5AD7F5B + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + QNHex.m + path + HappyDNS/Util/QNHex.m + sourceTree + <group> + + A7BAD5B83F7A4ADA5805F14DEF54CB93 + + includeInIndex + 1 + isa + PBXFileReference + name + Punycode.cpp + path + Source/KSCrash/swift/Basic/Punycode.cpp + sourceTree + <group> + + A84AB6BCD4B34A05D1394B790FDF4F5E + + fileRef + CA711130EED258407FAE5D61C524D198 + isa + PBXBuildFile + + A86197F4F3C92350321F83ED2B8599DE fileRef - CF09C1EA9D6B5D5EE62ACA89290DD6A7 + 9674E62CA0708ED3778ECD39C22CAAB4 isa PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - D0B9E5CB4D657156E6F4BB939DDD26D4 + A880D6FCC9E1288BEF68F0771973F497 includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.objc + sourcecode.c.h name - KSCrash.m + QNHosts.h path - Source/KSCrash/Recording/KSCrash.m + HappyDNS/Local/QNHosts.h sourceTree <group> - D0BDC6C19E2A248C835A3C63DA5A6369 + A8B22F1E569BA1994FBD65927C3BFCE6 fileRef - AF7B75E627CF3DC8F909ABE1EA4ACA20 + C7B187DB6C1CFB94A544087BE70CF342 isa PBXBuildFile settings @@ -14963,7 +5016,7 @@ - D1829C020FDE73136EAA700A530CB9CC + A8D515AB60BE1F1863848A704AAA777A includeInIndex 1 @@ -14972,43 +5025,91 @@ lastKnownFileType sourcecode.c.h name - GPUImageSobelEdgeDetectionFilter.h + error.h + path + Pod/Classes/pili-librtmp/error.h + sourceTree + <group> + + A9234335929E14519911829A090C6989 + + children + + 8CA2B5D3CB4C1B74481BE30CCE356944 + 5C637E17DFEB3C643A2B155A46735515 + EE7D8EE1CA8BF89D1CD6BE76969925B0 + + isa + PBXGroup + name + Reporting + sourceTree + <group> + + A92E1EBE01565341013B44953851C0C9 + + includeInIndex + 1 + isa + PBXFileReference + name + log.c + path + Pod/Classes/pili-librtmp/log.c + sourceTree + <group> + + A96401E46482B490EBA2CC6840A8710B + + includeInIndex + 1 + isa + PBXFileReference + name + rtmp.c path - framework/Source/GPUImageSobelEdgeDetectionFilter.h + Pod/Classes/pili-librtmp/rtmp.c sourceTree <group> - D19E009506B17151E72115BC88A9628E + AA256E56BF90E33FD0C4EE90B0DBB93B fileRef - 75A54E5DE45332799C6E4DA1F3715626 + 25C9E656A6C6507A6DF719F6D0C12EAD isa PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - D1B1933E9BC6601EB60EA3269EB4D89C + AA750D948CCD51E875B53E33546E5241 + + children + + 28AFBCE7086BD4C74425C3879B8F5E4A + 466A81354BE51A1A9B0182B17FBB8093 + + isa + PBXGroup + name + JSON + sourceTree + <group> + + AB989C0055B2D49B0E583AF40B655E4A includeInIndex 1 isa PBXFileReference - lastKnownFileType - sourcecode.c.h name - GPUImageLuminosityBlendFilter.h + KSCrashSentry.c path - framework/Source/GPUImageLuminosityBlendFilter.h + Source/KSCrash/Recording/Sentry/KSCrashSentry.c sourceTree <group> - D1F54A4D52D79EF767F9FA4D357C1801 + AC10457DD3A122C0E973AEF17388820C fileRef - D9E8F5E570681DDD0CAB94032A33A10F + 23C948B409271B4E47C380207A23FF20 isa PBXBuildFile settings @@ -15019,28 +5120,36 @@ - D1FA7FBAAA8D7461AEDFB04701FA4E53 - - fileRef - DFC6F9C8BD399C99F9B6D707BDD35483 - isa - PBXBuildFile - - D27369D06E1FCD04644F0A51A4B7DE95 + AE04BCAF5B6C30B4545FF847AC8C7EFA fileRef - 99015278C5B19B2707C3261878941BD6 + DEEA185DE3E2C3E02E713F3FFA661802 isa PBXBuildFile + settings + + ATTRIBUTES + + Public + + - D2BFAEDBD8058CD7676DA2BABAEC5CEC + AF847C4042334D259EF41926FB435CD1 - fileRef - 8420B6E953B63C63DD209BEC3972F293 + buildActionMask + 2147483647 + files + + 6BEE9C075C04972E09B9923B11E3643D + D4F1B3CF20819AF5C23B2482B7C41188 + EA3033230C2BF9D1C97B0D98FBD9F4AF + isa - PBXBuildFile + PBXFrameworksBuildPhase + runOnlyForDeploymentPostprocessing + 0 - D2F7D654545356534565F89381414B46 + AFCE7D3E58BF73B38A50C154F464DF13 includeInIndex 1 @@ -15049,213 +5158,260 @@ lastKnownFileType sourcecode.c.h name - GPUImageMultiplyBlendFilter.h + rtmp.h path - framework/Source/GPUImageMultiplyBlendFilter.h + Pod/Classes/pili-librtmp/rtmp.h sourceTree <group> - D31FD6B1AFB7C29D137885CA13E855AD + B07C000F2ED16BF9344EB9622AAD7EF1 fileRef - DCAD82F94D09169DAF84F7B3E73F6AF8 + 1291CED785FA7516ACB46C8CD7212175 isa PBXBuildFile settings - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 + ATTRIBUTES + + Public + - D37C6388B712549C11FDFE2AD85C1600 + B14759D322D137944C02B032A75A6DBC - fileRef - C0187336298930E1072F129FAA643A3A + containerPortal + D41D8CD98F00B204E9800998ECF8427E isa - PBXBuildFile - - D37E7F6F10F34E6E21E6E2C5D188CB81 - - includeInIndex + PBXContainerItemProxy + proxyType 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageHistogramGenerator.m - path - framework/Source/GPUImageHistogramGenerator.m - sourceTree - <group> + remoteGlobalIDString + 5AC3A11679CADE5423C8DCC5EAF0C6CD + remoteInfo + HappyDNS - D3E2D64AA95AC4D29FB7BA227B0DA400 + B1AC080770A8CF26EBD39192533284B7 includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.objc + sourcecode.c.h name - GPUImageThresholdSketchFilter.m + QNLruCache.h path - framework/Source/GPUImageThresholdSketchFilter.m + HappyDNS/Common/QNLruCache.h sourceTree <group> - D41D8CD98F00B204E9800998ECF8427E + B21F15F22C29175E25172312B8C98D81 - attributes - - LastSwiftUpdateCheck - 0700 - LastUpgradeCheck - 0700 - - buildConfigurationList - 2D8E8EC45A3A1A1D94AE762CB5028504 - compatibilityVersion - Xcode 3.2 - developmentRegion - English - hasScannedForEncodings - 0 + fileRef + F33CF25754D9BB6A7D899FB01A1B7EAC isa - PBXProject - knownRegions - - en - - mainGroup - 7DB346D0F39D3F0E887471402A8071AB - productRefGroup - E5AF0CE76749CAAB29C4E046059E35A7 - projectDirPath - - projectReferences - - projectRoot - - targets - - 6610362E50A6DE8BACCA1F2885CD9157 - 0DC8BCC337CBE1F795C675E87C3D1B3E - 7721D993ED2B6C2DEF3331B64CF7FF53 - 2BAC7CF49C86172B8F10A9ADFC08EF59 - 798B6B4E9FEC91D74E94A8CB34C2239D - + PBXBuildFile - D492F90A0A202DD6321675A2A2203C96 + B2CFE3BE8386B2B635A9CBCA2E6FCD6C fileRef - 54EEC1355FB27A2C998795CFFAD27266 + 857A37F970203842C373BD8CE271D9B8 isa PBXBuildFile settings - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 + ATTRIBUTES + + Public + - D4BA0EC6E0BC0F75AF7903968F9904B2 + B2EC46C6D29E254139E0020BACDF680F - fileRef - C0B0048E0376557330174CB35A447187 + includeInIndex + 1 isa - PBXBuildFile - settings + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + KSCrashSentry_CPPException.h + path + Source/KSCrash/Recording/Sentry/KSCrashSentry_CPPException.h + sourceTree + <group> + + B37F0F91F85060E28F1DAAB522DC7EC1 + + buildSettings - ATTRIBUTES + ALWAYS_SEARCH_USER_PATHS + NO + CLANG_CXX_LANGUAGE_STANDARD + gnu++0x + CLANG_CXX_LIBRARY + libc++ + CLANG_ENABLE_MODULES + YES + CLANG_ENABLE_OBJC_ARC + YES + CLANG_WARN_BOOL_CONVERSION + YES + CLANG_WARN_CONSTANT_CONVERSION + YES + CLANG_WARN_DIRECT_OBJC_ISA_USAGE + YES + CLANG_WARN_EMPTY_BODY + YES + CLANG_WARN_ENUM_CONVERSION + YES + CLANG_WARN_INT_CONVERSION + YES + CLANG_WARN_OBJC_ROOT_CLASS + YES + CLANG_WARN_UNREACHABLE_CODE + YES + CLANG_WARN__DUPLICATE_METHOD_MATCH + YES + COPY_PHASE_STRIP + NO + GCC_C_LANGUAGE_STANDARD + gnu99 + GCC_DYNAMIC_NO_PIC + NO + GCC_OPTIMIZATION_LEVEL + 0 + GCC_PREPROCESSOR_DEFINITIONS - Public + DEBUG=1 + $(inherited) + GCC_SYMBOLS_PRIVATE_EXTERN + NO + GCC_WARN_64_TO_32_BIT_CONVERSION + YES + GCC_WARN_ABOUT_RETURN_TYPE + YES + GCC_WARN_UNDECLARED_SELECTOR + YES + GCC_WARN_UNINITIALIZED_AUTOS + YES + GCC_WARN_UNUSED_FUNCTION + YES + GCC_WARN_UNUSED_VARIABLE + YES + IPHONEOS_DEPLOYMENT_TARGET + 7.0 + ONLY_ACTIVE_ARCH + YES + STRIP_INSTALLED_PRODUCT + NO + SYMROOT + ${SRCROOT}/../build + isa + XCBuildConfiguration + name + Debug - D4F1B3CF20819AF5C23B2482B7C41188 + B453D1E5EFF3158355F8AD2CD370A36B - fileRef - DF97CF541DBFF0ADD47D503793B2CA1A + includeInIndex + 1 isa - PBXBuildFile + PBXFileReference + name + amf.c + path + Pod/Classes/pili-librtmp/amf.c + sourceTree + <group> - D519C1D1DEF15D09E4AF2E43E87090A1 + B484717FD06021EEBD37796F17B108EB fileRef - E7F77FCFB6F98D6541A4395818A7C726 + D62DC333B2021049ABA2882602F11DF2 isa PBXBuildFile - settings - - ATTRIBUTES - - Project - - - D592906E8183B13B288152C9CA0D529A + B4BCE8F8C2EBE95B83E1D7E1E19336D4 - fileRef - A9FC11F4B5E0F7B39D33F92568CFD4C2 + includeInIndex + 1 isa - PBXBuildFile - settings + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + KSReachabilityKSCrash.h + path + Source/KSCrash/Reporting/Tools/KSReachabilityKSCrash.h + sourceTree + <group> + + B54229921BE662CAD7F875C116ECEC5E + + baseConfigurationReference + 087D5ADEE133FCDA2B1BA7B40B11EE33 + buildSettings - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 + ENABLE_STRICT_OBJC_MSGSEND + YES + GCC_PREFIX_HEADER + Target Support Files/HappyDNS/HappyDNS-prefix.pch + IPHONEOS_DEPLOYMENT_TARGET + 7.0 + MTL_ENABLE_DEBUG_INFO + NO + OTHER_LDFLAGS + + OTHER_LIBTOOLFLAGS + + PRIVATE_HEADERS_FOLDER_PATH + + PRODUCT_NAME + $(TARGET_NAME) + PUBLIC_HEADERS_FOLDER_PATH + + SDKROOT + iphoneos + SKIP_INSTALL + YES + isa + XCBuildConfiguration + name + Release - D5ACAF96DB0C1ABE0F66294C8E19C32B + B5A9717B3F7C395AE0FDE9BC10492D10 fileRef - B1033E700B25D3F9FF6859E92D433876 + EB4273303F792121B0E99C8B3305C8E9 isa PBXBuildFile - settings - - ATTRIBUTES - - Public - - - D5BA14E2C771E4B129AB8CFB9DC5B307 + B5D95E56939ACD41F6372FB9940F7F06 fileRef - F4119119303A6F52D249483A7E683A68 + 78FB1ED04EA8902F6B0966C34E575CCC isa PBXBuildFile - D61453ADBEB94EB9DBE53548142A82C7 + B687C907909C6BA7F1D143CE0BE90ED0 includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.objc - name - GPUImageStillCamera.m + sourcecode.c.h path - framework/Source/GPUImageStillCamera.m + PLSourceAccessProtocol.h sourceTree <group> - D6ABE8A4AF0613531A86293772F75A74 - - fileRef - DA86515BD79B09EDBB74DD7867A483B8 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - D6B09D400E1BDE26550AC445410E5963 + B6F9164E7CAA6540EDEF9B124D48B9BF includeInIndex 1 @@ -15264,141 +5420,136 @@ lastKnownFileType sourcecode.c.h name - GPUImageMotionBlurFilter.h + dh.h path - framework/Source/GPUImageMotionBlurFilter.h + Pod/Classes/pili-librtmp/dh.h sourceTree <group> - D6B2A4B5F4EF02687DCE41C312217224 - - fileRef - 77CAE2021809AB249594DA45165E7309 - isa - PBXBuildFile - - D6B975AB3179AD8B8A92C252B2A018A5 + B70A4FAA700AECADAE2D554EB9058951 - fileRef - 2A2EAB22565F94059D78AD5244372E43 - isa - PBXBuildFile - settings + baseConfigurationReference + 39BA61E5926FD0261D121C768C52925B + buildSettings - ATTRIBUTES - - Public - + ENABLE_STRICT_OBJC_MSGSEND + YES + IPHONEOS_DEPLOYMENT_TARGET + 7.0 + MACH_O_TYPE + staticlib + MTL_ENABLE_DEBUG_INFO + YES + OTHER_LDFLAGS + + OTHER_LIBTOOLFLAGS + + PODS_ROOT + $(SRCROOT) + PRODUCT_NAME + $(TARGET_NAME) + SDKROOT + iphoneos + SKIP_INSTALL + YES + isa + XCBuildConfiguration + name + Debug - D6EB65602B86776685CD533BA719F75D + B814AB108E3DB51D7C04F0C3328957AD fileRef - E9737A654F0EE713E74C11C06000113F + A92E1EBE01565341013B44953851C0C9 isa PBXBuildFile - settings - - ATTRIBUTES - - Public - - - D6FCEA640495D290C7A4293C58C3DFF0 + B83C863490799592A61DD4EC96345C19 includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.objc + sourcecode.c.h name - KSCrashReportFilterStringify.m + QNHijackingDetectWrapper.h path - Source/KSCrash/Reporting/Filters/KSCrashReportFilterStringify.m + HappyDNS/Local/QNHijackingDetectWrapper.h sourceTree <group> - D703EF9AA1301555632D725057142F3D + B87E74C5B5193D74DE715196D2713945 includeInIndex 1 isa PBXFileReference - lastKnownFileType - sourcecode.c.h name - GPUImageColorPackingFilter.h + KSCrashState.c path - framework/Source/GPUImageColorPackingFilter.h + Source/KSCrash/Recording/KSCrashState.c sourceTree <group> - D74B9E7FB780EBBAAAEB699745ADAA65 + B8B4EC9246AA6F0A31CD3E77ACA98462 fileRef - 6FEFCD63C992EB9E58DC9EF3C3A8CC96 + 572E8DD7016F54AC5930B57774BD202C isa PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - D7A237E23609DEFBE32AD2DB902A4F95 + B8ED0B47606233B06D40C67B229579BB fileRef - A1A383B33727CA4B2BB2D017E4DE5C98 + 452D0249CAD2B9C52380D1A6E2739795 isa PBXBuildFile - settings - - ATTRIBUTES - - Public - - - D7FB996CFC1EF4D5ED2920E2F361F0E1 + B92DBB73974D0B8A5FF94297CB7FD6B5 includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.h + sourcecode.c.objc name - GPUImageCannyEdgeDetectionFilter.h + KSLogger.m path - framework/Source/GPUImageCannyEdgeDetectionFilter.h + Source/KSCrash/Recording/Tools/KSLogger.m sourceTree <group> - D8360535213FBE1BC4E5C184652FB666 + B950E3066023E46649F8702D3A9FB173 - children - - 820EBCF32A44C7144CB4A127B7CFCBD9 - 84127C59C36AAB508556B9B2A44C0053 - 97D8628F350619CAAEC1BA86A20C1C8B - DEFA4DA5633F058BA8792E7F6CD01099 - A0903F82A32FD898712B73804E7D16B0 - + fileRef + 98E9E45174549D5E6C2498C615598D31 isa - PBXGroup + PBXBuildFile + + BA6428E9F66FD5A23C0A2E06ED26CD2F + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text name - KSCrash + Podfile path - KSCrash + ../Podfile sourceTree - <group> + SOURCE_ROOT + xcLanguageSpecificationIdentifier + xcode.lang.ruby - D83D17D8FB9FD3BE17842369D3E681AC + BAFD651E1BB5AD426DD2FA2DDDBCA52E fileRef - B5AFCFD6E106F74936B27A963CC24A38 + CA790B71E4C200E021368C9CBFB25EF7 isa PBXBuildFile settings @@ -15409,44 +5560,52 @@ - D84361026C339629F09B8B4E9120C96E + BBBF7089189CB066A35D16D094BE7BC7 - fileRef - FF7FF9ED99DA84E72B432A8F5D556476 + includeInIndex + 1 isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + KSCrash-prefix.pch + sourceTree + <group> - D8A64AF7A4577A15FEBEACFF8BD6B5A6 + BBE9EAE7D5813F7762C443D0D5C6DAD7 fileRef - 4355B550CFD53BDB6632B00476EB72FC + CB6753D9BC5C26D0381512F7712E8169 isa PBXBuildFile - D908808FACBF42D36BBF8C426BF1C57B + BCACF1715D0C53732223C1F0911C5BAA includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.objc + sourcecode.c.h name - QNHex.m + NSDictionary+Merge.h path - HappyDNS/Util/QNHex.m + Source/KSCrash/Recording/Tools/NSDictionary+Merge.h sourceTree <group> - D93FA5316FBCF9E2BB6855B6385FD325 + BDFB8DC3F2C2A2066ECF92F2D0A50704 fileRef - 28ED4A88193818ED6A8E741A0C275DBC + 1D239D3E6D0A2DF478E1F220F45F76CF + isa + PBXBuildFile + + BE67171473D6DAD09D361975E0C990E5 + + fileRef + D4DBFC952FF91A41ECC536EA78718093 isa PBXBuildFile settings @@ -15457,25 +5616,37 @@ - D95EAD68D37A0FAF6867631F793BCDE0 + BEC6C7377BFF43A0C0EAF6D966EB7506 + + fileRef + 3819364451CA1998E1A4EF3769B3656B + isa + PBXBuildFile + settings + + ATTRIBUTES + + Project + + + + BF1B29D465EFBA3AF56454BAD3E28A60 includeInIndex 1 isa PBXFileReference - lastKnownFileType - sourcecode.c.h name - PLMacroDefines.h + KSDynamicLinker.c path - Pod/Library/include/PLStreamingKit/PLMacroDefines.h + Source/KSCrash/Recording/Tools/KSDynamicLinker.c sourceTree <group> - D975D7F93AF184BB1E68E5F43A3EB85F + C07C5E1138112DF79B633F9AE1E2024E fileRef - 8D261F4966F34330768723403A925E0D + B83C863490799592A61DD4EC96345C19 isa PBXBuildFile settings @@ -15486,7 +5657,7 @@ - D990CC93A416200635478D0B48C770E2 + C08BBF7CB7A78C5979CB958A38422F71 includeInIndex 1 @@ -15495,32 +5666,41 @@ lastKnownFileType sourcecode.c.h name - GPUImageGaussianBlurPositionFilter.h + KSCrashSentry_Private.h path - framework/Source/GPUImageGaussianBlurPositionFilter.h + Source/KSCrash/Recording/Sentry/KSCrashSentry_Private.h sourceTree <group> - D9B763BBEA3ABAD016EB1F869773DA42 + C1730FE58756342D4C9DA2C2434D7A79 + + fileRef + 02A2D24C8A22A2855FB051894E3195FF + isa + PBXBuildFile + + C25859BD8824F2D0932A7AC9D5C2EB4A fileRef - 2820806159AF08038E20C7BC162848A7 + FDC3FD5EBD8F9E0DD8A891C81E92A707 isa PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - D9D5F4DEBF510D55A4800992A8650F3F + C2997D3A3C5A1335454780269CED5C64 fileRef - 631258C3505CBAF8EE6CDF5A08217EF5 + 8F433BC4B6B27E2678EA5E39F83ADC54 isa PBXBuildFile + settings + + ATTRIBUTES + + Project + + - D9E8F5E570681DDD0CAB94032A33A10F + C32C267C3B2014E7A94CED184FE875C6 includeInIndex 1 @@ -15529,41 +5709,35 @@ lastKnownFileType sourcecode.c.h name - GPUImageDivideBlendFilter.h + Demangle.h path - framework/Source/GPUImageDivideBlendFilter.h + Source/KSCrash/swift/Basic/Demangle.h sourceTree <group> - D9FD081816CF09A146D2BFBCA7C3CBC3 + C3E8CD93245251D32D7D5CC3B01A1181 includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.objc + sourcecode.c.h name - GPUImageColorInvertFilter.m + QNRecord.h path - framework/Source/GPUImageColorInvertFilter.m + HappyDNS/Common/QNRecord.h sourceTree <group> - DA335841F6E2C267CD27B5C7DEFFD43D + C4020B78AF4623E4E0EE8AB67237E0A4 - includeInIndex - 1 + fileRef + FB842089FFEB75C83EDEF026F34B149A isa - PBXFileReference - name - KSMach_Arm.c - path - Source/KSCrash/Recording/Tools/KSMach_Arm.c - sourceTree - <group> + PBXBuildFile - DA86515BD79B09EDBB74DD7867A483B8 + C45CED0928C6D802E4DCF382336D77B0 includeInIndex 1 @@ -15572,27 +5746,13 @@ lastKnownFileType sourcecode.c.h name - GPUImageThresholdSketchFilter.h + KSCrashReportVersion.h path - framework/Source/GPUImageThresholdSketchFilter.h - sourceTree - <group> - - DB28C527149A9AE2573DCF3DE3E5228E - - children - - 82D08EC2DE139C4C99E7F3410C84E1AA - 0F75B3522EB3632D9F24504AFA8810AC - - isa - PBXGroup - name - Alert + Source/KSCrash/Recording/KSCrashReportVersion.h sourceTree <group> - DB953CBBFB105D0C123B68E889C7129B + C47338DC04F7F181A7C0D25286F0AC25 includeInIndex 1 @@ -15601,71 +5761,49 @@ lastKnownFileType sourcecode.c.h name - GPUImageAverageColor.h + KSCrashReportStore.h path - framework/Source/GPUImageAverageColor.h + Source/KSCrash/Recording/KSCrashReportStore.h sourceTree <group> - DBE8F2B284BD7FE7975C46593CDAC655 + C4A764A117E9C166FEF5A6739B3C0977 - includeInIndex - 1 + fileRef + 4DBBA9B20315903FA594C7E13A826C89 isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - QNHijackingDetectWrapper.m - path - HappyDNS/Local/QNHijackingDetectWrapper.m - sourceTree - <group> + PBXBuildFile - DC1EDCB2F0D7F0E2CF706651A8A7DA6D + C5311B346ED3865015653FDCA4CFE075 - includeInIndex - 1 + fileRef + 6122C16FAC90E4190B164E2BBD35E624 isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - KSCrashReportFilterStringify.h - path - Source/KSCrash/Reporting/Filters/KSCrashReportFilterStringify.h - sourceTree - <group> + PBXBuildFile - DC39FCBF566EB870672C37AB60D24F8B + C5709F2424AC8F81BF648FEC4C1CFAD3 + explicitFileType + archive.ar includeInIndex - 1 + 0 isa PBXFileReference name - KSSysCtl.c + libpili-librtmp.a path - Source/KSCrash/Recording/Tools/KSSysCtl.c + libpili-librtmp.a sourceTree - <group> + BUILT_PRODUCTS_DIR - DC474EA85AED84D841AF0FCC2F50E5AC + C57C689128CAADC8FBC2853A107818DA - includeInIndex - 1 + fileRef + FC12E471BFB3E93A3888B54391D46569 isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImagePosterizeFilter.m - path - framework/Source/GPUImagePosterizeFilter.m - sourceTree - <group> + PBXBuildFile - DC6D037E2D422A242F54831415DE2E58 + C64B374941256CCC388797A4B5B6502A includeInIndex 1 @@ -15674,16 +5812,16 @@ lastKnownFileType sourcecode.c.objc name - GPUImageDilationFilter.m + KSCrashInstallationEmail.m path - framework/Source/GPUImageDilationFilter.m + Source/KSCrash/Installations/KSCrashInstallationEmail.m sourceTree <group> - DC8DF1E31C56E8F2BF98C707C69B525E + C672A24209E5C2D6CD4D89DCD863D3B7 fileRef - E0DB74E9B291EA24204505B63733BAAE + A880D6FCC9E1288BEF68F0771973F497 isa PBXBuildFile settings @@ -15694,19 +5832,7 @@ - DC8EF2714DEEA211C54905E8C08F6EDA - - fileRef - 500A9FFC986DD070FA3EE019206CC16A - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - DCAD82F94D09169DAF84F7B3E73F6AF8 + C68874D22FE9CD4F26DB4801888B847C includeInIndex 1 @@ -15715,208 +5841,30 @@ lastKnownFileType sourcecode.c.objc name - GPUImageDirectionalSobelEdgeDetectionFilter.m - path - framework/Source/GPUImageDirectionalSobelEdgeDetectionFilter.m - sourceTree - <group> - - DCCF298E9F2DD0441A356BA5BE07C308 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - KSString.h + KSCrashCallCompletion.m path - Source/KSCrash/Recording/Tools/KSString.h + Source/KSCrash/Recording/Tools/KSCrashCallCompletion.m sourceTree <group> - DCEDB56DC444F1D13C8A53D68E33C33E + C69A821CED2A5685603E2C61ECAE9989 - buildActionMask - 2147483647 - files - - BD895D030B1E94116216074C6D439683 - 6F5F3C929F254EF033D639D322DA6558 - 4EDED25E1CF8193583E96246B4D3ECCC - E3BFCCE25355037FDE2D5C9814334186 - 29BF700F030F2FB60D20E09D80D03EAA - 365CBAAC4500AB22F6BACE8E6708E556 - 645FB25B6AF90E1666652C47FC39F415 - BB16373261F0F78FD6425740CCDBF8B0 - 8650AE0156486320BD60A2CDB6003CBC - 7BA606BDDBCF9DA9C74C5F5B6CAC08AD - 51E37A9183A2CD056AD50B9FF96BE2C8 - B6C59CA9660141DD622DC033F05E9EA1 - D84361026C339629F09B8B4E9120C96E - 896C4A9A7CB7747B35022A11992B398A - A2C05A8201DA21305BDE4212AC66175B - 207719CEB9D2C2FE0C1A52F863A5E808 - 6973E1E07BCFEF6CEF42C11B8AA75706 - 4EB24AA67DFE55A657AB2836054A77AC - 991A976FC15010AA4D511E7B5DE2E19E - DEC83719D6CF3B27806489EF3E7A44E1 - 9EAF408D8C385CD7956FEFF138ABF870 - 4CC92C73012EB53B113263ECC2F5D82C - 06AFB28EF2382C1C1B53637AF320A7F1 - 1F0090117B1DF9B48670BE500F02FC1C - CEC257B4ABA6CFD6F71A003A055C2F05 - 7062E0ABB660735A062FBAC488E07703 - F423C176CC7DD08DD781A3544176048E - AB31AED3878D2D5BDB149CD3B1C35559 - 0F5C30D19E66C617B3327742A4F42803 - 85DB2ACBD12E700050FF9650133BE187 - 4169E7B4B14155D74B84857473F729B4 - 2B6BFCBDF0C393329A1457970B3EB32D - B1CAEFAF13EBD518C358BE027AC73C40 - B44345CCD7BCE659FB5874DF2B110F36 - 526E586377DF0B224728CD0A0E890811 - D31FD6B1AFB7C29D137885CA13E855AD - 5E66EA76C8A5C0E48113C2AC6B9C210A - BF3FA9A5BA290F8C9A1383279E0603E5 - 8270D87901068D7FFCB38EC2D6175C57 - B2FD34655D08D8A2FBF0267E2BECCD09 - 4D6E5F9A6227BEFCF78FB83BE893A1AA - BF42D47BA97EB7F1B422C919BB9A8CB2 - 65301885F9094F153CA19616F9E5A10B - 1AF8DCD5AE0531A3BCE093BF7C602322 - 95F606AD95B4990F2F0C869D2B8E60ED - 9A4C9CD2FBA719248B2EE733CBF3D6C8 - 8E54783F214061B516C87C931169F9ED - CADAACE473538E9055735E6C480420D9 - E7FA51791CCD8EFC41655145BDE3BA93 - D0858D878BD7051AEC8CB3024D4BD638 - D19E009506B17151E72115BC88A9628E - CD31C1DC1E095B7D5575BB0744647516 - 816E935836F8C6A86F627DF4130773FA - 85BD980E58016E21A0266AA862667475 - 555505BC4D2FC3B080E26C2E8B6AF84B - 81878C4369469F33372AAF4907417AFE - B8D58314E6BFE4123D76F2CE2C5145B7 - 96CD75528FAE32B60C511B88C338CE01 - 76504FBCEC7E0C1F8EB3A5B08885174B - FCFBCEC871E43DFCE4CD9FD57A2E85AD - 176D5B29E088E49A543B7AB63C4F0840 - 82BB6D6F348CEBCF64B3156803F8F9EF - 05F6DC7FB12E2B82C2E755D2F43F5CDE - 7AA3E3A3B4ABB83CFACB184206A7EFE1 - FAE12B8F80773EB51F2EE501027915E1 - F9DC7533C51D25AA66849718039A13E2 - F57078DD8026F7B5A7A69C821745FA90 - F6BCA4EA37A7FC4BF56CDCC7E76C40E3 - 48407C7F0E50576AD705C50C52E70627 - 02EA67B6FFE9280DD67D5AC6D4796AA0 - BB1230F1B1613D374AEAF15BD7CD9954 - A5053B89A18AB30839BAEB8DE8EBF5E8 - 01CFCAB496272154BD35A16B8489C90E - 4FECBD40389C035DD0012AE53BFCC324 - 8DBB62F9E8A771CF56B9E4843BE93A48 - 3F1D84B88CDD5FB70DABB83652458EEB - 4B2819E29D680D27D246F89D95CBCD3A - 466B9B2F77924580242850A2125274B8 - 43851807871E2B16D97D9057E267981D - AD1C29AFB321F9B6360864083EB98698 - 9AD5086F972F74CCBE02621E23BB3DB1 - C67BAE8902A7A6EF8CB13A11A404EC65 - 6A4E24B67F6B6F1FD3E2C9CEB55ECCE6 - 5C5D3B0148542B2915EC152664DFF76C - 35C6DD07A53DB76D2C24E042B93E20B1 - CE4199395A07CEE32A80FF802D68F13F - D492F90A0A202DD6321675A2A2203C96 - 7BD3F1EAE832407A81328635B48794D0 - E9DB576CF8EA753F630097480270C363 - DC8EF2714DEEA211C54905E8C08F6EDA - 89A80BFE76A39FD811B0D1BA13E0499B - D592906E8183B13B288152C9CA0D529A - C88197D03E280C52AEA4C5022EB0FB82 - 0753C1864139F1746D1A5C993BDB4BB4 - 399AFC7CE91F08A6FD5287FA4848A53B - 95629A55D898988FC5EB9066CED634CB - 7478D4B41B8A859EF5EF670BA7D74171 - 162F0CDC4FD3C4C8FC674B8FACFCA0D2 - 24DB00A1CF027B05D37F3079FFCC4AF7 - 3B9E011111F2B1AB28C482CDF619196A - 95E0BF770AE54038704A0299B3031872 - 7CC2985EDB8DEBC29964D25BF19462EF - 590BBA3731C33F4C4A8541079EEB6D35 - 2A8852AD0620B232223A1A9738242696 - 506C8560289F7A2144691123EE17AF55 - 2EF93A8AEE946C1A56112EE18A29AEFA - E2DD62394D6D977459F57CCA6A31821F - B2A2E310465D4F3953C5FA07C70C98B4 - FBFCCCA70F3D8793BB3C77F32E733922 - 784930B2F938573A7D2B150ED986C5F9 - CFC118C640A7F3B4B0A81D21E9CE9B47 - D9B763BBEA3ABAD016EB1F869773DA42 - E2D85BC8094B7345E72CD502B59E8C4D - 79D898C59BA5AFC30D7BA26AF3BEE2DE - BAD7C381DFF9B9B603E029F245C84615 - 84503F35B34D28B00B726552684D492C - 0BB46F013B0237DDA8ABDB65D688242C - 2FBFABDB9D519E5720812D933829257D - 5915D23A2711BDB29433466D73772A7D - 5E9CFCB6C27F57ACA0B469BDD26D0CD2 - BC1F509C7EA7D75F2CA7DA0682C7006C - 1EFA0C24ED0810A9B0BEC11810A9EFE7 - 355FF9B1F193FA3DA051046D4C640D32 - C5E52BC32985882768733B8D881C50D1 - 142004FF690DE311593786754131CF72 - CC5405E24A751EB82B94486428DE81D6 - 036C0A9668F773C8124E6E25A6DA5EFF - 1BB3CC419381B9A7BE12BF7E191B4F51 - 739AA70298B55C090917C67059E76BBA - 3C8192DB3CDDCFCFA2C95F5E7C1EADEC - 17B2557C4DBAB673B3739883F2DAE247 - 81F952081A5B1802D41528F701AD89D6 - 21DD1C3C0127BDDBE5E28FEE1A45E5C0 - 6023B7C276B66E6A6A342BAB767F2123 - A03D4EBD58A86F27055E57727E9A7F9E - B250BEAFFCA727EA6C1A9BB33028ACED - 4BA8DFF340B3BEEC55AEEB066F7E9410 - 09357F77CC4C768C91FE4321B9A5B26A - E0F79C3050D772895B3D248A7C14252C - FF42C8A2F1CA6E5FE42CD1A504E942CC - 233C57898EC01A6505DED928A34D0F00 - 13C37293C390C25FEBA543E7B86C0764 - 1945FD8F0F03DAACA2398E9E14B1B417 - 3DD39B9317ED0955B40FDE6FB0533C3E - FF3CA2586DC6389AC7D97E6814541799 - 0B0A46C0137491A5D31E66A0667E8198 - A18B1725D91EC59323DF6E1AD32BE257 - 70B945562B2AF99DE7D0957059E9E73A - FE83BF56C567756C21EC2B7CE62A9E2E - 83A9D8C98E9654494773237748835FB6 - 6F172712D5C1E1296ED4E355E12B8D17 - 2B911AFC36AA19C25B6783CF321D9D30 - B546249124A687E93AD774450E357DAE - 15D289D02AA8B8B413E3A1A39DDD18C5 - BC94B9441E9D2BA4FD86801CE168E757 - 932ED160BE0383A471BBC772F779CFBA - 579E1E46A7B7CACA12568D48E6140EC2 - 1C5EBB36901B5E0F59C9DC0C4DB42711 - E86A276844EE6CD944E9AA0A7F747C40 - 431AD92997373614E0ABA8F435617748 - 1C1902A08DCCC754E047D82EC0302F72 - 8DF2AE3FE8620124EFDBF2A3682B11BF - B84F9B9933525B36D7008008A2BB3529 - 7AC70375B391A9837AFAD85359820059 - D74B9E7FB780EBBAAAEB699745ADAA65 - + fileRef + 2C07A29AE69C875ED3CDAF0F19383383 isa - PBXSourcesBuildPhase - runOnlyForDeploymentPostprocessing - 0 + PBXBuildFile + settings + + ATTRIBUTES + + Project + + - DCFD04D29019791AA42366AB73143BFD + C6C05B79D9A0165A7C919D4CD6E2E2E3 fileRef - A0DD30814F20C6E21C35CFF0526E63AB + 937CE426A3093A1040394D15CB395F35 isa PBXBuildFile settings @@ -15927,22 +5875,22 @@ - DD9CF300F20558FDB0AABFCD76F5625E + C7B187DB6C1CFB94A544087BE70CF342 includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.objc + sourcecode.c.h name - NSMutableData+AppendUTF8.m + QNDnspodEnterprise.h path - Source/KSCrash/Reporting/Tools/NSMutableData+AppendUTF8.m + HappyDNS/Http/QNDnspodEnterprise.h sourceTree <group> - DE1EB68B92000894EDD16152AAEF9EF0 + C7DCD350409B78C1371DE5F0015A5D5A includeInIndex 1 @@ -15951,74 +5899,161 @@ lastKnownFileType sourcecode.c.h name - GPUImageLaplacianFilter.h + KSCrashCallCompletion.h path - framework/Source/GPUImageLaplacianFilter.h + Source/KSCrash/Recording/Tools/KSCrashCallCompletion.h sourceTree <group> - DE22D66FAD5E945BF296A8064EF334D9 + C852AF4EFDBA90A69AF4085F493B98EC - includeInIndex - 1 isa PBXFileReference lastKnownFileType - sourcecode.c.objc + wrapper.framework name - GPUImageSketchFilter.m + Foundation.framework path - framework/Source/GPUImageSketchFilter.m + Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/Foundation.framework sourceTree - <group> + DEVELOPER_DIR - DE30A3580954B0D1CC70C4934322F2DD + C88AB78DD910AA723BD79164EB7CF3D4 fileRef - FA928403614B76C71BBF7F68A94F5232 + 5F523C4B5C7D68CEBA1D0C0581306F5D isa PBXBuildFile settings ATTRIBUTES - Project + Public - DE6BB7B846C1A43AC489DBA998D89570 + C9D8909CD1BB634C511B7F635B884953 includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.objc + sourcecode.c.h name - QNIP.m + KSCrashReportFilterAppleFmt.h path - HappyDNS/Util/QNIP.m + Source/KSCrash/Reporting/Filters/KSCrashReportFilterAppleFmt.h sourceTree <group> - DE6E5415A5DA7E78B081169F12105E3D + CA1A032B0E87DEAFA1C720698C71900E - children + buildActionMask + 2147483647 + files - 34535A76829A4DEA9EAC85583B2A002A - 55728F82ECB7E3ADD705B328329303FF + 0AAC422034A0DC247261945A3D9C2C8C + 82B1F7DECBD0EDFD842E1D5B866CE378 + 47A8546B1885208B44A30FA16B921D89 + 94AD6E90BC0E7E297DC143BFF05AD832 + 6901638D4E4661990E30C49AA467DFEB + 4047B74704DBFD526F41AB4B9E48774C + 67AC61A270C7E894F1CD5667C41E23D0 + 9150372647BA1780BD15EE36B9F5D4A5 + 063D2D3647A9F5A5EB0A037AB1C44FEE + 931E315DB56EC7307D3E3799F68CF1DB + 6807DAF1AA31ED744B3298FEAE2CC427 + BEC6C7377BFF43A0C0EAF6D966EB7506 + 0D20FD1EB1CAEFB07291F7814934096B + 28BF349D13AA274BEE9E794AB9DD78F1 + EC9CB2E6B3EA7679F855331546BF0F17 + 38FC522671F1FCAE1A0A96F044E3846C + 8548BDF5160F9597031EFEFD46935FF1 + 81F3D0BA797A3AE7C0679260998CF4D8 + 39EDC52AEFCEDA5BB47716DA698B1950 + 8C5FB8F427702BA76976A32988D9625D + 28E03E16731B812EC33497D7FC59AA49 + D7A237E23609DEFBE32AD2DB902A4F95 + AC10457DD3A122C0E973AEF17388820C + 4D8609EB689B9FC5F4474F7F38A317AC + 644C377381458730FCA19CF74C268B4D + 988BADE2956AEDF36E085A753F87083A + 8C0AA8199DC44FAE432D719510E02586 + B2CFE3BE8386B2B635A9CBCA2E6FCD6C + 6BAA2E2D1719BF266313816C9E93612F + 810C982F43430F055E482D839B656DC1 + 1DD32DA67114B71F4D8ECC698ED19639 + 05A72392577F649090F73A642D766CDF + 8D4B0E83F507CA646E16AECAE63AB08E + 1D8F8BB230399E06763B41CFB509DCF4 + 3CB33227F8436D223A9BAA94D4EE3D53 + AE04BCAF5B6C30B4545FF847AC8C7EFA + 6CAC5DEEAA0514E6E7F59C6CFF59A2A5 + C88AB78DD910AA723BD79164EB7CF3D4 + FEB06886753152810816408BCF5EB636 + 86FE79EC69D9F6C1ACD57641E0069D1E + 4F62C1BBC8273FB54C8CAFBB99061117 + 00FC81AA910E690E411E69B34FAC2FDC + 90169C817DED636388514A58128D689E + FEC3100E22E424CF2043615E5F422052 + 85F70911B8D8C22F234BBBD8D2012AA5 + 5658DCB3B12C0F2A4D4C50977EE75722 + CF9834DB49221047637FD6626EA93FF6 + F95BF2904AC7127F6CE0D83A6A66F517 + 32B093D6A9CC44F7E262BF1E99F412BA + A50EF64C55E26CFE79DCD551D9A81A44 + 67A17433C9AFE8486B65F86970B7C435 + C6C05B79D9A0165A7C919D4CD6E2E2E3 + 540CD03258D73E25C77689F9042BD6BB + 0676209BA375FCFAC64363186B627D96 + A6C872FEC9B4511D4B31CFCAD45F120A + D6EB65602B86776685CD533BA719F75D + 12F2259C1ECFECB1F4DE0B73DAD338DE + 806D76BF5FCACB89D3D9A8F02D0B5072 + 1E7F8E001CED4EE74B3210D32064F1A9 + A0A6350BE12E403194CB8F75677B9196 + 0FAF650F4298B10760F0E2F671BAB4EC + 46A7697C447617F43B7EE2BB22F62434 + 1AB43CCB8956C3F14977B75EE33707EF + 34FECD939AC911AF6A05B461AD2C1F5E + D93FA5316FBCF9E2BB6855B6385FD325 + DE30A3580954B0D1CC70C4934322F2DD + 80E0969F123168A6FE113378C6E5AD4B + 57541CA0FE35976A44C81A79315E1FCB + C2997D3A3C5A1335454780269CED5C64 + F9AACFED5FB0FAE71D5A5D38ECDF1DD4 + 74B4FDB0C6FDE18EDB0D33F627F191B6 + 4A26D9BBBA236A59131DED87FD10CA0C + E30E51EDFA4682CBEDE88834A4892E6F + B07C000F2ED16BF9344EB9622AAD7EF1 + 45756F502953DCEA5C0FCCB92FFBAB0A + C69A821CED2A5685603E2C61ECAE9989 + 48722B0625674F8BDB3D48591A3398E4 + 29C8F907EB2A36ABC9955185255A060D + EDDCB9985E765D7B39F992907357CAE6 + 62A67CF32ECC3C7AB2698F1F226929A7 + 19A1454720A07697C6697EBA394A33B9 + BAFD651E1BB5AD426DD2FA2DDDBCA52E + 93ECFF9D9936CEE7539DC89169A11E25 + FBEB06C4573020034E8EB792346D63F5 + 2698FDF76B3B18DFD42A939C9D782052 + 515153F8D784FB97CEA0B3CA439ADB0C + 02361FE8DA7908DBDD6F7850C4EC7771 + CEC5D17EA69344CD96DF1FBE1FCE25D2 + D519C1D1DEF15D09E4AF2E43E87090A1 + 515BFF8C5DA33A9C8440F226B08F21BA + 57BE0671CEE88A84BA5CEBEB2C0D0FF1 isa - PBXGroup - name - AppleFmt - sourceTree - <group> + PBXHeadersBuildPhase + runOnlyForDeploymentPostprocessing + 0 - DEC3EC9E868D1D597DBC703F390D7F2A + CA3826F28C2830700CDDDE4AC1AF7168 fileRef - F9D88523BA387B62C9478404DBD24798 + 21F2E26DD4F9BEC5FD6ECC058F0CBE06 isa PBXBuildFile settings @@ -16029,120 +6064,63 @@ - DEC83719D6CF3B27806489EF3E7A44E1 - - fileRef - 92BA75B3FB5E9B772B8B15CBCBB53766 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - DEF35295A0BF84FCEC0A86E045DA312E + CA711130EED258407FAE5D61C524D198 includeInIndex 1 isa PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImagePerlinNoiseFilter.m - path - framework/Source/GPUImagePerlinNoiseFilter.m - sourceTree - <group> - - DEFA4DA5633F058BA8792E7F6CD01099 - - children - - EE0102D22BAB31225CF7C06DA40C4036 - 06F1904E7D8A87678A8E6B553639B9D4 - 4B385CED62DD70779740D493E6CB9ED6 - - isa - PBXGroup - name - Reporting - sourceTree - <group> - - DF97CF541DBFF0ADD47D503793B2CA1A - - isa - PBXFileReference - lastKnownFileType - wrapper.framework - name - MessageUI.framework - path - Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/MessageUI.framework - sourceTree - DEVELOPER_DIR - - DFB50BEF61D6A7D6C1EA4CE8A3BF6190 - - children - - 073687B9C05D6EEDE6D1124E55998A5F - - isa - PBXGroup name - include + Demangle.cpp path - include + Source/KSCrash/swift/Basic/Demangle.cpp sourceTree <group> - DFC6F9C8BD399C99F9B6D707BDD35483 + CA790B71E4C200E021368C9CBFB25EF7 includeInIndex 1 isa PBXFileReference + lastKnownFileType + sourcecode.c.h name - KSCrashSentry_CPPException.mm + NSError+SimpleConstructor.h path - Source/KSCrash/Recording/Sentry/KSCrashSentry_CPPException.mm + Source/KSCrash/Recording/Tools/NSError+SimpleConstructor.h sourceTree <group> - DFCCACD89E81C587D918490F2C07F72F + CA90334591A4B0C2B025764A002C3305 includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.objc + sourcecode.c.h name - GPUImageScreenBlendFilter.m + rtmp_sys.h path - framework/Source/GPUImageScreenBlendFilter.m + Pod/Classes/pili-librtmp/rtmp_sys.h sourceTree <group> - E0AAD18CB3F21200D283C3A56394844D + CB6753D9BC5C26D0381512F7712E8169 includeInIndex 1 isa PBXFileReference - lastKnownFileType - sourcecode.c.h name - Casting.h + KSSignalInfo.c path - Source/KSCrash/llvm/Support/Casting.h + Source/KSCrash/Recording/Tools/KSSignalInfo.c sourceTree <group> - E0DB74E9B291EA24204505B63733BAAE + CB86C8C38142917F38EF43B2082C6977 includeInIndex 1 @@ -16151,161 +6129,86 @@ lastKnownFileType sourcecode.c.h name - GPUImageKuwaharaFilter.h + AlignOf.h path - framework/Source/GPUImageKuwaharaFilter.h + Source/KSCrash/llvm/Support/AlignOf.h sourceTree <group> - E0ED4E6679B27D1581BECC38A2D750B0 - - buildConfigurations - - 41E82233D7BE68D8C28215FF93E0BEF3 - 2FBB6E4DCACD222DE8553B1585C6747E - - defaultConfigurationIsVisible - 0 - defaultConfigurationName - Release - isa - XCConfigurationList - - E0F79C3050D772895B3D248A7C14252C - - fileRef - FAB852361583D00A2E0DD7EFBD92B355 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - E109D7867A7BDB60AF686CEE2619B0AD + CCAE8545268600AACBE94C00AB13B618 includeInIndex 1 isa PBXFileReference - lastKnownFileType - sourcecode.c.h name - llvm-config.h + KSMach_Arm.c path - Source/KSCrash/llvm/Config/llvm-config.h + Source/KSCrash/Recording/Tools/KSMach_Arm.c sourceTree <group> - E12E0CAF76C72CA5DC6EE7F36E0992F1 - - fileRef - A7DEA3CCADC2AE7773111DDE2B904215 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - E130BAF885CE9F63C6337756B2CD89DA - - fileRef - 89C5D5F58B4C3E642123062B6CE8B347 - isa - PBXBuildFile - - E1A44B62132BF27371F4D8C0E81738B8 - - fileRef - 0BA67DF9A2F9DE2570AB3E64008D70D5 - isa - PBXBuildFile - - E1C8BBD709EA58EB1EFBAE6C2CDCAB1D + CD59A65E16D95E57C6143B69F2C3C889 includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.objc - name - GPUImageMissEtikateFilter.m + text.script.sh path - framework/Source/GPUImageMissEtikateFilter.m + Pods-PLCameraStreamingKit-resources.sh sourceTree <group> - E23C3750B13C0C02EB8550A2B6A07078 - - fileRef - 159F09C556CFFDFB1AC3A2934BE81013 - isa - PBXBuildFile - - E279FCA9B6F87AAC42E3C77473144713 + CDC5842FC0DB3C0D21F03287CEC277A7 - includeInIndex - 1 + children + + CED3B5A78FEC2DFDEE61C9E3C9336C56 + 4DBBA9B20315903FA594C7E13A826C89 + BBBF7089189CB066A35D16D094BE7BC7 + isa - PBXFileReference - lastKnownFileType - sourcecode.c.h + PBXGroup name - KSCrashReportSinkQuincyHockey.h + Support Files path - Source/KSCrash/Reporting/Sinks/KSCrashReportSinkQuincyHockey.h + ../Target Support Files/KSCrash sourceTree <group> - E2D85BC8094B7345E72CD502B59E8C4D - - fileRef - 958E6A52D32061DB5D24A492D208F762 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - E2DD62394D6D977459F57CCA6A31821F + CEC5D17EA69344CD96DF1FBE1FCE25D2 fileRef - 48C345B96837948910EBD823B6B69759 + 96B66177BA8B9146DA4FB8FBA2DBC234 isa PBXBuildFile settings - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 + ATTRIBUTES + + Public + - E2F8B468CC75C2FB12B563CCFAF600C0 + CED3B5A78FEC2DFDEE61C9E3C9336C56 includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.h - name - QNDes.h + text.xcconfig path - HappyDNS/Util/QNDes.h + KSCrash.xcconfig sourceTree <group> - E30E51EDFA4682CBEDE88834A4892E6F + CF9834DB49221047637FD6626EA93FF6 fileRef - 1C64B847A140EE5CA8AC53B782D352B0 + 4BE06A4122AF24BABFF5A41EC382724F isa PBXBuildFile settings @@ -16316,113 +6219,69 @@ - E35FE4E1AEEB9A2BAA210459DE58E0D7 + D042550E27A3CBB2CBBF2B9F26CAFBCD includeInIndex 1 isa PBXFileReference + lastKnownFileType + sourcecode.c.h name - error.c + KSCrashReportWriter.h path - Pod/Classes/pili-librtmp/error.c + Source/KSCrash/Recording/KSCrashReportWriter.h sourceTree <group> - E36BADA9F6370D253690571B501DABF6 - - fileRef - 4BE2D174AAB51D204C2E7DCE8A4B24DC - isa - PBXBuildFile - - E37A7949CE0C57F40BBA10B6A1A1B672 - - containerPortal - D41D8CD98F00B204E9800998ECF8427E - isa - PBXContainerItemProxy - proxyType - 1 - remoteGlobalIDString - 0DC8BCC337CBE1F795C675E87C3D1B3E - remoteInfo - HappyDNS - - E3BFCCE25355037FDE2D5C9814334186 - - fileRef - 604DABB4530327EE4172349624D7830B - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - E3D14B0AE929FEB7B6C7505A3B54EB26 - - fileRef - B74E6A82A202F549B8AB4AB0597A034F - isa - PBXBuildFile - - E4B381663105ADBFEFAEFD1DBC9802B6 + D14BCA28A88A03D224BA4EC31712B074 includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.h - name - KSCrashReportSinkVictory.h + sourcecode.c.objc path - Source/KSCrash/Reporting/Sinks/KSCrashReportSinkVictory.h + pili-librtmp-dummy.m sourceTree <group> - E52CB36F6FB5B22D80D3ED5B8994AFAA + D1FA7FBAAA8D7461AEDFB04701FA4E53 fileRef - C9DC6DF03847BB749944415558D277DD + 979E8AF22F2588CA6703323BD5454C3B isa PBXBuildFile - E5ABCAF3A4737C12FDE44477CF0C4994 + D27369D06E1FCD04644F0A51A4B7DE95 - includeInIndex - 1 + fileRef + F87B7F7B561012716FF33D58279FFC3E isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - QNDomain.h - path - HappyDNS/Common/QNDomain.h - sourceTree - <group> + PBXBuildFile - E5AF0CE76749CAAB29C4E046059E35A7 + D279890DDF80F783978B00A03538569D - children + buildActionMask + 2147483647 + files - F7AC648B0C0450A86D84CB660B86ACA0 - CCF8F7EE753D5D7DB7E4A4482695A89A - 438452E287D667FEBF7861442F84C2F3 - 32FA81DA8F9D8CF28693853D7CFC9284 - B0D2688C6D2ADC89BDD43CA7B0095EDA + 3CB9C79E9C468DC2452A567CFEA63549 isa - PBXGroup - name - Products - sourceTree - <group> + PBXFrameworksBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + D2BFAEDBD8058CD7676DA2BABAEC5CEC + + fileRef + F2EA6A0AC4A13E0E1A1B5E886EF5135B + isa + PBXBuildFile - E5E455A352AD2807BE9E3A80DE8B532C + D2D3F2477FA751857D5D5B0A7963EC9F includeInIndex 1 @@ -16431,58 +6290,74 @@ lastKnownFileType sourcecode.c.h name - GPUImageCropFilter.h + NSData+GZip.h path - framework/Source/GPUImageCropFilter.h + Source/KSCrash/Reporting/Filters/Tools/NSData+GZip.h sourceTree <group> - E6007C84F87EAB1F04BC9E4ECF7DC033 + D37C6388B712549C11FDFE2AD85C1600 - includeInIndex - 1 + fileRef + AB989C0055B2D49B0E583AF40B655E4A isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageHistogramEqualizationFilter.h - path - framework/Source/GPUImageHistogramEqualizationFilter.h - sourceTree - <group> + PBXBuildFile - E61300BD2988486AA4DB476E6133A2E0 + D417DAF346F5823F67C8803E533DD64B includeInIndex 1 isa PBXFileReference - lastKnownFileType - sourcecode.c.h name - GPUImageMovieComposition.h + KSSysCtl.c path - framework/Source/GPUImageMovieComposition.h + Source/KSCrash/Recording/Tools/KSSysCtl.c sourceTree <group> - E64D0F3DDD22D44175B4387DCB6C503B + D41D8CD98F00B204E9800998ECF8427E - includeInIndex - 1 + attributes + + LastSwiftUpdateCheck + 0700 + LastUpgradeCheck + 0700 + + buildConfigurationList + 2D8E8EC45A3A1A1D94AE762CB5028504 + compatibilityVersion + Xcode 3.2 + developmentRegion + English + hasScannedForEncodings + 0 isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageTiltShiftFilter.h - path - framework/Source/GPUImageTiltShiftFilter.h - sourceTree - <group> + PBXProject + knownRegions + + en + + mainGroup + 7DB346D0F39D3F0E887471402A8071AB + productRefGroup + 157C3FFD507947EA2FAF054BE9A32E56 + projectDirPath + + projectReferences + + projectRoot + + targets + + 5AC3A11679CADE5423C8DCC5EAF0C6CD + 7721D993ED2B6C2DEF3331B64CF7FF53 + 2BAC7CF49C86172B8F10A9ADFC08EF59 + 1B31E85D9156574140008B19F590E692 + - E65C788C69CD95534E7A168343B9B1C7 + D4DBFC952FF91A41ECC536EA78718093 includeInIndex 1 @@ -16491,67 +6366,59 @@ lastKnownFileType sourcecode.c.h name - KSCrashReportFilterSets.h + bytes.h path - Source/KSCrash/Reporting/Filters/KSCrashReportFilterSets.h + Pod/Classes/pili-librtmp/bytes.h sourceTree <group> - E67D17C991308CD5A2B3CDD798686713 + D4F1B3CF20819AF5C23B2482B7C41188 + + fileRef + A363F6BB6249FA58122B9E79F44803CA + isa + PBXBuildFile + + D519C1D1DEF15D09E4AF2E43E87090A1 fileRef - D1829C020FDE73136EAA700A530CB9CC + 55CCE40B43DFDDD6A3025DF4BEA62200 isa PBXBuildFile settings ATTRIBUTES - Public + Project - E692B5B09321366F58738DF9E36A0964 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - KSCrashInstallationVictory.m - path - Source/KSCrash/Installations/KSCrashInstallationVictory.m - sourceTree - <group> - - E6A8B02BC636068AD7DBF96657A5826C + D5BA14E2C771E4B129AB8CFB9DC5B307 fileRef - 9F016468BB47F88291C86903CD0B7B8C + 9FDB734414E2E3E9E05832B12F5BD78A isa PBXBuildFile - E6C263C5F0E75E20D7EF8EBFC83637E6 + D62DC333B2021049ABA2882602F11DF2 includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.h + sourcecode.c.objc name - GPUImageBulgeDistortionFilter.h + KSCrashReportFilterSets.m path - framework/Source/GPUImageBulgeDistortionFilter.h + Source/KSCrash/Reporting/Filters/KSCrashReportFilterSets.m sourceTree <group> - E7459AD8BC35C036AC8FBCF3ED33A600 + D6EB65602B86776685CD533BA719F75D fileRef - 12C0722DD47207B5E41D3317B6CBFAA2 + 9160CF7C57EAA370B4D63540BB94ECC3 isa PBXBuildFile settings @@ -16562,55 +6429,42 @@ - E76A355B4BFDFD3A266094D085BE5B86 - - buildConfigurations - - 31849498178994220B699E9425388177 - EF12109467A259EECA7E982AE50C5216 - - defaultConfigurationIsVisible - 0 - defaultConfigurationName - Release - isa - XCConfigurationList - - E7A034A24FDB86907EC92A7227DC220E + D7A237E23609DEFBE32AD2DB902A4F95 fileRef - F8F5812903C9C7E118CE8B33FBBB2054 + 5365DB7D2970A76B3DEEDEC881E87E03 isa PBXBuildFile + settings + + ATTRIBUTES + + Public + + - E7F77FCFB6F98D6541A4395818A7C726 + D8A64AF7A4577A15FEBEACFF8BD6B5A6 - includeInIndex - 1 + fileRef + 775A08A0B5F16C2DF14AF8A7EAAF9304 isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - StringRef.h - path - Source/KSCrash/llvm/ADT/StringRef.h - sourceTree - <group> + PBXBuildFile - E7FA51791CCD8EFC41655145BDE3BA93 + D8BFC934E0D207330E102DB3DA0FBD27 fileRef - 98AA34659AB0229E769EE6262E7F2CA1 + DE2C1E645373A7E4C5D3F2E020F497FC isa PBXBuildFile settings - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 + ATTRIBUTES + + Public + - E847441523AB23F74AA6C45E80B028AD + D9035932D4E1EAD491BBE4FC491F78D1 includeInIndex 1 @@ -16619,16 +6473,16 @@ lastKnownFileType sourcecode.c.h name - Optional.h + PLStreamStatus.h path - Source/KSCrash/llvm/ADT/Optional.h + Pod/Library/include/PLStreamingKit/PLStreamStatus.h sourceTree <group> - E84ABE917B478FFEA9662DB6996AE693 + D93FA5316FBCF9E2BB6855B6385FD325 fileRef - 80716CD8CF21489AA526BC3B7CC03952 + B4BCE8F8C2EBE95B83E1D7E1E19336D4 isa PBXBuildFile settings @@ -16639,22 +6493,10 @@ - E86A276844EE6CD944E9AA0A7F747C40 - - fileRef - 72683B53AAE81C5DCA2DA1853CAC9098 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - E86FAA6635462912E9607692DCF4EC9F + D975D7F93AF184BB1E68E5F43A3EB85F fileRef - 020815670BF0BF0DC12009D55D3B1F1E + 7EB921AAC9BD160B112ED8AAFA817F12 isa PBXBuildFile settings @@ -16665,36 +6507,29 @@ - E8E0DEC25B76A9EB8B00772B8075A157 + D9D5F4DEBF510D55A4800992A8650F3F fileRef - 837F634701C85DE0386C5BEDCFAFC88C + 0AF5573DA7936D9F1C0B7BAEE44943BD isa PBXBuildFile - settings - - COMPILER_FLAGS - -fno-objc-arc - - E95269D7BD9767E5ACD87653D6B262C6 + D9F37C64F797446762E05661D45093B3 - buildActionMask - 2147483647 - files - - E1A44B62132BF27371F4D8C0E81738B8 - A4D81C1839F42D131FDC6F9FF7E2F947 - 7A4F7452DB20B8C9B0406B5FA19FBBC1 - 0D760400E2D0F8C7880662BEC7E80D6E - 2873AB86FD72D07D8DC80F33F5715934 - + includeInIndex + 1 isa - PBXFrameworksBuildPhase - runOnlyForDeploymentPostprocessing - 0 + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + KSCrashSentry_Deadlock.h + path + Source/KSCrash/Recording/Sentry/KSCrashSentry_Deadlock.h + sourceTree + <group> - E96F61B3AE97DF2C677FF5304B7E7CE9 + DAD7869E5214C9A33527F1797ACE82EF includeInIndex 1 @@ -16703,13 +6538,26 @@ lastKnownFileType sourcecode.c.h name - KSCrashInstallation+Alert.h + KSSysCtl.h path - Source/KSCrash/Installations/KSCrashInstallation+Alert.h + Source/KSCrash/Recording/Tools/KSSysCtl.h sourceTree <group> - E9737A654F0EE713E74C11C06000113F + DC235BC339068A76EEC448415E5DD2E6 + + isa + PBXFileReference + lastKnownFileType + wrapper.framework + name + SystemConfiguration.framework + path + Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/SystemConfiguration.framework + sourceTree + DEVELOPER_DIR + + DC45576FE9876290AF62984B64ADDB79 includeInIndex 1 @@ -16718,13 +6566,13 @@ lastKnownFileType sourcecode.c.h name - KSHTTPMultipartPostBody.h + KSSystemInfo.h path - Source/KSCrash/Reporting/Tools/KSHTTPMultipartPostBody.h + Source/KSCrash/Recording/KSSystemInfo.h sourceTree <group> - E9D224D3CCA962526FD1CAAB37F1549C + DCCC56209E516169E7F42F46EFBCBA99 includeInIndex 1 @@ -16733,39 +6581,13 @@ lastKnownFileType sourcecode.c.objc name - GPUImageSphereRefractionFilter.m + NSData+GZip.m path - framework/Source/GPUImageSphereRefractionFilter.m + Source/KSCrash/Reporting/Filters/Tools/NSData+GZip.m sourceTree <group> - E9DB576CF8EA753F630097480270C363 - - fileRef - 89920751328423998C297A9378E9EBCD - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - EA0AC59666797ECC9860FC4B8F95C231 - - fileRef - EC18D3C7D3227C1F4F8B81D22FF97B6F - isa - PBXBuildFile - - EA3033230C2BF9D1C97B0D98FBD9F4AF - - fileRef - C61801EB75C001B6F55EC61E6424925B - isa - PBXBuildFile - - EA8CCEF605BCF13506BC3B74CE5437DA + DD368B9C9261A1B824A4AA7401C41710 includeInIndex 1 @@ -16774,234 +6596,286 @@ lastKnownFileType sourcecode.c.objc name - GPUImageFilter.m + NSError+SimpleConstructor.m path - framework/Source/GPUImageFilter.m + Source/KSCrash/Recording/Tools/NSError+SimpleConstructor.m sourceTree <group> - EA9BD959D4ABB55A7C473890CD64DB0F + DE2C1E645373A7E4C5D3F2E020F497FC includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.objc + sourcecode.c.h name - GPUImageHoughTransformLineDetector.m + QNIP.h path - framework/Source/GPUImageHoughTransformLineDetector.m + HappyDNS/Util/QNIP.h sourceTree <group> - EAD21FF18D606EDF28D4A07895D030A6 + DE30A3580954B0D1CC70C4934322F2DD fileRef - DE1EB68B92000894EDD16152AAEF9EF0 + 318B46BFE7F9E7AA8AC957CA6A2275C4 isa PBXBuildFile settings ATTRIBUTES - Public + Project - EB1E79E9289153F787F0F6EA7916CCB6 + DEEA185DE3E2C3E02E713F3FFA661802 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + KSCrashReportSinkEMail.h + path + Source/KSCrash/Reporting/Sinks/KSCrashReportSinkEMail.h + sourceTree + <group> + + DFB50BEF61D6A7D6C1EA4CE8A3BF6190 + + children + + 073687B9C05D6EEDE6D1124E55998A5F + + isa + PBXGroup + name + include + path + include + sourceTree + <group> + + E191EEEA48D06AB8EFE967B3B3C7E15D includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.objc + sourcecode.c.h + name + None.h path - pili-librtmp-dummy.m + Source/KSCrash/llvm/ADT/None.h sourceTree <group> - EB2CEAA5A092583A3FE46ECD066C4087 + E23C3750B13C0C02EB8550A2B6A07078 fileRef - 196A5FE95290E899ABD47B0C8221AA7F + 81EE3723DE592727B72F15663AD30A05 isa PBXBuildFile - EC18D3C7D3227C1F4F8B81D22FF97B6F + E2FFF427FC7566D0533F06B6E3F21A65 includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.objc + sourcecode.c.h name - NSData+GZip.m + KSCrashReport.h path - Source/KSCrash/Reporting/Filters/Tools/NSData+GZip.m + Source/KSCrash/Recording/KSCrashReport.h sourceTree <group> - EC2B43230D19CA3702EF3F841488D121 + E30E51EDFA4682CBEDE88834A4892E6F fileRef - 1F6282B7656CD08F3A6790808132E63A + 624C0CEA498634637CDBD0D13B8EAAA0 isa PBXBuildFile settings ATTRIBUTES - Public + Project - EC4C4036C068230BB75187C1C49D28DD + E36BADA9F6370D253690571B501DABF6 - includeInIndex - 1 + fileRef + 74ADA6E8FA320A0C0D7699B6DEDDFA09 isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - GPUImageTextureInput.h - path - framework/Source/GPUImageTextureInput.h - sourceTree - <group> + PBXBuildFile - EC9CB2E6B3EA7679F855331546BF0F17 + E3D14B0AE929FEB7B6C7505A3B54EB26 fileRef - 683B48DFBDC0534E21B7002EDD5EED04 + B87E74C5B5193D74DE715196D2713945 isa PBXBuildFile - settings - - ATTRIBUTES - - Public - - - ECCC8A041B93EACCB1EAB62C5C94963E + E47172D26381E8841C25CB974DF7D08B - includeInIndex - 1 + children + + B453D1E5EFF3158355F8AD2CD370A36B + A12F96FCDF0BFC94D03511A6A0CBEEB7 + D4DBFC952FF91A41ECC536EA78718093 + B6F9164E7CAA6540EDEF9B124D48B9BF + 7EB921AAC9BD160B112ED8AAFA817F12 + 9674E62CA0708ED3778ECD39C22CAAB4 + A8D515AB60BE1F1863848A704AAA777A + 3FD026CF6AE6BB8E9FD8EFD8F22B0957 + 68218C6D88CF111D5843FA6D982A4E69 + ECA605E212D221E2B447CE787070C92B + A92E1EBE01565341013B44953851C0C9 + 633DFB668B08EA7DF044936512533D20 + 2B3F5C897AB42E5F82A6D02E05439B1A + A96401E46482B490EBA2CC6840A8710B + AFCE7D3E58BF73B38A50C154F464DF13 + CA90334591A4B0C2B025764A002C3305 + E6F9C60C78F9E39436D4E0F40BF52ECA + isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc + PBXGroup name - GPUImageMovie.m + pili-librtmp path - framework/Source/GPUImageMovie.m + pili-librtmp sourceTree <group> - ECDE17CB25E8171A45BDD99A8F109654 + E478E47B6322787EDC50BDF78BED809F + explicitFileType + archive.ar includeInIndex - 1 + 0 isa PBXFileReference - lastKnownFileType - sourcecode.c.h name - GPUImageSubtractBlendFilter.h + libHappyDNS.a path - framework/Source/GPUImageSubtractBlendFilter.h + libHappyDNS.a sourceTree - <group> + BUILT_PRODUCTS_DIR - ED21AC54188497033489F8CBB898F51E + E52CB36F6FB5B22D80D3ED5B8994AFAA - buildConfigurations - - 194AD0D8F17D89D54534FB3BF2067057 - 6CBB8C1D469C58F19ADC861B76BAC4D3 - - defaultConfigurationIsVisible - 0 - defaultConfigurationName - Release + fileRef + 1980DF2C8F60A87D5832405DAED67B9E isa - XCConfigurationList + PBXBuildFile - ED71C09207CB0200C95ECEC74DB989E9 + E536D4CBFAA0F78D2348532AEA7B832D includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.h + sourcecode.c.objc name - GPUImageTwoInputCrossTextureSamplingFilter.h + QNDnspodFree.m path - framework/Source/GPUImageTwoInputCrossTextureSamplingFilter.h + HappyDNS/Http/QNDnspodFree.m sourceTree <group> - ED785054ABA03D4323C21D62147809DB + E53DC191CCAE24046FB52C14C2E30EB0 includeInIndex 1 isa PBXFileReference + lastKnownFileType + sourcecode.c.h name - lookup_miss_etikate.png + KSSystemCapabilities.h path - framework/Resources/lookup_miss_etikate.png + Source/KSCrash/Recording/KSSystemCapabilities.h sourceTree <group> - EDDCB9985E765D7B39F992907357CAE6 + E676732106E72170045D866DB7649124 + + children + + 3B5A64EDE47B37741500AE4957ECDAAE + F2EA6A0AC4A13E0E1A1B5E886EF5135B + + isa + PBXGroup + name + Basic + sourceTree + <group> + + E6A8B02BC636068AD7DBF96657A5826C fileRef - F52DF774CC535C7EA363ACFBF04A9BA7 + 79898051B5D1324F8403D689F819CE28 isa PBXBuildFile - settings - - ATTRIBUTES - - Project - - - EE0102D22BAB31225CF7C06DA40C4036 + E6F9C60C78F9E39436D4E0F40BF52ECA children - DB28C527149A9AE2573DCF3DE3E5228E - DE6E5415A5DA7E78B081169F12105E3D - 811BD3A6C9C6839B14477AFDC49FB4D4 - C34C81260ADCECB2185D0A35065B5681 - B30A047D0F0B2813E319DF1586B9E0B4 - 9435208F002C2AF88F9B43C7161CDFF8 - B8D75E1CC87C8CF44A0DC26C69A4D221 - 92FD18E49F36524BB33AFA9899F2BAB8 - F0D1262C0CADFC4F43CFCD8B8D09639F + FFAC5C998DA821ED7EDD0228CF79A046 + D14BCA28A88A03D224BA4EC31712B074 + FFADA2EB70D57FF9D68D2B7BB3A11CB2 isa PBXGroup name - Filters + Support Files + path + ../Target Support Files/pili-librtmp sourceTree <group> - EE16990E1274D41382F6D1558D88825D + E75BFE765B6BE19645D619A0AD087DBF + + fileRef + 7AF0D8D7E108370DC64100A59EE4D523 + isa + PBXBuildFile + + E76A355B4BFDFD3A266094D085BE5B86 + + buildConfigurations + + 31849498178994220B699E9425388177 + EF12109467A259EECA7E982AE50C5216 + + defaultConfigurationIsVisible + 0 + defaultConfigurationName + Release + isa + XCConfigurationList + + E7A034A24FDB86907EC92A7227DC220E fileRef - B99EA5DB4530B2E53ADD1DDC655F3B90 + E8CCE3B0681838AD094BD12A50667246 isa PBXBuildFile - EE968A711C6D8B6965E1AE5D071AA8CD + E8748BEA329BB07AF85C830C6357FFCF includeInIndex 1 @@ -17010,62 +6884,40 @@ lastKnownFileType sourcecode.c.h name - GPUImageBilateralFilter.h + QNDomain.h path - framework/Source/GPUImageBilateralFilter.h + HappyDNS/Common/QNDomain.h sourceTree <group> - EEC91475716215E7D0D64AB004403758 + E8CCE3B0681838AD094BD12A50667246 includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.h + sourcecode.c.objc name - GLProgram.h + KSCrashReportSinkStandard.m path - framework/Source/GLProgram.h + Source/KSCrash/Reporting/Sinks/KSCrashReportSinkStandard.m sourceTree <group> - EF12109467A259EECA7E982AE50C5216 + E8E0DEC25B76A9EB8B00772B8075A157 - baseConfigurationReference - A14E2305CE89FE9C2263DBC6FA9117AA - buildSettings + fileRef + E9C015EDBE324CFF9AB4A761318D19D5 + isa + PBXBuildFile + settings - ENABLE_STRICT_OBJC_MSGSEND - YES - GCC_PREFIX_HEADER - Target Support Files/KSCrash/KSCrash-prefix.pch - IPHONEOS_DEPLOYMENT_TARGET - 7.0 - MTL_ENABLE_DEBUG_INFO - NO - OTHER_LDFLAGS - - OTHER_LIBTOOLFLAGS - - PRIVATE_HEADERS_FOLDER_PATH - - PRODUCT_NAME - $(TARGET_NAME) - PUBLIC_HEADERS_FOLDER_PATH - - SDKROOT - iphoneos - SKIP_INSTALL - YES + COMPILER_FLAGS + -fno-objc-arc - isa - XCBuildConfiguration - name - Release - EF58ACA17008518E965C99469DDBB999 + E9C015EDBE324CFF9AB4A761318D19D5 includeInIndex 1 @@ -17074,105 +6926,85 @@ lastKnownFileType sourcecode.c.objc name - GPUImageBoxBlurFilter.m + KSZombie.m path - framework/Source/GPUImageBoxBlurFilter.m + Source/KSCrash/Recording/Tools/KSZombie.m sourceTree <group> - EFA25F69CFAC0868CE349E6F7FDA0EB5 - - fileRef - 6B619102F20817833BBCC176367ECE4C - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - EFAC5B94410CECC38BA3CC9D682AB01C - - fileRef - 2D9CEA819995A18A9CA436711FAD121B - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - F02508147906A92B387FDF81817BA7B0 + EA0AC59666797ECC9860FC4B8F95C231 fileRef - C93FFCE1629B26DFB4E8B88CB72A4DA5 + DCCC56209E516169E7F42F46EFBCBA99 isa PBXBuildFile - settings - - ATTRIBUTES - - Public - - - F0C51131791BECA98886CF1918340344 + EA148D6FA5B3CEE4C36204312CCE3966 + includeInIndex + 1 isa - PBXTargetDependency + PBXFileReference name - GPUImage - target - 6610362E50A6DE8BACCA1F2885CD9157 - targetProxy - 46CAC0A2C798F2533F1328249B12637D + KSCrashSentry_MachException.c + path + Source/KSCrash/Recording/Sentry/KSCrashSentry_MachException.c + sourceTree + <group> - F0D1262C0CADFC4F43CFCD8B8D09639F + EA2C9CF29357ABFF5A71E50B23A623BE - children - + includeInIndex + 1 isa - PBXGroup + PBXFileReference + lastKnownFileType + sourcecode.c.h name - Tools + QNResolver.h + path + HappyDNS/Local/QNResolver.h sourceTree <group> - F199C18919740FA9E380111A5FA920EF + EA3033230C2BF9D1C97B0D98FBD9F4AF + + fileRef + DC235BC339068A76EEC448415E5DD2E6 + isa + PBXBuildFile + + EA30E1ECF5E4F934DE791B352FE6DDDF includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.objc + sourcecode.c.h name - GPUImageAlphaBlendFilter.m + KSCrashReportSinkConsole.h path - framework/Source/GPUImageAlphaBlendFilter.m + Source/KSCrash/Reporting/Sinks/KSCrashReportSinkConsole.h sourceTree <group> - F1D67E26F955C71D989E0FE8B96FD698 + EA49AD5BB9403CF0E23C804CD6555E0B - children - - F592D6D7AA0D760F6C36BA943D4C53AA - + explicitFileType + archive.ar + includeInIndex + 0 isa - PBXGroup + PBXFileReference name - Development Pods + libPods-PLCameraStreamingKit.a + path + libPods-PLCameraStreamingKit.a sourceTree - <group> + BUILT_PRODUCTS_DIR - F221FE418A67C22B1B5D38A8A046698C + EA8FF5B01BA6A155DE2616E718B491C5 includeInIndex 1 @@ -17181,40 +7013,20 @@ lastKnownFileType sourcecode.c.h name - GPUImageDissolveBlendFilter.h + KSCrashInstallationConsole.h path - framework/Source/GPUImageDissolveBlendFilter.h + Source/KSCrash/Installations/KSCrashInstallationConsole.h sourceTree <group> - F288912C4617DB72B6C085CA2492B053 + EB2CEAA5A092583A3FE46ECD066C4087 fileRef - 00E780EF336D0ACD8C5FE942FCEACE8A + 252586D5F1BFAF3656FEBC03A0889EE3 isa PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - F2AC2815DBACBDEF3561B8DE51598CFC - - includeInIndex - 1 - isa - PBXFileReference - name - KSMach_Arm64.c - path - Source/KSCrash/Recording/Tools/KSMach_Arm64.c - sourceTree - <group> - F2B6BFDAD1B2008BE07A39EA23C3FCBB + EB4273303F792121B0E99C8B3305C8E9 includeInIndex 1 @@ -17223,13 +7035,13 @@ lastKnownFileType sourcecode.c.objc name - GPUImageRGBErosionFilter.m + KSCrashReportFilter.m path - framework/Source/GPUImageRGBErosionFilter.m + Source/KSCrash/Reporting/Filters/KSCrashReportFilter.m sourceTree <group> - F2E6E495D878CA3EE5B0B662212C1F0C + EC1D43AEFE2AB6E85EAFEFE3731028CD includeInIndex 1 @@ -17237,15 +7049,17 @@ PBXFileReference lastKnownFileType sourcecode.c.h + name + PLStreamingSession.h path - PLVideoCaptureConfiguration.h + Pod/Library/include/PLStreamingKit/PLStreamingSession.h sourceTree <group> - F3237AE4E59B9A821591349BC1AC417B + EC9CB2E6B3EA7679F855331546BF0F17 fileRef - 86506E8D4E7CECA8EFE0E949401C0EBB + 5FF2C3F3FAD0DC36ED9A53E81FF4142C isa PBXBuildFile settings @@ -17256,37 +7070,39 @@ - F33BDD5FF48E71D77209F14251F50C92 + ECA605E212D221E2B447CE787070C92B + includeInIndex + 1 isa PBXFileReference lastKnownFileType - wrapper.framework + sourcecode.c.h name - OpenGLES.framework + http.h path - Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/OpenGLES.framework + Pod/Classes/pili-librtmp/http.h sourceTree - DEVELOPER_DIR + <group> - F3844FA0BC26CC2E0A3397F2A8D973D8 + ED21AC54188497033489F8CBB898F51E - fileRef - 764E153ECA24CE8D7028F7285B4ACB3F + buildConfigurations + + 194AD0D8F17D89D54534FB3BF2067057 + 6CBB8C1D469C58F19ADC861B76BAC4D3 + + defaultConfigurationIsVisible + 0 + defaultConfigurationName + Release isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - + XCConfigurationList - F39363001B9C0DB30A89274DE18F5348 + EDDCB9985E765D7B39F992907357CAE6 fileRef - 79A5AD2A1DB4F39CF759ADD7946C9DEC + E191EEEA48D06AB8EFE967B3B3C7E15D isa PBXBuildFile settings @@ -17297,7 +7113,7 @@ - F3CD7A531BA1CB65AAAD66E9E0596A11 + EDEA7290413972CB935E19AE32730F2E includeInIndex 1 @@ -17306,98 +7122,153 @@ lastKnownFileType sourcecode.c.h name - GPUImageHalftoneFilter.h + KSCrashState.h path - framework/Source/GPUImageHalftoneFilter.h + Source/KSCrash/Recording/KSCrashState.h sourceTree <group> - F4119119303A6F52D249483A7E683A68 + EE038047377480E5506F81149F7F31C6 includeInIndex 1 isa PBXFileReference - lastKnownFileType - sourcecode.c.objc name - KSCrashInstallationQuincyHockey.m + KSCrashC.c path - Source/KSCrash/Installations/KSCrashInstallationQuincyHockey.m + Source/KSCrash/Recording/KSCrashC.c sourceTree <group> - F423C176CC7DD08DD781A3544176048E + EE7D8EE1CA8BF89D1CD6BE76969925B0 - fileRef - 7C825B8D1BEB6C104879794E52ABB5F8 + children + + 467667C9387D4BA6557221404F910609 + 98EB495E9B8588C593C289C5484004D3 + 9160CF7C57EAA370B4D63540BB94ECC3 + 3C98ABC2D561BF92CD06C8DAAF5A8E4C + 9A57B57FBF97465A28A60DC1BDAC8939 + FBA8C9CA43DFB625CF5FFE11A92FA56D + B4BCE8F8C2EBE95B83E1D7E1E19336D4 + 74ADA6E8FA320A0C0D7699B6DEDDFA09 + 84162111E849343F0C96A5FE90E420F4 + FAE34A5438777A36EDFC7EE84564E53A + 2AB6E693B7F97D85BBE50AAF1514BE79 + 825C3031BB628FAE2BBD1412F6630EC1 + isa - PBXBuildFile - settings + PBXGroup + name + Tools + sourceTree + <group> + + EF12109467A259EECA7E982AE50C5216 + + baseConfigurationReference + CED3B5A78FEC2DFDEE61C9E3C9336C56 + buildSettings - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 + ENABLE_STRICT_OBJC_MSGSEND + YES + GCC_PREFIX_HEADER + Target Support Files/KSCrash/KSCrash-prefix.pch + IPHONEOS_DEPLOYMENT_TARGET + 7.0 + MTL_ENABLE_DEBUG_INFO + NO + OTHER_LDFLAGS + + OTHER_LIBTOOLFLAGS + + PRIVATE_HEADERS_FOLDER_PATH + + PRODUCT_NAME + $(TARGET_NAME) + PUBLIC_HEADERS_FOLDER_PATH + + SDKROOT + iphoneos + SKIP_INSTALL + YES + isa + XCBuildConfiguration + name + Release - F4CDA5FA9197A41E0081E84F932906EB + EF84FE4E101AB8D63C77975BE1263A71 children - 68F6BEA2610A5DBC6AD2618A706789B0 + 759E9BACEF9E002F58DBAD4DB5A2FC3B isa PBXGroup name - Frameworks + precompiled sourceTree <group> - F5036BF7E478FE9C51EEA4B473E56A4B + F146F8BB03AC0A4B978B2F23D7308884 - includeInIndex - 1 + fileRef + C3E8CD93245251D32D7D5CC3B01A1181 isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageToneCurveFilter.m - path - framework/Source/GPUImageToneCurveFilter.m - sourceTree - <group> + PBXBuildFile + settings + + ATTRIBUTES + + Public + + - F52DF774CC535C7EA363ACFBF04A9BA7 + F1D67E26F955C71D989E0FE8B96FD698 - includeInIndex - 1 + children + + F592D6D7AA0D760F6C36BA943D4C53AA + isa - PBXFileReference - lastKnownFileType - sourcecode.c.h + PBXGroup name - None.h - path - Source/KSCrash/llvm/ADT/None.h + Development Pods sourceTree <group> - F53EBBBB9E019F116D10E964B2EFF452 + F2089FC1D4189616DCFD478906530D0E + + fileRef + 6954208752C37D42AC6200B0324E0961 + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + F20C0C7AD3AB75CBA58C48D811DA2E8C includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.objc + sourcecode.c.h name - GPUImageiOSBlurFilter.m + KSBacktrace.h path - framework/Source/GPUImageiOSBlurFilter.m + Source/KSCrash/Recording/Tools/KSBacktrace.h sourceTree <group> - F5578FA1C947C29B90D96B549E05D327 + F2E6E495D878CA3EE5B0B662212C1F0C includeInIndex 1 @@ -17405,52 +7276,50 @@ PBXFileReference lastKnownFileType sourcecode.c.h - name - GPUImageKuwaharaRadius3Filter.h path - framework/Source/GPUImageKuwaharaRadius3Filter.h + PLVideoCaptureConfiguration.h sourceTree <group> - F55F2FF4FFDAD4321F5AFFC7DFE4D355 + F2EA6A0AC4A13E0E1A1B5E886EF5135B includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.h + sourcecode.c.objc name - GPUImageSharpenFilter.h + KSCrashReportFilterBasic.m path - framework/Source/GPUImageSharpenFilter.h + Source/KSCrash/Reporting/Filters/KSCrashReportFilterBasic.m sourceTree <group> - F57078DD8026F7B5A7A69C821745FA90 + F3237AE4E59B9A821591349BC1AC417B fileRef - BFEEBB996B03B49960AE0E15055B58F9 + ECA605E212D221E2B447CE787070C92B isa PBXBuildFile settings - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 + ATTRIBUTES + + Public + - F592D5D528AADB4C07BAB475D1020FCC + F33CF25754D9BB6A7D899FB01A1B7EAC includeInIndex 1 isa PBXFileReference - lastKnownFileType - sourcecode.c.h name - KSCrashInstallationEmail.h + KSMach_x86_64.c path - Source/KSCrash/Installations/KSCrashInstallationEmail.h + Source/KSCrash/Recording/Tools/KSMach_x86_64.c sourceTree <group> @@ -17470,22 +7339,22 @@ sourceTree <group> - F5CC65661152F9B209A4B8BCE15BBB4E + F5A8E7DD5F25A62C38F0997552843F37 includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.objc + sourcecode.c.h name - GPUImageEmbossFilter.m + KSCrashSentry.h path - framework/Source/GPUImageEmbossFilter.m + Source/KSCrash/Recording/Sentry/KSCrashSentry.h sourceTree <group> - F607EB959A48F63C5DDDF20750B1A6DF + F648DA576931B654E642300442141C9E includeInIndex 1 @@ -17493,14 +7362,12 @@ PBXFileReference lastKnownFileType sourcecode.c.h - name - GPUImageFramework.h path - framework/Source/iOS/Framework/GPUImageFramework.h + PLCameraStreamingSession.h sourceTree <group> - F648DA576931B654E642300442141C9E + F6D76BDE8994CADF374DE02C6861969C includeInIndex 1 @@ -17508,107 +7375,39 @@ PBXFileReference lastKnownFileType sourcecode.c.h + name + QNResolverDelegate.h path - PLCameraStreamingSession.h + HappyDNS/Common/QNResolverDelegate.h sourceTree <group> - F667FD6B2817EB9CC9FA1A96B6EC690F - - fileRef - EEC91475716215E7D0D64AB004403758 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - F68E9B771878DB5397357810B3CBDF62 - - fileRef - 7733728D8382BAA9B605C135D9E59120 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - F6BCA4EA37A7FC4BF56CDCC7E76C40E3 - - fileRef - 38D6EFC2D1AD594A9020E98097377EBD - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - F7478322444B58EE993D0C9AF10F9833 fileRef - DD9CF300F20558FDB0AABFCD76F5625E + FAE34A5438777A36EDFC7EE84564E53A isa PBXBuildFile - F75D35773212928F299CADF5A9781EB8 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - KSHTTPMultipartPostBody.m - path - Source/KSCrash/Reporting/Tools/KSHTTPMultipartPostBody.m - sourceTree - <group> - - F78FC3588F7D185DB7C3E8459DC1E74D + F87B7F7B561012716FF33D58279FFC3E includeInIndex 1 isa PBXFileReference - lastKnownFileType - sourcecode.c.h - name - KSObjCApple.h - path - Source/KSCrash/Recording/Tools/KSObjCApple.h - sourceTree - <group> - - F7AC648B0C0450A86D84CB660B86ACA0 - - explicitFileType - archive.ar - includeInIndex - 0 - isa - PBXFileReference + lastKnownFileType + sourcecode.c.objc name - libGPUImage.a + KSSystemInfo.m path - libGPUImage.a + Source/KSCrash/Recording/KSSystemInfo.m sourceTree - BUILT_PRODUCTS_DIR + <group> F88F26CAFBFE8D62AA42381DD85E23EC fileRef - 19F8D385E026C6B2BDF7A6D9A58C59FA + 166FAB93A478306E03283B0D654337A6 isa PBXBuildFile @@ -17634,54 +7433,25 @@ runOnlyForDeploymentPostprocessing 0 - F8B285BFAD9490C434D9B8862BE2592C - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - GPUImageColorDodgeBlendFilter.m - path - framework/Source/GPUImageColorDodgeBlendFilter.m - sourceTree - <group> - - F8F5812903C9C7E118CE8B33FBBB2054 + F8B08201AC3EFC1AF8EED9DD18CE89CE includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.objc + sourcecode.c.h name - KSCrashReportSinkStandard.m + QNDnspodFree.h path - Source/KSCrash/Reporting/Sinks/KSCrashReportSinkStandard.m + HappyDNS/Http/QNDnspodFree.h sourceTree <group> - F923AFF37112FEFFA7D011ACCA2C63B4 - - fileRef - 37C83E1AC1289519C466DB79E1A5DF5F - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - F95BF2904AC7127F6CE0D83A6A66F517 fileRef - 6E9227441537E3C64FCD9F0210FEB33D + C08BBF7CB7A78C5979CB958A38422F71 isa PBXBuildFile settings @@ -17695,7 +7465,7 @@ F9AACFED5FB0FAE71D5A5D38ECDF1DD4 fileRef - C6BD2820BE950938C50BC09BC6C3CB6C + DAD7869E5214C9A33527F1797ACE82EF isa PBXBuildFile settings @@ -17706,91 +7476,79 @@ - F9D42910F8095A6ADD393C7E0B703E17 + FAE34A5438777A36EDFC7EE84564E53A includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.h + sourcecode.c.objc name - GPUImageXYDerivativeFilter.h + NSMutableData+AppendUTF8.m path - framework/Source/GPUImageXYDerivativeFilter.h + Source/KSCrash/Reporting/Tools/NSMutableData+AppendUTF8.m sourceTree <group> - F9D88523BA387B62C9478404DBD24798 + FB842089FFEB75C83EDEF026F34B149A includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.h - name - GPUImageRGBDilationFilter.h + sourcecode.c.objc path - framework/Source/GPUImageRGBDilationFilter.h + HappyDNS-dummy.m sourceTree <group> - F9DC7533C51D25AA66849718039A13E2 - - fileRef - 70643F1A68C1F35B5C9E66DFECD0EB3D - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - FA928403614B76C71BBF7F68A94F5232 + FBA8C9CA43DFB625CF5FFE11A92FA56D includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.h + sourcecode.c.objc name - KSSafeCollections.h + KSHTTPRequestSender.m path - Source/KSCrash/Recording/Tools/KSSafeCollections.h + Source/KSCrash/Reporting/Tools/KSHTTPRequestSender.m sourceTree <group> - FAB852361583D00A2E0DD7EFBD92B355 + FBD39B0945F7D173EE9C739B9814738A includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.objc + sourcecode.c.h name - GPUImageStretchDistortionFilter.m + KSCrashReportSinkQuincyHockey.h path - framework/Source/GPUImageStretchDistortionFilter.m + Source/KSCrash/Reporting/Sinks/KSCrashReportSinkQuincyHockey.h sourceTree <group> - FAE12B8F80773EB51F2EE501027915E1 + FBEB06C4573020034E8EB792346D63F5 fileRef - EA9BD959D4ABB55A7C473890CD64DB0F + 23EF30CCA07FCF4DC1411AD469A7E775 isa PBXBuildFile settings - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 + ATTRIBUTES + + Project + - FAED007BECE0B836FC537A62ED4D1347 + FBF427E652EB8E00B1E2380AA4D89C63 includeInIndex 1 @@ -17799,96 +7557,42 @@ lastKnownFileType sourcecode.c.h name - GPUImageMovie.h + KSLogger.h path - framework/Source/GPUImageMovie.h + Source/KSCrash/Recording/Tools/KSLogger.h sourceTree <group> - FAF712B434A8E371E00215A492991E63 - - fileRef - 21A8AA0077CB3B47E078ED3EC938EE75 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - FB42526110A84658CE820206C963F310 - - fileRef - 31E25A33783C58FB035A799742E6EBE1 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - FB4619BF82BD411AED62FBBC79410535 + FC018833295F80674BA5CB7E0E7EF75D - fileRef - 6F853A6FFE2FE2F7AE573B05BACCC83B + children + + 67346DD6DB02C1C3A9B4361F2AF91E64 + E9C015EDBE324CFF9AB4A761318D19D5 + isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - + PBXGroup + name + no-arc + sourceTree + <group> - FB50417176E7ADE3DA3D17065ACE250A + FC0988CC68727AEE0F44DD8E032318D5 includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.objc + sourcecode.c.h name - GPUImageLuminanceRangeFilter.m + KSBacktrace_Private.h path - framework/Source/GPUImageLuminanceRangeFilter.m + Source/KSCrash/Recording/Tools/KSBacktrace_Private.h sourceTree <group> - FBEB06C4573020034E8EB792346D63F5 - - fileRef - 435D5A3585E18EC66D89261A6411D007 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Project - - - - FBFCCCA70F3D8793BB3C77F32E733922 - - fileRef - 3B9CB4DAEDC1E8DE06AC360C275669A1 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - FC1BBA9B13A11A95B94397866C8E790D + FC12E471BFB3E93A3888B54391D46569 includeInIndex 1 @@ -17897,27 +7601,13 @@ lastKnownFileType sourcecode.c.objc name - GPUImageRGBDilationFilter.m + KSJSONCodecObjC.m path - framework/Source/GPUImageRGBDilationFilter.m + Source/KSCrash/Recording/Tools/KSJSONCodecObjC.m sourceTree <group> - FC2C909FEC5A89E28242506B8A0693BF - - fileRef - E6007C84F87EAB1F04BC9E4ECF7DC033 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - FC51E98F2892A8B7D4A0B7DFA3204C0E + FCA7BC281288C5AD8EE0A6025A46F00E includeInIndex 1 @@ -17926,42 +7616,36 @@ lastKnownFileType sourcecode.c.h name - KSCrashReportWriter.h + KSCrashSentry_Signal.h path - Source/KSCrash/Recording/KSCrashReportWriter.h + Source/KSCrash/Recording/Sentry/KSCrashSentry_Signal.h sourceTree <group> - FCFBCEC871E43DFCE4CD9FD57A2E85AD + FCE50E131C2E823ADAB4D3225B690A66 - fileRef - 6F3E6BAAF61ECD36EAD9BC08AEAB6430 + includeInIndex + 1 isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - + PBXFileReference + name + KSCrashReport.c + path + Source/KSCrash/Recording/KSCrashReport.c + sourceTree + <group> - FCFC4B14AD47CF3E8F1EFC4CE2E27997 + FD72FA8AF432A95E9F8B40A29B20FA00 fileRef - 06313BB6250FEA7E0C499FFA8482BF49 + 1DE4DA41604657015AF7CA73A51C6D92 isa PBXBuildFile - settings - - ATTRIBUTES - - Public - - - FD4E5F7E836FA1A3EEBD872BF8717860 + FD810FE8A4FABB34DC423CC84D8FBAD4 fileRef - 303B00A244AB82A548467B513409B634 + F6D76BDE8994CADF374DE02C6861969C isa PBXBuildFile settings @@ -17972,44 +7656,40 @@ - FD72FA8AF432A95E9F8B40A29B20FA00 - - fileRef - 3505DCE33AF9209A01CA862524B53239 - isa - PBXBuildFile - - FE83BF56C567756C21EC2B7CE62A9E2E + FDC3FD5EBD8F9E0DD8A891C81E92A707 - fileRef - F5036BF7E478FE9C51EEA4B473E56A4B + includeInIndex + 1 isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + QNDomain.m + path + HappyDNS/Common/QNDomain.m + sourceTree + <group> - FEA6D9E34F4B3DE1BD6B2881897CFB63 + FE52294ACDA3B0DB871740DD099205E2 includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.h + sourcecode.c.objc name - KSMachApple.h + KSCrashSentry_Deadlock.m path - Source/KSCrash/Recording/Tools/KSMachApple.h + Source/KSCrash/Recording/Sentry/KSCrashSentry_Deadlock.m sourceTree <group> FEB06886753152810816408BCF5EB636 fileRef - E4B381663105ADBFEFAEFD1DBC9802B6 + 024EAEF8C47CA27492618A6CD9AADFA3 isa PBXBuildFile settings @@ -18023,7 +7703,7 @@ FEC3100E22E424CF2043615E5F422052 fileRef - 6141399000D2C9AEF7B095513D3EC14C + B2EC46C6D29E254139E0020BACDF680F isa PBXBuildFile settings @@ -18034,42 +7714,71 @@ - FF3CA2586DC6389AC7D97E6814541799 + FECD1F03A2D94CACEB45FC2EB8D2980A fileRef - B18CD9E6901F06D33A5A9901DAF83941 + 03A0198C7DDF684523ECACC6F6948684 isa PBXBuildFile settings - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 + ATTRIBUTES + + Public + - FF42C8A2F1CA6E5FE42CD1A504E942CC + FF30EC24D39A1B9FAAE10C4B6D2F0A46 - fileRef - CB1B272772428232E7B93280DF065E31 + includeInIndex + 1 isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + HappyDNS-prefix.pch + sourceTree + <group> - FF7FF9ED99DA84E72B432A8F5D556476 + FFAC5C998DA821ED7EDD0228CF79A046 includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.objc + text.xcconfig + path + pili-librtmp.xcconfig + sourceTree + <group> + + FFADA2EB70D57FF9D68D2B7BB3A11CB2 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + pili-librtmp-prefix.pch + sourceTree + <group> + + FFF2269EF3DB19A1B0483A5C4A544A89 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h name - GPUImageBrightnessFilter.m + QNDes.h path - framework/Source/GPUImageBrightnessFilter.m + HappyDNS/Util/QNDes.h sourceTree <group> diff --git a/Example/Pods/Target Support Files/GPUImage/GPUImage-dummy.m b/Example/Pods/Target Support Files/GPUImage/GPUImage-dummy.m deleted file mode 100644 index 92f4a7d..0000000 --- a/Example/Pods/Target Support Files/GPUImage/GPUImage-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_GPUImage : NSObject -@end -@implementation PodsDummy_GPUImage -@end diff --git a/Example/Pods/Target Support Files/GPUImage/GPUImage-prefix.pch b/Example/Pods/Target Support Files/GPUImage/GPUImage-prefix.pch deleted file mode 100644 index aa992a4..0000000 --- a/Example/Pods/Target Support Files/GPUImage/GPUImage-prefix.pch +++ /dev/null @@ -1,4 +0,0 @@ -#ifdef __OBJC__ -#import -#endif - diff --git a/Example/Pods/Target Support Files/GPUImage/GPUImage.xcconfig b/Example/Pods/Target Support Files/GPUImage/GPUImage.xcconfig deleted file mode 100644 index 7f676aa..0000000 --- a/Example/Pods/Target Support Files/GPUImage/GPUImage.xcconfig +++ /dev/null @@ -1,6 +0,0 @@ -CLANG_MODULES_AUTOLINK = YES -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/GPUImage" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/GPUImage" "${PODS_ROOT}/Headers/Public/HappyDNS" "${PODS_ROOT}/Headers/Public/KSCrash" "${PODS_ROOT}/Headers/Public/PLCameraStreamingKit" "${PODS_ROOT}/Headers/Public/PLStreamingKit" "${PODS_ROOT}/Headers/Public/pili-librtmp" -OTHER_LDFLAGS = -framework "AVFoundation" -framework "CoreMedia" -framework "OpenGLES" -framework "QuartzCore" -PODS_ROOT = ${SRCROOT} -SKIP_INSTALL = YES \ No newline at end of file diff --git a/Example/Pods/Target Support Files/HappyDNS/HappyDNS.xcconfig b/Example/Pods/Target Support Files/HappyDNS/HappyDNS.xcconfig index 93c2fd7..ee675c2 100644 --- a/Example/Pods/Target Support Files/HappyDNS/HappyDNS.xcconfig +++ b/Example/Pods/Target Support Files/HappyDNS/HappyDNS.xcconfig @@ -1,5 +1,5 @@ GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/HappyDNS" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/GPUImage" "${PODS_ROOT}/Headers/Public/HappyDNS" "${PODS_ROOT}/Headers/Public/KSCrash" "${PODS_ROOT}/Headers/Public/PLCameraStreamingKit" "${PODS_ROOT}/Headers/Public/PLStreamingKit" "${PODS_ROOT}/Headers/Public/pili-librtmp" +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/HappyDNS" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/HappyDNS" "${PODS_ROOT}/Headers/Public/KSCrash" "${PODS_ROOT}/Headers/Public/PLCameraStreamingKit" "${PODS_ROOT}/Headers/Public/PLStreamingKit" "${PODS_ROOT}/Headers/Public/pili-librtmp" OTHER_LDFLAGS = -l"resolv" PODS_ROOT = ${SRCROOT} SKIP_INSTALL = YES \ No newline at end of file diff --git a/Example/Pods/Target Support Files/KSCrash/KSCrash.xcconfig b/Example/Pods/Target Support Files/KSCrash/KSCrash.xcconfig index 21dd79f..09f528f 100644 --- a/Example/Pods/Target Support Files/KSCrash/KSCrash.xcconfig +++ b/Example/Pods/Target Support Files/KSCrash/KSCrash.xcconfig @@ -1,6 +1,6 @@ GCC_ENABLE_CPP_EXCEPTIONS = YES GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/KSCrash" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/GPUImage" "${PODS_ROOT}/Headers/Public/HappyDNS" "${PODS_ROOT}/Headers/Public/KSCrash" "${PODS_ROOT}/Headers/Public/PLCameraStreamingKit" "${PODS_ROOT}/Headers/Public/PLStreamingKit" "${PODS_ROOT}/Headers/Public/pili-librtmp" +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/KSCrash" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/HappyDNS" "${PODS_ROOT}/Headers/Public/KSCrash" "${PODS_ROOT}/Headers/Public/PLCameraStreamingKit" "${PODS_ROOT}/Headers/Public/PLStreamingKit" "${PODS_ROOT}/Headers/Public/pili-librtmp" OTHER_LDFLAGS = -l"c++" -l"z" -framework "Foundation" -framework "MessageUI" -framework "SystemConfiguration" PODS_ROOT = ${SRCROOT} SKIP_INSTALL = YES \ No newline at end of file diff --git a/Example/Pods/Target Support Files/Pods-PLCameraStreamingKit/Pods-PLCameraStreamingKit-acknowledgements.markdown b/Example/Pods/Target Support Files/Pods-PLCameraStreamingKit/Pods-PLCameraStreamingKit-acknowledgements.markdown index d5e291c..0f9b431 100644 --- a/Example/Pods/Target Support Files/Pods-PLCameraStreamingKit/Pods-PLCameraStreamingKit-acknowledgements.markdown +++ b/Example/Pods/Target Support Files/Pods-PLCameraStreamingKit/Pods-PLCameraStreamingKit-acknowledgements.markdown @@ -1,19 +1,6 @@ # Acknowledgements This application makes use of the following third party libraries: -## GPUImage - -Copyright (c) 2012, Brad Larson, Ben Cochran, Hugues Lismonde, Keitaroh Kobayashi, Alaric Cole, Matthew Clark, Jacob Gundersen, Chris Williams. -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - -Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. -Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. -Neither the name of the GPUImage framework nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - ## HappyDNS The MIT License (MIT) diff --git a/Example/Pods/Target Support Files/Pods-PLCameraStreamingKit/Pods-PLCameraStreamingKit-acknowledgements.plist b/Example/Pods/Target Support Files/Pods-PLCameraStreamingKit/Pods-PLCameraStreamingKit-acknowledgements.plist index 11dd30c..fc8a336 100644 --- a/Example/Pods/Target Support Files/Pods-PLCameraStreamingKit/Pods-PLCameraStreamingKit-acknowledgements.plist +++ b/Example/Pods/Target Support Files/Pods-PLCameraStreamingKit/Pods-PLCameraStreamingKit-acknowledgements.plist @@ -12,23 +12,6 @@ Type PSGroupSpecifier - - FooterText - Copyright (c) 2012, Brad Larson, Ben Cochran, Hugues Lismonde, Keitaroh Kobayashi, Alaric Cole, Matthew Clark, Jacob Gundersen, Chris Williams. -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - -Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. -Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. -Neither the name of the GPUImage framework nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - Title - GPUImage - Type - PSGroupSpecifier - FooterText The MIT License (MIT) diff --git a/Example/Pods/Target Support Files/Pods-PLCameraStreamingKit/Pods-PLCameraStreamingKit-resources.sh b/Example/Pods/Target Support Files/Pods-PLCameraStreamingKit/Pods-PLCameraStreamingKit-resources.sh index ffcd8ad..16774fb 100755 --- a/Example/Pods/Target Support Files/Pods-PLCameraStreamingKit/Pods-PLCameraStreamingKit-resources.sh +++ b/Example/Pods/Target Support Files/Pods-PLCameraStreamingKit/Pods-PLCameraStreamingKit-resources.sh @@ -57,20 +57,6 @@ install_resource() ;; esac } -if [[ "$CONFIGURATION" == "Debug" ]]; then - install_resource "GPUImage/framework/Resources/lookup.png" - install_resource "GPUImage/framework/Resources/lookup_amatorka.png" - install_resource "GPUImage/framework/Resources/lookup_miss_etikate.png" - install_resource "GPUImage/framework/Resources/lookup_soft_elegance_1.png" - install_resource "GPUImage/framework/Resources/lookup_soft_elegance_2.png" -fi -if [[ "$CONFIGURATION" == "Release" ]]; then - install_resource "GPUImage/framework/Resources/lookup.png" - install_resource "GPUImage/framework/Resources/lookup_amatorka.png" - install_resource "GPUImage/framework/Resources/lookup_miss_etikate.png" - install_resource "GPUImage/framework/Resources/lookup_soft_elegance_1.png" - install_resource "GPUImage/framework/Resources/lookup_soft_elegance_2.png" -fi mkdir -p "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" diff --git a/Example/Pods/Target Support Files/Pods-PLCameraStreamingKit/Pods-PLCameraStreamingKit.debug.xcconfig b/Example/Pods/Target Support Files/Pods-PLCameraStreamingKit/Pods-PLCameraStreamingKit.debug.xcconfig index e2450ed..c20fb3e 100644 --- a/Example/Pods/Target Support Files/Pods-PLCameraStreamingKit/Pods-PLCameraStreamingKit.debug.xcconfig +++ b/Example/Pods/Target Support Files/Pods-PLCameraStreamingKit/Pods-PLCameraStreamingKit.debug.xcconfig @@ -1,8 +1,7 @@ -CLANG_MODULES_AUTOLINK = YES GCC_ENABLE_CPP_EXCEPTIONS = YES GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/GPUImage" "${PODS_ROOT}/Headers/Public/HappyDNS" "${PODS_ROOT}/Headers/Public/KSCrash" "${PODS_ROOT}/Headers/Public/PLCameraStreamingKit" "${PODS_ROOT}/Headers/Public/PLStreamingKit" "${PODS_ROOT}/Headers/Public/pili-librtmp" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/HappyDNS" "${PODS_ROOT}/Headers/Public/KSCrash" "${PODS_ROOT}/Headers/Public/PLCameraStreamingKit" "${PODS_ROOT}/Headers/Public/PLStreamingKit" "${PODS_ROOT}/Headers/Public/pili-librtmp" LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/../../Pod/Library/lib" $(inherited) "${PODS_ROOT}/PLStreamingKit/Pod/Library/lib" -OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/GPUImage" -isystem "${PODS_ROOT}/Headers/Public/HappyDNS" -isystem "${PODS_ROOT}/Headers/Public/KSCrash" -isystem "${PODS_ROOT}/Headers/Public/PLCameraStreamingKit" -isystem "${PODS_ROOT}/Headers/Public/PLStreamingKit" -isystem "${PODS_ROOT}/Headers/Public/pili-librtmp" -OTHER_LDFLAGS = $(inherited) -ObjC -l"GPUImage" -l"HappyDNS" -l"KSCrash" -l"PLCameraStreamingKit" -l"PLStreamingKit" -l"c++" -l"pili-librtmp" -l"resolv" -l"z" -framework "AVFoundation" -framework "AudioToolbox" -framework "CFNetwork" -framework "CoreGraphics" -framework "CoreMedia" -framework "Foundation" -framework "MessageUI" -framework "OpenGLES" -framework "QuartzCore" -framework "SystemConfiguration" -framework "UIKit" -framework "VideoToolbox" +OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/HappyDNS" -isystem "${PODS_ROOT}/Headers/Public/KSCrash" -isystem "${PODS_ROOT}/Headers/Public/PLCameraStreamingKit" -isystem "${PODS_ROOT}/Headers/Public/PLStreamingKit" -isystem "${PODS_ROOT}/Headers/Public/pili-librtmp" +OTHER_LDFLAGS = $(inherited) -ObjC -l"HappyDNS" -l"KSCrash" -l"PLCameraStreamingKit" -l"PLStreamingKit" -l"c++" -l"pili-librtmp" -l"resolv" -l"z" -framework "AVFoundation" -framework "AudioToolbox" -framework "CFNetwork" -framework "CoreGraphics" -framework "CoreMedia" -framework "Foundation" -framework "MessageUI" -framework "SystemConfiguration" -framework "UIKit" -framework "VideoToolbox" PODS_ROOT = ${SRCROOT}/Pods \ No newline at end of file diff --git a/Example/Pods/Target Support Files/Pods-PLCameraStreamingKit/Pods-PLCameraStreamingKit.release.xcconfig b/Example/Pods/Target Support Files/Pods-PLCameraStreamingKit/Pods-PLCameraStreamingKit.release.xcconfig index e2450ed..c20fb3e 100644 --- a/Example/Pods/Target Support Files/Pods-PLCameraStreamingKit/Pods-PLCameraStreamingKit.release.xcconfig +++ b/Example/Pods/Target Support Files/Pods-PLCameraStreamingKit/Pods-PLCameraStreamingKit.release.xcconfig @@ -1,8 +1,7 @@ -CLANG_MODULES_AUTOLINK = YES GCC_ENABLE_CPP_EXCEPTIONS = YES GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/GPUImage" "${PODS_ROOT}/Headers/Public/HappyDNS" "${PODS_ROOT}/Headers/Public/KSCrash" "${PODS_ROOT}/Headers/Public/PLCameraStreamingKit" "${PODS_ROOT}/Headers/Public/PLStreamingKit" "${PODS_ROOT}/Headers/Public/pili-librtmp" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/HappyDNS" "${PODS_ROOT}/Headers/Public/KSCrash" "${PODS_ROOT}/Headers/Public/PLCameraStreamingKit" "${PODS_ROOT}/Headers/Public/PLStreamingKit" "${PODS_ROOT}/Headers/Public/pili-librtmp" LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/../../Pod/Library/lib" $(inherited) "${PODS_ROOT}/PLStreamingKit/Pod/Library/lib" -OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/GPUImage" -isystem "${PODS_ROOT}/Headers/Public/HappyDNS" -isystem "${PODS_ROOT}/Headers/Public/KSCrash" -isystem "${PODS_ROOT}/Headers/Public/PLCameraStreamingKit" -isystem "${PODS_ROOT}/Headers/Public/PLStreamingKit" -isystem "${PODS_ROOT}/Headers/Public/pili-librtmp" -OTHER_LDFLAGS = $(inherited) -ObjC -l"GPUImage" -l"HappyDNS" -l"KSCrash" -l"PLCameraStreamingKit" -l"PLStreamingKit" -l"c++" -l"pili-librtmp" -l"resolv" -l"z" -framework "AVFoundation" -framework "AudioToolbox" -framework "CFNetwork" -framework "CoreGraphics" -framework "CoreMedia" -framework "Foundation" -framework "MessageUI" -framework "OpenGLES" -framework "QuartzCore" -framework "SystemConfiguration" -framework "UIKit" -framework "VideoToolbox" +OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/HappyDNS" -isystem "${PODS_ROOT}/Headers/Public/KSCrash" -isystem "${PODS_ROOT}/Headers/Public/PLCameraStreamingKit" -isystem "${PODS_ROOT}/Headers/Public/PLStreamingKit" -isystem "${PODS_ROOT}/Headers/Public/pili-librtmp" +OTHER_LDFLAGS = $(inherited) -ObjC -l"HappyDNS" -l"KSCrash" -l"PLCameraStreamingKit" -l"PLStreamingKit" -l"c++" -l"pili-librtmp" -l"resolv" -l"z" -framework "AVFoundation" -framework "AudioToolbox" -framework "CFNetwork" -framework "CoreGraphics" -framework "CoreMedia" -framework "Foundation" -framework "MessageUI" -framework "SystemConfiguration" -framework "UIKit" -framework "VideoToolbox" PODS_ROOT = ${SRCROOT}/Pods \ No newline at end of file diff --git a/Example/Pods/Target Support Files/pili-librtmp/pili-librtmp.xcconfig b/Example/Pods/Target Support Files/pili-librtmp/pili-librtmp.xcconfig index 31b0e20..9c139b3 100644 --- a/Example/Pods/Target Support Files/pili-librtmp/pili-librtmp.xcconfig +++ b/Example/Pods/Target Support Files/pili-librtmp/pili-librtmp.xcconfig @@ -1,4 +1,4 @@ GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/pili-librtmp" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/GPUImage" "${PODS_ROOT}/Headers/Public/HappyDNS" "${PODS_ROOT}/Headers/Public/KSCrash" "${PODS_ROOT}/Headers/Public/PLCameraStreamingKit" "${PODS_ROOT}/Headers/Public/PLStreamingKit" "${PODS_ROOT}/Headers/Public/pili-librtmp" +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/pili-librtmp" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/HappyDNS" "${PODS_ROOT}/Headers/Public/KSCrash" "${PODS_ROOT}/Headers/Public/PLCameraStreamingKit" "${PODS_ROOT}/Headers/Public/PLStreamingKit" "${PODS_ROOT}/Headers/Public/pili-librtmp" PODS_ROOT = ${SRCROOT} SKIP_INSTALL = YES \ No newline at end of file diff --git a/Example/Pods/pili-librtmp/Pod/Classes/pili-librtmp/parseurl.c b/Example/Pods/pili-librtmp/Pod/Classes/pili-librtmp/parseurl.c index 7f60f99..0e50352 100644 --- a/Example/Pods/pili-librtmp/Pod/Classes/pili-librtmp/parseurl.c +++ b/Example/Pods/pili-librtmp/Pod/Classes/pili-librtmp/parseurl.c @@ -137,11 +137,12 @@ int PILI_RTMP_ParseURL2(const char *url, int *protocol, AVal *host, unsigned int if (domainName != NULL && ques != NULL) { char *domain = strstr(ques, "domain="); if (domain) { + end = domain - 1; domain += 7; //skip "domain=" - char *end = strchr(domain, '&'); + char *domain_end = strchr(domain, '&'); int host_len = 0; - if (end) { - host_len = end - domain; + if (domain_end) { + host_len = domain_end - domain; } else { host_len = strlen(domain); } diff --git a/PLCameraStreamingKit.podspec b/PLCameraStreamingKit.podspec index 69f73fe..9ea61f7 100644 --- a/PLCameraStreamingKit.podspec +++ b/PLCameraStreamingKit.podspec @@ -9,7 +9,7 @@ Pod::Spec.new do |s| s.name = "PLCameraStreamingKit" - s.version = "1.8.0" + s.version = "1.8.1" s.summary = "Pili iOS camera streaming framework via RTMP." s.homepage = "https://github.com/pili-engineering/PLCameraStreamingKit" s.license = 'Apache License, Version 2.0' @@ -23,8 +23,7 @@ Pod::Spec.new do |s| s.public_header_files = 'Pod/Library/include/PLCameraStreamingKit/*.h' s.source_files = 'Pod/Library/include/PLCameraStreamingKit/*.h' - s.dependency 'PLStreamingKit', '~> 1.2.0' - s.dependency 'GPUImage', '0.1.7' + s.dependency 'PLStreamingKit', '1.2.5' s.frameworks = ['UIKit', 'AVFoundation', 'CoreGraphics', 'CFNetwork', 'AudioToolbox', 'CoreMedia', 'VideoToolbox'] s.libraries = 'z', 'c++' diff --git a/Pod/Library/include/PLCameraStreamingKit/PLAudioCaptureConfiguration.h b/Pod/Library/include/PLCameraStreamingKit/PLAudioCaptureConfiguration.h index 515f11a..c710cfc 100644 --- a/Pod/Library/include/PLCameraStreamingKit/PLAudioCaptureConfiguration.h +++ b/Pod/Library/include/PLCameraStreamingKit/PLAudioCaptureConfiguration.h @@ -12,6 +12,8 @@ /** @brief 采集音频数据的声道数,默认为 1 + + @warning 并非所有采集设备都支持多声道数据的采集,可以通过检查 [AVAudioSession sharedInstance].maximumInputNumberOfChannels 得到当前采集设备支持的最大声道数 */ @property (nonatomic, assign) NSUInteger channelsPerFrame; diff --git a/Pod/Library/include/PLCameraStreamingKit/PLCameraStreamingSession.h b/Pod/Library/include/PLCameraStreamingKit/PLCameraStreamingSession.h index 99ab2f8..12dfb13 100644 --- a/Pod/Library/include/PLCameraStreamingKit/PLCameraStreamingSession.h +++ b/Pod/Library/include/PLCameraStreamingKit/PLCameraStreamingSession.h @@ -139,7 +139,12 @@ typedef enum { /** * 是否开启动态调节帧率,默认为NO */ -@property (nonatomic,assign,getter = isDynamicFrameEnable) BOOL dynamicFrameEnable; +@property (nonatomic,assign, getter = isDynamicFrameEnable) BOOL dynamicFrameEnable; + +/** + * 是否开启推流断开后自动重连机制,默认为NO + */ +@property (nonatomic, assign, getter=isAutoReconnectEnable) BOOL autoReconnectEnable; #pragma mark - basic /*! @@ -179,7 +184,7 @@ typedef enum { /*! * 开始推流 * - * @param handler 流连接的结果会通过该回调方法返回 + * @param handler 流连接的结果会通过该回调方法返回,如果流连接成功将返回 YES,如果连接失败或当前流正在连接或已经连接将返回 NO * * @discussion 当调用过一次并且开始推流时,如果再调用该方法会直接返回不会做任何操作,尽管如此,也不要在没有断开时重复调用该方法。 * @@ -190,7 +195,7 @@ typedef enum { /*! * 重新开始推流 * - * @param handler 流连接的结果会通过该回调方法返回 + * @param handler 流连接的结果会通过该回调方法返回,如果流连接成功将返回 YES,如果连接失败或当前流正在连接或已经连接将返回 NO * * @discussion 当处于正在推流过程中时,由于业务原因(如用户网络从 3G/4G 切换到 WIFI)需要快速重新开始推流时,可以调用该方法;非推流过程中调用该方法会直接返回; * @@ -340,6 +345,10 @@ typedef enum { #pragma mark - Category (Processing) +/** + @brief 由于硬件性能限制,为了保证推流的质量,Processing 部分的 API 只支持 iPhone 5、iPad 3、iPod touch 4 及以上的设备,这些 API 在低端设备上将无效 + */ + @interface PLCameraStreamingSession (Processing) /** @@ -382,4 +391,12 @@ typedef enum { */ -(void)clearWaterMark; +/*! + @method versionInfo + @abstract PLCameraStreamingKit 的 SDK 版本。 + + @since v1.8.1 + */ ++ (NSString *)versionInfo; + @end diff --git a/Pod/Library/lib/libPLCameraStreamingKit.a b/Pod/Library/lib/libPLCameraStreamingKit.a index 070a75a..559bf3b 100644 Binary files a/Pod/Library/lib/libPLCameraStreamingKit.a and b/Pod/Library/lib/libPLCameraStreamingKit.a differ diff --git a/README.md b/README.md index 6a6d48d..c826108 100644 --- a/README.md +++ b/README.md @@ -415,17 +415,30 @@ PLCameraStreamingKit 使用 HeaderDoc 注释来做文档支持。 ## 版本历史 +- 1.8.1 ([Release Notes](https://github.com/pili-engineering/PLCameraStreamingKit/blob/master/ReleaseNotes/release-notes-1.8.1.md) && [API Diffs](https://github.com/pili-engineering/PLCameraStreamingKit/blob/master/APIDiffs/api-diffs-1.8.1.md)) + - 功能 + - 更新依赖的 PLStreamingKit 到 1.2.5 + - 新增自动重连功能,默认关闭 + - 新增模拟器编译支持 + - 水印和美颜功能调整为支持 iPhone 5、iPad 3、iPod touch 4 及以上设备 + - 缺陷 + - 修复已知场景可能存在的没有声音的问题 + - 修复填充模式改变可能导致 preview 的 frame 发生改变的问题 + - 修复触摸屏幕对焦无效的问题 + - 修复无法正确设置采集相机位置的问题 + - 修复 capture session 设置不正确可能导致 crash 的问题 + - 修复偶尔出现的画面卡住无法正常推流的问题 - 1.8.0 ([Release Notes](https://github.com/pili-engineering/PLCameraStreamingKit/blob/master/ReleaseNotes/release-notes-1.8.0.md) && [API Diffs](https://github.com/pili-engineering/PLCameraStreamingKit/blob/master/APIDiffs/api-diffs-1.8.0.md)) -- 功能 - - 更新依赖的 PLStreamingKit 到 1.2.4 - - 新增内置美颜功能,美颜效果可调节 - - 新增单独调节前后置摄像头预览及推流是否镜像的接口 - - 新增动态帧率功能,通过降低采集帧率来适配弱网环境 -- 缺陷 - - 修复音视频时间戳偶尔出现的非单调递增的缺陷 - - 修复特殊机型可能出现的没有声音的问题 -- 优化 - - 优化水印性能,降低 CPU 和内存消耗 + - 功能 + - 更新依赖的 PLStreamingKit 到 1.2.4 + - 新增内置美颜功能,美颜效果可调节 + - 新增单独调节前后置摄像头预览及推流是否镜像的接口 + - 新增动态帧率功能,通过降低采集帧率来适配弱网环境 + - 缺陷 + - 修复音视频时间戳偶尔出现的非单调递增的缺陷 + - 修复特殊机型可能出现的没有声音的问题 + - 优化 + - 优化水印性能,降低 CPU 和内存消耗 - 1.7.2 ([Release Notes](https://github.com/pili-engineering/PLCameraStreamingKit/blob/master/ReleaseNotes/release-notes-1.7.2.md) && [API Diffs](https://github.com/pili-engineering/PLCameraStreamingKit/blob/master/APIDiffs/api-diffs-1.7.2.md)) - 功能 - 更新依赖的 PLStreamingKit 到 1.2.2 @@ -447,13 +460,10 @@ PLCameraStreamingKit 使用 HeaderDoc 注释来做文档支持。 - 新增后台推流功能(仅音频,因 iOS 隐私限制不允许后台访问摄像头) - 新增水印功能 - 新增可选定制美颜功能(需联系工作人员) - - 缺陷 - 修复特定机型上的电流音等杂音问题 - - 版本 - 更新依赖 PLStreamingKit 的版本到 `v1.2.0` - - 其他 - 部分接口重命名 - 1.6.3 ([Release Notes](https://github.com/pili-engineering/PLCameraStreamingKit/blob/master/ReleaseNotes/release-notes-1.6.2.md) && [API Diffs](https://github.com/pili-engineering/PLCameraStreamingKit/blob/master/APIDiffs/api-diffs-1.6.2.md)) diff --git a/ReleaseNotes/release-notes-1.8.1.md b/ReleaseNotes/release-notes-1.8.1.md new file mode 100644 index 0000000..2fd949b --- /dev/null +++ b/ReleaseNotes/release-notes-1.8.1.md @@ -0,0 +1,34 @@ +# PLCameraStreamingKit Release Notes for 1.8.1 + +## 内容 + +- [简介](#简介) +- [问题反馈](#问题反馈) +- [记录](#记录) + +## 简介 + +PLCameraStreamingKit 为 iOS 开发者提供直播推流 SDK。 + +## 问题反馈 + +当你遇到任何问题时,可以通过在 GitHub 的 repo 提交 ```issues``` 来反馈问题,请尽可能的描述清楚遇到的问题,如果有错误信息也一同附带,并且在 ```Labels``` 中指明类型为 bug 或者其他。 + +[通过这里查看已有的 issues 和提交 Bug](https://github.com/pili-engineering/PLCameraStreamingKit/issues) + +## 记录 + +### 架构 + +- 功能 + - 更新依赖的 PLStreamingKit 到 1.2.5 + - 新增自动重连功能,默认关闭 + - 新增模拟器编译支持 + - 水印和美颜功能调整为支持 iPhone 5、iPad 3、iPod touch 4 及以上设备 +- 缺陷 + - 修复已知场景可能存在的没有声音的问题 + - 修复填充模式改变可能导致 preview 的 frame 发生改变的问题 + - 修复触摸屏幕对焦无效的问题 + - 修复无法正确设置采集相机位置的问题 + - 修复 capture session 设置不正确可能导致 crash 的问题 + - 修复偶尔出现的画面卡住无法正常推流的问题