diff --git a/ios-rongimdemo/RCloudMessage.xcodeproj/project.pbxproj b/ios-rongimdemo/RCloudMessage.xcodeproj/project.pbxproj index b3db3d2b..c65759d5 100644 --- a/ios-rongimdemo/RCloudMessage.xcodeproj/project.pbxproj +++ b/ios-rongimdemo/RCloudMessage.xcodeproj/project.pbxproj @@ -65,7 +65,6 @@ 2E7A36E11E03A876005231BE /* JResource.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 2E7A36DB1E03A876005231BE /* JResource.bundle */; }; 2E7A36E21E03A876005231BE /* jrmf.cer in Resources */ = {isa = PBXBuildFile; fileRef = 2E7A36DC1E03A876005231BE /* jrmf.cer */; }; 2E7A36E41E03A876005231BE /* JrmfWalletKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2E7A36DE1E03A876005231BE /* JrmfWalletKit.framework */; }; - 2E7A36E51E03A876005231BE /* JYangToolKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2E7A36DF1E03A876005231BE /* JYangToolKit.framework */; }; 2E7A36E61E03A876005231BE /* WalletResource.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 2E7A36E01E03A876005231BE /* WalletResource.bundle */; }; 466684241B5DEA10000B7504 /* RCDSettingBaseViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 466684231B5DEA10000B7504 /* RCDSettingBaseViewController.m */; }; 466684271B5DEA5B000B7504 /* RCDConversationSettingBaseViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 466684261B5DEA5B000B7504 /* RCDConversationSettingBaseViewController.m */; }; @@ -87,6 +86,7 @@ 5C0253F41B53D6F8003F48D9 /* RCDBlackListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C0253F31B53D6F8003F48D9 /* RCDBlackListViewController.m */; }; 5C7629831B54F7E60027DA82 /* RCDBlackListCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C7629821B54F7E60027DA82 /* RCDBlackListCell.m */; }; 6E1C98201F39C90C008F96D8 /* libresolv.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 6E1C981F1F39C90C008F96D8 /* libresolv.tbd */; }; + 771BB16221B155B40066AE4A /* JYangToolKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 771BB16121B155B40066AE4A /* JYangToolKit.framework */; }; 7755B4BC2106CE9F000C2DA8 /* JrmfPacketKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7755B4BB2106CE9F000C2DA8 /* JrmfPacketKit.framework */; }; 77F56BF620874DEE00D080F7 /* RCColor.plist in Resources */ = {isa = PBXBuildFile; fileRef = 77F56BF520874DEE00D080F7 /* RCColor.plist */; }; 8C55EB511B2A8CE5004285F4 /* Emoji.plist in Resources */ = {isa = PBXBuildFile; fileRef = 8C55EB501B2A8CE5004285F4 /* Emoji.plist */; }; @@ -318,6 +318,9 @@ E4FCD7C41AD69DFB00915650 /* ImageIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E4FCD7C31AD69DFB00915650 /* ImageIO.framework */; }; E84C4F9A215A5BBE004A469D /* Bailingquic.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E84C4F98215A5BBE004A469D /* Bailingquic.framework */; }; E84C4F9B215A5BBE004A469D /* GPUImage.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E84C4F99215A5BBE004A469D /* GPUImage.framework */; }; + F1D49DB621ABE4A70047381F /* NotificationService.m in Sources */ = {isa = PBXBuildFile; fileRef = F1D49DB521ABE4A70047381F /* NotificationService.m */; }; + F1D49DBA21ABE4A70047381F /* ServiceExtension.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = F1D49DB221ABE4A70047381F /* ServiceExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; + F1E7784C21A622B00005C37D /* UserNotifications.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F1E7784B21A622B00005C37D /* UserNotifications.framework */; }; F821B7F51BE75BFD00F0D14C /* libMobClickLibrary.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F821B7F41BE75BFD00F0D14C /* libMobClickLibrary.a */; }; F82B55401DE03E40007392BD /* SafariServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F82B553F1DE03E40007392BD /* SafariServices.framework */; }; F836AB0E1C2262C400A1A5D2 /* RCDTestMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = F836AB0D1C2262C400A1A5D2 /* RCDTestMessage.m */; }; @@ -347,6 +350,13 @@ remoteGlobalIDString = A6447A131B1DBE6500EA2CEE; remoteInfo = "融云 Demo WatchKit App"; }; + F1D49DB821ABE4A70047381F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = E4D40F201A031F460045097C /* Project object */; + proxyType = 1; + remoteGlobalIDString = F1D49DB121ABE4A70047381F; + remoteInfo = ServiceExtension; + }; /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ @@ -356,6 +366,7 @@ dstPath = ""; dstSubfolderSpec = 13; files = ( + F1D49DBA21ABE4A70047381F /* ServiceExtension.appex in Embed App Extensions */, 17D7D1E31D534F56000AEC54 /* SealTalkShareExtension.appex in Embed App Extensions */, ); name = "Embed App Extensions"; @@ -463,7 +474,6 @@ 2E7A36DB1E03A876005231BE /* JResource.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = JResource.bundle; sourceTree = ""; }; 2E7A36DC1E03A876005231BE /* jrmf.cer */ = {isa = PBXFileReference; lastKnownFileType = file; path = jrmf.cer; sourceTree = ""; }; 2E7A36DE1E03A876005231BE /* JrmfWalletKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = JrmfWalletKit.framework; sourceTree = ""; }; - 2E7A36DF1E03A876005231BE /* JYangToolKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = JYangToolKit.framework; sourceTree = ""; }; 2E7A36E01E03A876005231BE /* WalletResource.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = WalletResource.bundle; sourceTree = ""; }; 466684221B5DEA10000B7504 /* RCDSettingBaseViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = RCDSettingBaseViewController.h; path = RCloudMessage/RCDSettingBaseViewController.h; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; 466684231B5DEA10000B7504 /* RCDSettingBaseViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; name = RCDSettingBaseViewController.m; path = RCloudMessage/RCDSettingBaseViewController.m; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; @@ -503,6 +513,7 @@ 5C7629811B54F7E60027DA82 /* RCDBlackListCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = RCDBlackListCell.h; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; 5C7629821B54F7E60027DA82 /* RCDBlackListCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = RCDBlackListCell.m; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; 6E1C981F1F39C90C008F96D8 /* libresolv.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libresolv.tbd; path = usr/lib/libresolv.tbd; sourceTree = SDKROOT; }; + 771BB16121B155B40066AE4A /* JYangToolKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = JYangToolKit.framework; sourceTree = ""; }; 7755B4BB2106CE9F000C2DA8 /* JrmfPacketKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = JrmfPacketKit.framework; sourceTree = ""; }; 77F56BF520874DEE00D080F7 /* RCColor.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = RCColor.plist; path = framework/RCColor.plist; sourceTree = SOURCE_ROOT; }; 8C55EB501B2A8CE5004285F4 /* Emoji.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Emoji.plist; path = framework/Emoji.plist; sourceTree = SOURCE_ROOT; }; @@ -942,6 +953,12 @@ E4FCD7C31AD69DFB00915650 /* ImageIO.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ImageIO.framework; path = System/Library/Frameworks/ImageIO.framework; sourceTree = SDKROOT; }; E84C4F98215A5BBE004A469D /* Bailingquic.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Bailingquic.framework; path = Blink/Bailingquic.framework; sourceTree = SOURCE_ROOT; }; E84C4F99215A5BBE004A469D /* GPUImage.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GPUImage.framework; path = Blink/GPUImage.framework; sourceTree = SOURCE_ROOT; }; + F1D49DB221ABE4A70047381F /* ServiceExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = ServiceExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; }; + F1D49DB421ABE4A70047381F /* NotificationService.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NotificationService.h; sourceTree = ""; }; + F1D49DB521ABE4A70047381F /* NotificationService.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NotificationService.m; sourceTree = ""; }; + F1D49DB721ABE4A70047381F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + F1D49DC021ABE4CD0047381F /* ServiceExtension.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = ServiceExtension.entitlements; sourceTree = ""; }; + F1E7784B21A622B00005C37D /* UserNotifications.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UserNotifications.framework; path = System/Library/Frameworks/UserNotifications.framework; sourceTree = SDKROOT; }; F821B7F21BE75BF500F0D14C /* MobClick.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MobClick.h; path = UMAnalytics/MobClick.h; sourceTree = ""; }; F821B7F31BE75BF500F0D14C /* MobClickSocialAnalytics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MobClickSocialAnalytics.h; path = UMAnalytics/MobClickSocialAnalytics.h; sourceTree = ""; }; F821B7F41BE75BFD00F0D14C /* libMobClickLibrary.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libMobClickLibrary.a; path = ../RCloudMessage/Utilities/UMAnalytics/libMobClickLibrary.a; sourceTree = ""; }; @@ -987,11 +1004,13 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + F1E7784C21A622B00005C37D /* UserNotifications.framework in Frameworks */, B2A68D7A212FDBA9006FADEC /* RongSight.framework in Frameworks */, 1D3A232E212D540A009514F1 /* RongSticker.framework in Frameworks */, A6BD6E2220A5AD880063F51D /* Bailingquic.framework in Frameworks */, 9870725020A17AC3008EE653 /* GLKit.framework in Frameworks */, 9870724E20A17AB9008EE653 /* OpenGLES.framework in Frameworks */, + 771BB16221B155B40066AE4A /* JYangToolKit.framework in Frameworks */, 9870724D20A17967008EE653 /* Blink.framework in Frameworks */, 2724CCD71FF34411006FFC86 /* Contacts.framework in Frameworks */, 6E1C98201F39C90C008F96D8 /* libresolv.tbd in Frameworks */, @@ -1004,7 +1023,6 @@ E4C330F41A0C722300E31B9A /* AudioToolbox.framework in Frameworks */, 27AADC261DDC4DB800E1AE31 /* AddressBook.framework in Frameworks */, E4C330F21A0C721D00E31B9A /* AVFoundation.framework in Frameworks */, - 2E7A36E51E03A876005231BE /* JYangToolKit.framework in Frameworks */, E4C330FC1A0C724A00E31B9A /* CoreTelephony.framework in Frameworks */, 27C42ED51DE2FD7B003E2306 /* RongiFlyKit.framework in Frameworks */, E4C497211A24849E00098C8A /* CoreLocation.framework in Frameworks */, @@ -1040,6 +1058,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + F1D49DAF21ABE4A70047381F /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ @@ -1194,7 +1219,7 @@ 2E7A36DC1E03A876005231BE /* jrmf.cer */, 7755B4BB2106CE9F000C2DA8 /* JrmfPacketKit.framework */, 2E7A36DE1E03A876005231BE /* JrmfWalletKit.framework */, - 2E7A36DF1E03A876005231BE /* JYangToolKit.framework */, + 771BB16121B155B40066AE4A /* JYangToolKit.framework */, 2E7A36E01E03A876005231BE /* WalletResource.bundle */, 2E6B9A1B1E127C0C006EA6B4 /* zh-Hans.lproj */, ); @@ -1882,6 +1907,7 @@ E4C4E7E71A0A309100140067 /* Frameworks */ = { isa = PBXGroup; children = ( + F1E7784B21A622B00005C37D /* UserNotifications.framework */, E84C4F98215A5BBE004A469D /* Bailingquic.framework */, E84C4F99215A5BBE004A469D /* GPUImage.framework */, B2A68D79212FDBA9006FADEC /* RongSight.framework */, @@ -1955,6 +1981,7 @@ A6447A061B1DBE6500EA2CEE /* 融云 Demo WatchKit Extension */, A6447A181B1DBE6500EA2CEE /* 融云 Demo WatchKit App */, 17D7D1D91D534F56000AEC54 /* SealTalkShareExtension */, + F1D49DB321ABE4A70047381F /* ServiceExtension */, E4C4E7E71A0A309100140067 /* Frameworks */, E4D40F291A031F460045097C /* Products */, ); @@ -1968,6 +1995,7 @@ A6447A051B1DBE6500EA2CEE /* SealTalk WatchKit Extension.appex */, A6447A141B1DBE6500EA2CEE /* SealTalk WatchKit App.app */, 17D7D1D81D534F56000AEC54 /* SealTalkShareExtension.appex */, + F1D49DB221ABE4A70047381F /* ServiceExtension.appex */, ); name = Products; sourceTree = ""; @@ -2207,6 +2235,17 @@ name = SettingViewController; sourceTree = ""; }; + F1D49DB321ABE4A70047381F /* ServiceExtension */ = { + isa = PBXGroup; + children = ( + F1D49DC021ABE4CD0047381F /* ServiceExtension.entitlements */, + F1D49DB421ABE4A70047381F /* NotificationService.h */, + F1D49DB521ABE4A70047381F /* NotificationService.m */, + F1D49DB721ABE4A70047381F /* Info.plist */, + ); + path = ServiceExtension; + sourceTree = ""; + }; F821B7F11BE75BD000F0D14C /* UMAnalytics */ = { isa = PBXGroup; children = ( @@ -2327,18 +2366,38 @@ ); dependencies = ( 17D7D1E21D534F56000AEC54 /* PBXTargetDependency */, + F1D49DB921ABE4A70047381F /* PBXTargetDependency */, ); name = SealTalk; productName = RongCloud; productReference = E4D40F281A031F460045097C /* SealTalk.app */; productType = "com.apple.product-type.application"; }; + F1D49DB121ABE4A70047381F /* ServiceExtension */ = { + isa = PBXNativeTarget; + buildConfigurationList = F1D49DBB21ABE4A70047381F /* Build configuration list for PBXNativeTarget "ServiceExtension" */; + buildPhases = ( + F1D49DAE21ABE4A70047381F /* Sources */, + F1D49DAF21ABE4A70047381F /* Frameworks */, + F1D49DB021ABE4A70047381F /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = ServiceExtension; + productName = ServiceExtension; + productReference = F1D49DB221ABE4A70047381F /* ServiceExtension.appex */; + productType = "com.apple.product-type.app-extension"; + }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ E4D40F201A031F460045097C /* Project object */ = { isa = PBXProject; attributes = { + DefaultBuildSystemTypeForWorkspace = Original; + LastSwiftUpdateCheck = 1010; LastUpgradeCheck = 0620; ORGANIZATIONNAME = RongCloud; TargetAttributes = { @@ -2379,6 +2438,15 @@ }; }; }; + F1D49DB121ABE4A70047381F = { + CreatedOnToolsVersion = 10.1; + ProvisioningStyle = Automatic; + SystemCapabilities = { + com.apple.Push = { + enabled = 1; + }; + }; + }; }; }; buildConfigurationList = E4D40F231A031F460045097C /* Build configuration list for PBXProject "RCloudMessage" */; @@ -2399,6 +2467,7 @@ A6447A041B1DBE6500EA2CEE /* SealTalk WatchKit Extension */, A6447A131B1DBE6500EA2CEE /* SealTalk WatchKit App */, 17D7D1D71D534F56000AEC54 /* SealTalkShareExtension */, + F1D49DB121ABE4A70047381F /* ServiceExtension */, ); }; /* End PBXProject section */ @@ -2457,6 +2526,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + F1D49DB021ABE4A70047381F /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ @@ -2737,6 +2813,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + F1D49DAE21ABE4A70047381F /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + F1D49DB621ABE4A70047381F /* NotificationService.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ @@ -2750,6 +2834,11 @@ target = A6447A131B1DBE6500EA2CEE /* SealTalk WatchKit App */; targetProxy = A6447A161B1DBE6500EA2CEE /* PBXContainerItemProxy */; }; + F1D49DB921ABE4A70047381F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = F1D49DB121ABE4A70047381F /* ServiceExtension */; + targetProxy = F1D49DB821ABE4A70047381F /* PBXContainerItemProxy */; + }; /* End PBXTargetDependency section */ /* Begin PBXVariantGroup section */ @@ -2956,6 +3045,7 @@ A608834E1B3954240003B082 /* AutoDebug */ = { isa = XCBuildConfiguration; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ALWAYS_SEARCH_USER_PATHS = NO; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = NO; @@ -3109,6 +3199,7 @@ A60883521B3972CB0003B082 /* AutoRelease */ = { isa = XCBuildConfiguration; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ALWAYS_SEARCH_USER_PATHS = NO; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = NO; @@ -3421,6 +3512,7 @@ E4D40F4F1A031F460045097C /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ALWAYS_SEARCH_USER_PATHS = NO; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = NO; @@ -3470,6 +3562,7 @@ E4D40F501A031F460045097C /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ALWAYS_SEARCH_USER_PATHS = NO; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = NO; @@ -3515,6 +3608,207 @@ }; name = Release; }; + F1D49DBC21ABE4A70047381F /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_ENTITLEMENTS = ServiceExtension/ServiceExtension.entitlements; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + CODE_SIGN_STYLE = Automatic; + DEBUG_INFORMATION_FORMAT = dwarf; + DEVELOPMENT_TEAM = 9CVMN4UZK4; + ENABLE_TESTABILITY = YES; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/framework", + ); + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + INFOPLIST_FILE = ServiceExtension/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/framework", + ); + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = NO; + PRODUCT_BUNDLE_IDENTIFIER = cn.rongcloud.im.ServiceExtension; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + F1D49DBD21ABE4A70047381F /* AutoDebug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_ENTITLEMENTS = ServiceExtension/ServiceExtension.entitlements; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + CODE_SIGN_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEVELOPMENT_TEAM = 9CVMN4UZK4; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/framework", + ); + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + INFOPLIST_FILE = ServiceExtension/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/framework", + ); + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = NO; + PRODUCT_BUNDLE_IDENTIFIER = cn.rongcloud.im.ServiceExtension; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = AutoDebug; + }; + F1D49DBE21ABE4A70047381F /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_ENTITLEMENTS = ServiceExtension/ServiceExtension.entitlements; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + CODE_SIGN_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEVELOPMENT_TEAM = 9CVMN4UZK4; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/framework", + ); + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + INFOPLIST_FILE = ServiceExtension/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/framework", + ); + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = NO; + PRODUCT_BUNDLE_IDENTIFIER = cn.rongcloud.im.ServiceExtension; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + F1D49DBF21ABE4A70047381F /* AutoRelease */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_ENTITLEMENTS = ServiceExtension/ServiceExtension.entitlements; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + CODE_SIGN_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEVELOPMENT_TEAM = 9CVMN4UZK4; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/framework", + ); + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + INFOPLIST_FILE = ServiceExtension/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/framework", + ); + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = NO; + PRODUCT_BUNDLE_IDENTIFIER = cn.rongcloud.im.ServiceExtension; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = AutoRelease; + }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ @@ -3573,6 +3867,17 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + F1D49DBB21ABE4A70047381F /* Build configuration list for PBXNativeTarget "ServiceExtension" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + F1D49DBC21ABE4A70047381F /* Debug */, + F1D49DBD21ABE4A70047381F /* AutoDebug */, + F1D49DBE21ABE4A70047381F /* Release */, + F1D49DBF21ABE4A70047381F /* AutoRelease */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; /* End XCConfigurationList section */ }; rootObject = E4D40F201A031F460045097C /* Project object */; diff --git a/ios-rongimdemo/RCloudMessage/Info.plist b/ios-rongimdemo/RCloudMessage/Info.plist index f2372407..77ba9607 100644 --- a/ios-rongimdemo/RCloudMessage/Info.plist +++ b/ios-rongimdemo/RCloudMessage/Info.plist @@ -19,7 +19,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 2.9.8 Dev + 2.9.9 Dev CFBundleSignature ???? CFBundleURLTypes @@ -42,7 +42,7 @@ CFBundleVersion - 201811221848 + 201901091923 LSRequiresIPhoneOS NSAppTransportSecurity @@ -63,7 +63,7 @@ NSPhotoLibraryAddUsageDescription 访问相册 SealTalk Version - 1.3.8 + 1.3.9 UIBackgroundModes audio diff --git a/ios-rongimdemo/RCloudMessage/RCDChatViewController.m b/ios-rongimdemo/RCloudMessage/RCDChatViewController.m index dd580101..8412f035 100644 --- a/ios-rongimdemo/RCloudMessage/RCDChatViewController.m +++ b/ios-rongimdemo/RCloudMessage/RCDChatViewController.m @@ -1136,7 +1136,6 @@ - (void)forwardMessage{ - (void)onEndForwardMessage:(NSNotification *)notification{ //置为 NO,将消息 cell 重置为初始状态 self.allowsMessageCellSelection = NO; - [self.conversationMessageCollectionView reloadItemsAtIndexPaths:[self.conversationMessageCollectionView indexPathsForVisibleItems]]; } - (void)deleteMessages{ diff --git a/ios-rongimdemo/RCloudMessage/RCDCustomerServiceViewController.m b/ios-rongimdemo/RCloudMessage/RCDCustomerServiceViewController.m index 2ef17adf..7786e73c 100644 --- a/ios-rongimdemo/RCloudMessage/RCDCustomerServiceViewController.m +++ b/ios-rongimdemo/RCloudMessage/RCDCustomerServiceViewController.m @@ -29,23 +29,8 @@ @implementation RCDCustomerServiceViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. - [self notifyUpdateUnreadMessageCount]; self.evaStarDic = [NSMutableDictionary dictionary]; - /* - UIButton *button = - [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 25, 25)]; - UIImageView *imageView = - [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Private_Setting"]]; - imageView.frame = CGRectMake(15, 5,16 , 17); - [button addSubview:imageView]; - [button addTarget:self - action:@selector(rightBarButtonItemClicked:) - forControlEvents:UIControlEventTouchUpInside]; - UIBarButtonItem *rightBarButton = - [[UIBarButtonItem alloc] initWithCustomView:button]; - */ - self.navigationItem.rightBarButtonItem = nil; [[RCIMClient sharedRCIMClient] getHumanEvaluateCustomerServiceConfig:^(NSDictionary *evaConfig) { NSArray *array = [evaConfig valueForKey:@"evaConfig"]; @@ -60,25 +45,11 @@ - (void)viewDidLoad { }]; } -/* -- (void)rightBarButtonItemClicked:(id)sender { - RCDSettingBaseViewController *settingVC = - [[RCDSettingBaseViewController alloc] init]; - settingVC.conversationType = self.conversationType; - settingVC.targetId = self.targetId; - //清除聊天记录之后reload data - __weak typeof(self) weakSelf = self; - settingVC.clearHistoryCompletion = ^(BOOL isSuccess) { - if (isSuccess) { - [weakSelf.conversationDataRepository removeAllObjects]; - dispatch_async(dispatch_get_main_queue(), ^{ - [weakSelf.conversationMessageCollectionView reloadData]; - }); - } - }; - [self.navigationController pushViewController:settingVC animated:YES]; +-(void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + [self createNavLeftBarButtonItem]; + self.navigationItem.rightBarButtonItems = nil; } -*/ - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; @@ -89,11 +60,8 @@ - (void)didReceiveMemoryWarning { //这个函数是基类的函数,他会根据当前服务时间来决定是否弹出评价,根据服务的类型来决定弹出评价类型。 //弹出评价的函数是commentCustomerServiceAndQuit,应用可以根据这个函数内的注释来自定义评价界面。 //等待用户评价结束后调用如下函数离开当前VC。 -- (void)leftBarButtonItemPressed:(id)sender { - //需要调用super的实现 - [super leftBarButtonItemPressed:sender]; - - [self.navigationController popToRootViewControllerAnimated:YES]; +- (void)clickLeftBarButtonItem:(id)sender { + [super customerServiceLeftCurrentViewController]; } //评价客服,并离开当前会话 @@ -112,7 +80,7 @@ - (void)leftBarButtonItemPressed:(id)sender { //(void)commentCustomerServiceWithStatus:(RCCustomerServiceStatus)serviceStatus //commentId:(NSString *)commentId quitAfterComment:(BOOL)isQuit { // if (isQuit) { -// [self leftBarButtonItemPressed:nil]; +// [super customerServiceLeftCurrentViewController];; // } //} //*********应用去掉评价界面结束************* @@ -129,7 +97,7 @@ - (void)leftBarButtonItemPressed:(id)sender { self.commentId = commentId; self.quitAfterComment = isQuit; if (serviceStatus == 0) { - [self leftBarButtonItemPressed:nil]; + [super customerServiceLeftCurrentViewController];; } else if (serviceStatus == 1) { //人工评价结果 [self.evaluateView show]; @@ -159,7 +127,7 @@ - (void)alertView:(UIAlertView *)alertView } //(2)离开当前客服VC if (self.quitAfterComment) { - [self leftBarButtonItemPressed:nil]; + [super customerServiceLeftCurrentViewController];; } } @@ -187,14 +155,14 @@ - (void)didTapViewAction{ - (void)didSubmitEvaluate:(RCCSResolveStatus)solveStatus star:(int)star tagString:(NSString *)tagString suggest:(NSString *)suggest{ [[RCIMClient sharedRCIMClient] evaluateCustomerService:self.targetId dialogId:nil starValue:star suggest:suggest resolveStatus:solveStatus tagText:tagString extra:nil]; if (self.quitAfterComment) { - [self leftBarButtonItemPressed:nil]; + [super customerServiceLeftCurrentViewController];; } } - (void)dismissEvaluateView{ [self.evaluateView hide]; if (self.quitAfterComment) { - [self leftBarButtonItemPressed:nil]; + [super customerServiceLeftCurrentViewController];; } } @@ -218,4 +186,23 @@ - (RCDCSAnnounceView *)announceView{ } return _announceView; } + +#pragma mark Navigation Setting +- (void) createNavLeftBarButtonItem { + UIButton *backBtn = [UIButton buttonWithType:UIButtonTypeCustom]; + backBtn.frame = CGRectMake(0, 6, 72, 23); + UILabel *backText = [[UILabel alloc] initWithFrame:CGRectMake(12, 0, 70, 22)]; + backText.text = @"返回"; + backText.font = [UIFont systemFontOfSize:17]; + [backText setBackgroundColor:[UIColor clearColor]]; + [backText setTextColor:[RCIM sharedRCIM].globalNavigationBarTintColor]; + [backBtn addSubview:backText]; + UIImageView *backImg = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"back"]]; + backImg.frame = CGRectMake(-8, 0, 15, 22); + [backBtn addSubview:backImg]; + [backBtn addTarget:self action:@selector(clickLeftBarButtonItem:) forControlEvents:UIControlEventTouchUpInside]; + UIBarButtonItem *leftButton = [[UIBarButtonItem alloc] initWithCustomView:backBtn]; + [self.navigationItem setLeftBarButtonItem:leftButton]; +} + @end diff --git a/ios-rongimdemo/RCloudMessage/RCDTestMessage.m b/ios-rongimdemo/RCloudMessage/RCDTestMessage.m index c324eeac..bb479ea1 100644 --- a/ios-rongimdemo/RCloudMessage/RCDTestMessage.m +++ b/ios-rongimdemo/RCloudMessage/RCDTestMessage.m @@ -49,18 +49,9 @@ - (NSData *)encode { } if (self.senderUserInfo) { - NSMutableDictionary *userInfoDic = [[NSMutableDictionary alloc] init]; - if (self.senderUserInfo.name) { - [userInfoDic setObject:self.senderUserInfo.name forKeyedSubscript:@"name"]; - } - if (self.senderUserInfo.portraitUri) { - [userInfoDic setObject:self.senderUserInfo.portraitUri forKeyedSubscript:@"portrait"]; - } - if (self.senderUserInfo.userId) { - [userInfoDic setObject:self.senderUserInfo.userId forKeyedSubscript:@"id"]; - } - [dataDict setObject:userInfoDic forKey:@"user"]; + [dataDict setObject:[self encodeUserInfo:self.senderUserInfo] forKey:@"user"]; } + NSData *data = [NSJSONSerialization dataWithJSONObject:dataDict options:kNilOptions error:nil]; return data; } diff --git a/ios-rongimdemo/RCloudMessage/Utilities/SSZipArchive/SSZipArchive.m b/ios-rongimdemo/RCloudMessage/Utilities/SSZipArchive/SSZipArchive.m index 05baf310..90973c22 100755 --- a/ios-rongimdemo/RCloudMessage/Utilities/SSZipArchive/SSZipArchive.m +++ b/ios-rongimdemo/RCloudMessage/Utilities/SSZipArchive/SSZipArchive.m @@ -11,6 +11,8 @@ #include "zip.h" #include "minishared.h" +#include + NSString *const SSZipArchiveErrorDomain = @"SSZipArchiveErrorDomain"; #define CHUNK 16384 diff --git a/ios-rongimdemo/RCloudMessage/Utilities/SSZipArchive/minizip/aes/aes_ni.c b/ios-rongimdemo/RCloudMessage/Utilities/SSZipArchive/minizip/aes/aes_ni.c index 93ee06b2..1d1ca311 100755 --- a/ios-rongimdemo/RCloudMessage/Utilities/SSZipArchive/minizip/aes/aes_ni.c +++ b/ios-rongimdemo/RCloudMessage/Utilities/SSZipArchive/minizip/aes/aes_ni.c @@ -16,6 +16,7 @@ and fitness for purpose. --------------------------------------------------------------------------- Issue Date: 09/09/2014 */ +#include "aes_ni.h" #if defined( USE_INTEL_AES_IF_PRESENT ) diff --git a/ios-rongimdemo/RCloudMessage/Utilities/SSZipArchive/minizip/aes/aestab.c b/ios-rongimdemo/RCloudMessage/Utilities/SSZipArchive/minizip/aes/aestab.c index c1a3eba9..3d48edf3 100755 --- a/ios-rongimdemo/RCloudMessage/Utilities/SSZipArchive/minizip/aes/aestab.c +++ b/ios-rongimdemo/RCloudMessage/Utilities/SSZipArchive/minizip/aes/aestab.c @@ -173,6 +173,8 @@ Issue Date: 20/12/2007 #endif +#include "aestab.h" + #if defined(__cplusplus) extern "C" { diff --git a/ios-rongimdemo/RCloudMessage/Utilities/SSZipArchive/minizip/crypt.c b/ios-rongimdemo/RCloudMessage/Utilities/SSZipArchive/minizip/crypt.c index 57e6a3b1..9c1203b1 100755 --- a/ios-rongimdemo/RCloudMessage/Utilities/SSZipArchive/minizip/crypt.c +++ b/ios-rongimdemo/RCloudMessage/Utilities/SSZipArchive/minizip/crypt.c @@ -26,11 +26,16 @@ #include #include +#include +#include #ifdef _WIN32 # include # include #else +# include +# include +# include #endif #include "zlib.h" diff --git a/ios-rongimdemo/RCloudMessage/Utilities/SSZipArchive/minizip/minishared.c b/ios-rongimdemo/RCloudMessage/Utilities/SSZipArchive/minizip/minishared.c index 596d8246..7dbc43b7 100755 --- a/ios-rongimdemo/RCloudMessage/Utilities/SSZipArchive/minizip/minishared.c +++ b/ios-rongimdemo/RCloudMessage/Utilities/SSZipArchive/minizip/minishared.c @@ -4,15 +4,19 @@ #include #include #include +#include +#include "zlib.h" #include "ioapi.h" #ifdef _WIN32 # include # include #else +# include # include +# include # include #endif diff --git a/ios-rongimdemo/RCloudMessage/Utilities/SSZipArchive/minizip/unzip.c b/ios-rongimdemo/RCloudMessage/Utilities/SSZipArchive/minizip/unzip.c index fef35162..90a73103 100755 --- a/ios-rongimdemo/RCloudMessage/Utilities/SSZipArchive/minizip/unzip.c +++ b/ios-rongimdemo/RCloudMessage/Utilities/SSZipArchive/minizip/unzip.c @@ -19,7 +19,9 @@ #include #include +#include #include +#include #include #include "zlib.h" diff --git a/ios-rongimdemo/RCloudMessage/Utilities/SSZipArchive/minizip/zip.c b/ios-rongimdemo/RCloudMessage/Utilities/SSZipArchive/minizip/zip.c index 74591167..e2a4c234 100755 --- a/ios-rongimdemo/RCloudMessage/Utilities/SSZipArchive/minizip/zip.c +++ b/ios-rongimdemo/RCloudMessage/Utilities/SSZipArchive/minizip/zip.c @@ -17,7 +17,9 @@ #include #include +#include #include +#include #include #include "zlib.h" diff --git a/ios-rongimdemo/ServiceExtension/Info.plist b/ios-rongimdemo/ServiceExtension/Info.plist new file mode 100644 index 00000000..a6c1b33f --- /dev/null +++ b/ios-rongimdemo/ServiceExtension/Info.plist @@ -0,0 +1,31 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + ServiceExtension + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + XPC! + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + NSExtension + + NSExtensionPointIdentifier + com.apple.usernotifications.service + NSExtensionPrincipalClass + NotificationService + + + diff --git a/ios-rongimdemo/ServiceExtension/NotificationService.h b/ios-rongimdemo/ServiceExtension/NotificationService.h new file mode 100644 index 00000000..603167a1 --- /dev/null +++ b/ios-rongimdemo/ServiceExtension/NotificationService.h @@ -0,0 +1,13 @@ +// +// NotificationService.h +// ServiceExtension +// +// Created by rongcloud on 2018/11/26. +// Copyright © 2018 RongCloud. All rights reserved. +// + +#import + +@interface NotificationService : UNNotificationServiceExtension + +@end diff --git a/ios-rongimdemo/ServiceExtension/NotificationService.m b/ios-rongimdemo/ServiceExtension/NotificationService.m new file mode 100644 index 00000000..c2d9d482 --- /dev/null +++ b/ios-rongimdemo/ServiceExtension/NotificationService.m @@ -0,0 +1,73 @@ +// +// NotificationService.m +// ServiceExtension +// +// Created by rongcloud on 2018/11/26. +// Copyright © 2018 RongCloud. All rights reserved. +// + +#import "NotificationService.h" +#import + +@interface NotificationService () + +@property (nonatomic, strong) void (^contentHandler)(UNNotificationContent *contentToDeliver); +@property (nonatomic, strong) UNMutableNotificationContent *bestAttemptContent; + +@end + +@implementation NotificationService + +- (void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler { + + UNNotificationContent *content1 = request.content; + NSDictionary *userInfo = content1.userInfo; + NSDictionary *aps = [userInfo objectForKey:@"aps"]; + NSString *category = [aps objectForKey:@"category"]; + if (aps && category && [category isEqualToString:@"RC:RcCmd"]) { + NSString *appData = [userInfo objectForKey:@"appData"]; + NSDictionary *appDataDic = [NSJSONSerialization JSONObjectWithData:[appData dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingMutableContainers error:nil]; + NSString *idString = [appDataDic objectForKey:@"rc-dlt-identifier"]; + if (idString) { + [[UNUserNotificationCenter currentNotificationCenter] getDeliveredNotificationsWithCompletionHandler:^(NSArray * _Nonnull notifications) { + if (notifications.count == 0) { + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + self.contentHandler = contentHandler; + self.bestAttemptContent = [request.content mutableCopy]; + self.contentHandler(self.bestAttemptContent); + }); + return; + } + + for (UNNotification *notice in notifications) { + UNNotificationRequest *request = notice.request; + UNNotificationContent *content = request.content; + NSDictionary *userInfo1 = content.userInfo; + NSString *identifier = userInfo1[@"rc"][@"id"]; + if ([idString isEqualToString:identifier]) { + [[UNUserNotificationCenter currentNotificationCenter] removeDeliveredNotificationsWithIdentifiers:@[request.identifier]]; + } + } + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + self.contentHandler = contentHandler; + self.bestAttemptContent = [request.content mutableCopy]; + self.contentHandler(self.bestAttemptContent); + + }); + + }]; + } + } else { + self.contentHandler = contentHandler; + self.bestAttemptContent = [request.content mutableCopy]; + self.contentHandler(self.bestAttemptContent); + } +} + +- (void)serviceExtensionTimeWillExpire { + // Called just before the extension will be terminated by the system. + // Use this as an opportunity to deliver your "best attempt" at modified content, otherwise the original push payload will be used. + self.contentHandler(self.bestAttemptContent); +} + +@end diff --git a/ios-rongimdemo/ServiceExtension/ServiceExtension.entitlements b/ios-rongimdemo/ServiceExtension/ServiceExtension.entitlements new file mode 100644 index 00000000..903def2a --- /dev/null +++ b/ios-rongimdemo/ServiceExtension/ServiceExtension.entitlements @@ -0,0 +1,8 @@ + + + + + aps-environment + development + + diff --git a/ios-rongimdemo/framework/Bailingquic.framework/Bailingquic b/ios-rongimdemo/framework/Bailingquic.framework/Bailingquic new file mode 100644 index 00000000..40c75097 Binary files /dev/null and b/ios-rongimdemo/framework/Bailingquic.framework/Bailingquic differ diff --git a/ios-rongimdemo/framework/Bailingquic.framework/Headers/Bailingquic.h b/ios-rongimdemo/framework/Bailingquic.framework/Headers/Bailingquic.h new file mode 100644 index 00000000..ce29c1f8 --- /dev/null +++ b/ios-rongimdemo/framework/Bailingquic.framework/Headers/Bailingquic.h @@ -0,0 +1,13 @@ + +// Objective-C API for talking to the following Go packages +// +// blink.com/quicproxy/bailingquic +// +// File is generated by gomobile bind. Do not edit. +#ifndef __Bailingquic_FRAMEWORK_H__ +#define __Bailingquic_FRAMEWORK_H__ + +#include "Bailingquic.objc.h" +#include "Universe.objc.h" + +#endif diff --git a/ios-rongimdemo/framework/Bailingquic.framework/Headers/Bailingquic.objc.h b/ios-rongimdemo/framework/Bailingquic.framework/Headers/Bailingquic.objc.h new file mode 100644 index 00000000..f5f95e5d --- /dev/null +++ b/ios-rongimdemo/framework/Bailingquic.framework/Headers/Bailingquic.objc.h @@ -0,0 +1,160 @@ +// Objective-C API for talking to blink.com/quicproxy/bailingquic Go package. +// gobind -lang=objc blink.com/quicproxy/bailingquic +// +// File is generated by gobind. Do not edit. + +#ifndef __Bailingquic_H__ +#define __Bailingquic_H__ + +@import Foundation; +#include "Universe.objc.h" + + +@class BailingquicHttpClient; +@class BailingquicHttpQuicCallback; +@class BailingquicQuicConn; +@protocol BailingquicIConn; +@class BailingquicIConn; +@protocol BailingquicIConnCallback; +@class BailingquicIConnCallback; +@protocol BailingquicIConnIncomingCallback; +@class BailingquicIConnIncomingCallback; +@protocol BailingquicIHttpCallback; +@class BailingquicIHttpCallback; +@protocol BailingquicIHttpClient; +@class BailingquicIHttpClient; + +@protocol BailingquicIConn +- (BOOL)connect:(NSString*)add error:(NSError**)error; +- (BOOL)disconnect:(NSError**)error; +- (NSString*)getId; +- (void)registerCallback:(id)callback; +- (void)setId:(NSString*)s; +- (NSString*)string; +- (BOOL)write:(NSData*)b n:(long*)n error:(NSError**)error; +@end + +@protocol BailingquicIConnCallback +- (void)onConnected:(id)conn; +- (void)onDataReceived:(id)conn data:(NSData*)data; +- (void)onDisconnected:(id)conn; +@end + +@protocol BailingquicIConnIncomingCallback +- (void)onIncomingConnectionConnected:(id)conn; +@end + +@protocol BailingquicIHttpCallback +- (void)onResponseReceived:(NSData*)data err:(NSError*)err; +@end + +@protocol BailingquicIHttpClient +- (BOOL)get:(NSString*)httpUrl callback:(id)callback error:(NSError**)error; +- (BOOL)post:(NSString*)httpUrl form:(NSString*)form callback:(id)callback error:(NSError**)error; +@end + +@interface BailingquicHttpClient : NSObject { +} +@property(strong, readonly) id _ref; + +- (instancetype)initWithRef:(id)ref; +- (instancetype)init; +- (id)iHttpClient; +- (void)setIHttpClient:(id)v; +- (BOOL)disconnect:(NSError**)error; +- (BOOL)get:(NSString*)httpUrl callback:(id)callback error:(NSError**)error; +- (BOOL)post:(NSString*)httpUrl form:(NSString*)form callback:(id)callback error:(NSError**)error; +@end + +@interface BailingquicHttpQuicCallback : NSObject { +} +@property(strong, readonly) id _ref; + +- (instancetype)initWithRef:(id)ref; +- (instancetype)init; +- (id)iConnCallback; +- (void)setIConnCallback:(id)v; +- (void)onConnected:(id)conn; +- (void)onDataReceived:(id)conn data:(NSData*)data; +- (void)onDisconnected:(id)conn; +@end + +@interface BailingquicQuicConn : NSObject { +} +@property(strong, readonly) id _ref; + +- (instancetype)initWithRef:(id)ref; +- (instancetype)init; +- (id)iConn; +- (void)setIConn:(id)v; +- (BOOL)connect:(NSString*)add error:(NSError**)error; +- (BOOL)disconnect:(NSError**)error; +- (NSString*)getId; +- (void)registerCallback:(id)callback; +- (void)setId:(NSString*)s; +- (NSString*)string; +- (BOOL)write:(NSData*)b n:(long*)n error:(NSError**)error; +@end + +FOUNDATION_EXPORT BailingquicQuicConn* BailingquicNewQuicConn(void); + +@class BailingquicIConn; + +@class BailingquicIConnCallback; + +@class BailingquicIConnIncomingCallback; + +@class BailingquicIHttpCallback; + +@class BailingquicIHttpClient; + +@interface BailingquicIConn : NSObject { +} +@property(strong, readonly) id _ref; + +- (instancetype)initWithRef:(id)ref; +- (BOOL)connect:(NSString*)add error:(NSError**)error; +- (BOOL)disconnect:(NSError**)error; +- (NSString*)getId; +- (void)registerCallback:(id)callback; +- (void)setId:(NSString*)s; +- (NSString*)string; +- (BOOL)write:(NSData*)b n:(long*)n error:(NSError**)error; +@end + +@interface BailingquicIConnCallback : NSObject { +} +@property(strong, readonly) id _ref; + +- (instancetype)initWithRef:(id)ref; +- (void)onConnected:(id)conn; +- (void)onDataReceived:(id)conn data:(NSData*)data; +- (void)onDisconnected:(id)conn; +@end + +@interface BailingquicIConnIncomingCallback : NSObject { +} +@property(strong, readonly) id _ref; + +- (instancetype)initWithRef:(id)ref; +- (void)onIncomingConnectionConnected:(id)conn; +@end + +@interface BailingquicIHttpCallback : NSObject { +} +@property(strong, readonly) id _ref; + +- (instancetype)initWithRef:(id)ref; +- (void)onResponseReceived:(NSData*)data err:(NSError*)err; +@end + +@interface BailingquicIHttpClient : NSObject { +} +@property(strong, readonly) id _ref; + +- (instancetype)initWithRef:(id)ref; +- (BOOL)get:(NSString*)httpUrl callback:(id)callback error:(NSError**)error; +- (BOOL)post:(NSString*)httpUrl form:(NSString*)form callback:(id)callback error:(NSError**)error; +@end + +#endif diff --git a/ios-rongimdemo/framework/Bailingquic.framework/Headers/Universe.objc.h b/ios-rongimdemo/framework/Bailingquic.framework/Headers/Universe.objc.h new file mode 100644 index 00000000..e47f7160 --- /dev/null +++ b/ios-rongimdemo/framework/Bailingquic.framework/Headers/Universe.objc.h @@ -0,0 +1,28 @@ +// Objective-C API for talking to Go package. +// gobind -lang=objc +// +// File is generated by gobind. Do not edit. + +#ifndef __Universe_H__ +#define __Universe_H__ + +@import Foundation; + +@protocol Universeerror; +@class Universeerror; + +@protocol Universeerror +- (NSString*)error; +@end + +@class Universeerror; + +@interface Universeerror : NSError { +} +@property(strong, readonly) id _ref; + +- (instancetype)initWithRef:(id)ref; +- (NSString*)error; +@end + +#endif diff --git a/ios-rongimdemo/framework/Bailingquic.framework/Headers/ref.h b/ios-rongimdemo/framework/Bailingquic.framework/Headers/ref.h new file mode 100644 index 00000000..b8036a4d --- /dev/null +++ b/ios-rongimdemo/framework/Bailingquic.framework/Headers/ref.h @@ -0,0 +1,35 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +#ifndef __GO_REF_HDR__ +#define __GO_REF_HDR__ + +#include + +// GoSeqRef is an object tagged with an integer for passing back and +// forth across the language boundary. A GoSeqRef may represent either +// an instance of a Go object, or an Objective-C object passed to Go. +// The explicit allocation of a GoSeqRef is used to pin a Go object +// when it is passed to Objective-C. The Go seq package maintains a +// reference to the Go object in a map keyed by the refnum along with +// a reference count. When the reference count reaches zero, the Go +// seq package will clear the corresponding entry in the map. +@interface GoSeqRef : NSObject { +} +@property(readonly) int32_t refnum; +@property(strong) id obj; // NULL when representing a Go object. + +// new GoSeqRef object to proxy a Go object. The refnum must be +// provided from Go side. +- (instancetype)initWithRefnum:(int32_t)refnum obj:(id)obj; + +- (int32_t)incNum; + +@end + +@protocol goSeqRefInterface +-(GoSeqRef*) _ref; +@end + +#endif diff --git a/ios-rongimdemo/framework/Bailingquic.framework/Modules/module.modulemap b/ios-rongimdemo/framework/Bailingquic.framework/Modules/module.modulemap new file mode 100644 index 00000000..74d0d557 --- /dev/null +++ b/ios-rongimdemo/framework/Bailingquic.framework/Modules/module.modulemap @@ -0,0 +1,8 @@ +framework module "Bailingquic" { + header "ref.h" + header "Bailingquic.objc.h" + header "Universe.objc.h" + header "Bailingquic.h" + + export * +} \ No newline at end of file diff --git a/ios-rongimdemo/framework/Bailingquic.framework/Resources/Info.plist b/ios-rongimdemo/framework/Bailingquic.framework/Resources/Info.plist new file mode 100644 index 00000000..0d1a4b8a --- /dev/null +++ b/ios-rongimdemo/framework/Bailingquic.framework/Resources/Info.plist @@ -0,0 +1,6 @@ + + + + + + diff --git a/ios-rongimdemo/framework/GPUImage.framework/GPUImage b/ios-rongimdemo/framework/GPUImage.framework/GPUImage new file mode 100755 index 00000000..0013cc9f Binary files /dev/null and b/ios-rongimdemo/framework/GPUImage.framework/GPUImage differ diff --git a/ios-rongimdemo/framework/GPUImage.framework/Headers/GLProgram.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GLProgram.h new file mode 100755 index 00000000..cd455e71 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GLProgram.h @@ -0,0 +1,42 @@ +// 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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImage.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImage.h new file mode 100755 index 00000000..3e91c29c --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImage.h @@ -0,0 +1,170 @@ +#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 "GPUImageSolarizeFilter.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 "GPUImageColorLocalBinaryPatternFilter.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 "GPUImageFourInputFilter.h" +#import "GPUImageWeakPixelInclusionFilter.h" +#import "GPUImageColorConversion.h" +#import "GPUImageColourFASTFeatureDetector.h" +#import "GPUImageColourFASTSamplingOperation.h" + diff --git a/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImage3x3ConvolutionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImage3x3ConvolutionFilter.h new file mode 100755 index 00000000..67e68def --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImage3x3ConvolutionFilter.h @@ -0,0 +1,18 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImage3x3TextureSamplingFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImage3x3TextureSamplingFilter.h new file mode 100755 index 00000000..5599e156 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImage3x3TextureSamplingFilter.h @@ -0,0 +1,18 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageAdaptiveThresholdFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageAdaptiveThresholdFilter.h new file mode 100755 index 00000000..32785560 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageAdaptiveThresholdFilter.h @@ -0,0 +1,9 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageAddBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageAddBlendFilter.h new file mode 100755 index 00000000..b14c60c6 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageAddBlendFilter.h @@ -0,0 +1,5 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageAddBlendFilter : GPUImageTwoInputFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageAlphaBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageAlphaBlendFilter.h new file mode 100755 index 00000000..c4d75759 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageAlphaBlendFilter.h @@ -0,0 +1,11 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageAmatorkaFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageAmatorkaFilter.h new file mode 100755 index 00000000..1dbe096d --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageAmatorkaFilter.h @@ -0,0 +1,17 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageAverageColor.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageAverageColor.h new file mode 100755 index 00000000..e3d957d0 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageAverageColor.h @@ -0,0 +1,20 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageAverageLuminanceThresholdFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageAverageLuminanceThresholdFilter.h new file mode 100755 index 00000000..7f1ae464 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageAverageLuminanceThresholdFilter.h @@ -0,0 +1,8 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageBilateralFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageBilateralFilter.h new file mode 100755 index 00000000..6b736ccf --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageBilateralFilter.h @@ -0,0 +1,10 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageBoxBlurFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageBoxBlurFilter.h new file mode 100755 index 00000000..3fd880bf --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageBoxBlurFilter.h @@ -0,0 +1,7 @@ +#import "GPUImageGaussianBlurFilter.h" + +/** A hardware-accelerated box blur of an image + */ +@interface GPUImageBoxBlurFilter : GPUImageGaussianBlurFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageBrightnessFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageBrightnessFilter.h new file mode 100755 index 00000000..046473b9 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageBrightnessFilter.h @@ -0,0 +1,11 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageBuffer.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageBuffer.h new file mode 100755 index 00000000..caf09c8d --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageBuffer.h @@ -0,0 +1,10 @@ +#import "GPUImageFilter.h" + +@interface GPUImageBuffer : GPUImageFilter +{ + NSMutableArray *bufferedFramebuffers; +} + +@property(readwrite, nonatomic) NSUInteger bufferSize; + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageBulgeDistortionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageBulgeDistortionFilter.h new file mode 100755 index 00000000..d416e536 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageBulgeDistortionFilter.h @@ -0,0 +1,16 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageCGAColorspaceFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageCGAColorspaceFilter.h new file mode 100755 index 00000000..4f97804b --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageCGAColorspaceFilter.h @@ -0,0 +1,5 @@ +#import "GPUImageFilter.h" + +@interface GPUImageCGAColorspaceFilter : GPUImageFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageCannyEdgeDetectionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageCannyEdgeDetectionFilter.h new file mode 100755 index 00000000..53c58502 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageCannyEdgeDetectionFilter.h @@ -0,0 +1,62 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageChromaKeyBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageChromaKeyBlendFilter.h new file mode 100755 index 00000000..00a5aed7 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageChromaKeyBlendFilter.h @@ -0,0 +1,32 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageChromaKeyFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageChromaKeyFilter.h new file mode 100755 index 00000000..5ee7e498 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageChromaKeyFilter.h @@ -0,0 +1,30 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageClosingFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageClosingFilter.h new file mode 100755 index 00000000..61e34c41 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageClosingFilter.h @@ -0,0 +1,19 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageColorBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageColorBlendFilter.h new file mode 100755 index 00000000..302a16c6 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageColorBlendFilter.h @@ -0,0 +1,5 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageColorBlendFilter : GPUImageTwoInputFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageColorBurnBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageColorBurnBlendFilter.h new file mode 100755 index 00000000..50ebb3f4 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageColorBurnBlendFilter.h @@ -0,0 +1,9 @@ +#import "GPUImageTwoInputFilter.h" + +/** Applies a color burn blend of two images + */ +@interface GPUImageColorBurnBlendFilter : GPUImageTwoInputFilter +{ +} + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageColorConversion.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageColorConversion.h new file mode 100755 index 00000000..02f82bf8 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageColorConversion.h @@ -0,0 +1,12 @@ +#ifndef GPUImageColorConversion_h +#define GPUImageColorConversion_h + +extern GLfloat *kColorConversion601; +extern GLfloat *kColorConversion601FullRange; +extern GLfloat *kColorConversion709; +extern NSString *const kGPUImageYUVVideoRangeConversionForRGFragmentShaderString; +extern NSString *const kGPUImageYUVFullRangeConversionForLAFragmentShaderString; +extern NSString *const kGPUImageYUVVideoRangeConversionForLAFragmentShaderString; + + +#endif /* GPUImageColorConversion_h */ diff --git a/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageColorDodgeBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageColorDodgeBlendFilter.h new file mode 100755 index 00000000..0f541c42 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageColorDodgeBlendFilter.h @@ -0,0 +1,9 @@ +#import "GPUImageTwoInputFilter.h" + +/** Applies a color dodge blend of two images + */ +@interface GPUImageColorDodgeBlendFilter : GPUImageTwoInputFilter +{ +} + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageColorInvertFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageColorInvertFilter.h new file mode 100755 index 00000000..aaeec438 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageColorInvertFilter.h @@ -0,0 +1,7 @@ +#import "GPUImageFilter.h" + +@interface GPUImageColorInvertFilter : GPUImageFilter +{ +} + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageColorLocalBinaryPatternFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageColorLocalBinaryPatternFilter.h new file mode 100755 index 00000000..8b57cd7c --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageColorLocalBinaryPatternFilter.h @@ -0,0 +1,5 @@ +#import "GPUImage3x3TextureSamplingFilter.h" + +@interface GPUImageColorLocalBinaryPatternFilter : GPUImage3x3TextureSamplingFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageColorMatrixFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageColorMatrixFilter.h new file mode 100755 index 00000000..75887276 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageColorMatrixFilter.h @@ -0,0 +1,19 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageColorPackingFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageColorPackingFilter.h new file mode 100755 index 00000000..c2edca51 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageColorPackingFilter.h @@ -0,0 +1,10 @@ +#import "GPUImageFilter.h" + +@interface GPUImageColorPackingFilter : GPUImageFilter +{ + GLint texelWidthUniform, texelHeightUniform; + + CGFloat texelWidth, texelHeight; +} + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageColourFASTFeatureDetector.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageColourFASTFeatureDetector.h new file mode 100755 index 00000000..3d51ed17 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageColourFASTFeatureDetector.h @@ -0,0 +1,21 @@ +#import "GPUImageFilterGroup.h" + +// This generates image-wide feature descriptors using the ColourFAST process, as developed and described in +// +// A. Ensor and S. Hall. ColourFAST: GPU-based feature point detection and tracking on mobile devices. 28th International Conference of Image and Vision Computing, New Zealand, 2013, p. 124-129. +// +// Seth Hall, "GPU accelerated feature algorithms for mobile devices", PhD thesis, School of Computing and Mathematical Sciences, Auckland University of Technology 2014. +// http://aut.researchgateway.ac.nz/handle/10292/7991 + +@class GPUImageColourFASTSamplingOperation; +@class GPUImageBoxBlurFilter; + +@interface GPUImageColourFASTFeatureDetector : GPUImageFilterGroup +{ + GPUImageBoxBlurFilter *blurFilter; + GPUImageColourFASTSamplingOperation *colourFASTSamplingOperation; +} +// The blur radius of the underlying box blur. The default is 3.0. +@property (readwrite, nonatomic) CGFloat blurRadiusInPixels; + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageColourFASTSamplingOperation.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageColourFASTSamplingOperation.h new file mode 100755 index 00000000..78e6ede9 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageColourFASTSamplingOperation.h @@ -0,0 +1,22 @@ +#import "GPUImageTwoInputFilter.h" + +// This is the feature extraction phase of the ColourFAST feature detector, as described in: +// +// A. Ensor and S. Hall. ColourFAST: GPU-based feature point detection and tracking on mobile devices. 28th International Conference of Image and Vision Computing, New Zealand, 2013, p. 124-129. +// +// Seth Hall, "GPU accelerated feature algorithms for mobile devices", PhD thesis, School of Computing and Mathematical Sciences, Auckland University of Technology 2014. +// http://aut.researchgateway.ac.nz/handle/10292/7991 + +@interface GPUImageColourFASTSamplingOperation : 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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageContext.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageContext.h new file mode 100755 index 00000000..71142b88 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageContext.h @@ -0,0 +1,64 @@ +#import "GLProgram.h" +#import "GPUImageFramebuffer.h" +#import "GPUImageFramebufferCache.h" + +#define GPUImageRotationSwapsWidthAndHeight(rotation) ((rotation) == kGPUImageRotateLeft || (rotation) == kGPUImageRotateRight || (rotation) == kGPUImageRotateRightFlipVertical || (rotation) == kGPUImageRotateRightFlipHorizontal) + +typedef NS_ENUM(NSUInteger, GPUImageRotationMode) { + kGPUImageNoRotation, + kGPUImageRotateLeft, + kGPUImageRotateRight, + kGPUImageFlipVertical, + kGPUImageFlipHorizonal, + kGPUImageRotateRightFlipVertical, + kGPUImageRotateRightFlipHorizontal, + kGPUImageRotate180 +}; + +@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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageContrastFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageContrastFilter.h new file mode 100755 index 00000000..e09e6dc4 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageContrastFilter.h @@ -0,0 +1,14 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageCropFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageCropFilter.h new file mode 100755 index 00000000..641fb7bf --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageCropFilter.h @@ -0,0 +1,14 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageCrosshairGenerator.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageCrosshairGenerator.h new file mode 100755 index 00000000..569774f5 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageCrosshairGenerator.h @@ -0,0 +1,17 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageCrosshatchFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageCrosshatchFilter.h new file mode 100755 index 00000000..dab18967 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageCrosshatchFilter.h @@ -0,0 +1,13 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageDarkenBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageDarkenBlendFilter.h new file mode 100755 index 00000000..5dfe3405 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageDarkenBlendFilter.h @@ -0,0 +1,7 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageDarkenBlendFilter : GPUImageTwoInputFilter +{ +} + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageDifferenceBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageDifferenceBlendFilter.h new file mode 100755 index 00000000..7c7dfc23 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageDifferenceBlendFilter.h @@ -0,0 +1,7 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageDifferenceBlendFilter : GPUImageTwoInputFilter +{ +} + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageDilationFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageDilationFilter.h new file mode 100755 index 00000000..59423a37 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageDilationFilter.h @@ -0,0 +1,16 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageDirectionalNonMaximumSuppressionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageDirectionalNonMaximumSuppressionFilter.h new file mode 100755 index 00000000..fdffb9fb --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageDirectionalNonMaximumSuppressionFilter.h @@ -0,0 +1,19 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageDirectionalSobelEdgeDetectionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageDirectionalSobelEdgeDetectionFilter.h new file mode 100755 index 00000000..cfccc897 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageDirectionalSobelEdgeDetectionFilter.h @@ -0,0 +1,5 @@ +#import "GPUImage3x3TextureSamplingFilter.h" + +@interface GPUImageDirectionalSobelEdgeDetectionFilter : GPUImage3x3TextureSamplingFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageDissolveBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageDissolveBlendFilter.h new file mode 100755 index 00000000..b4e5720a --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageDissolveBlendFilter.h @@ -0,0 +1,11 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageDivideBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageDivideBlendFilter.h new file mode 100755 index 00000000..ad798e29 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageDivideBlendFilter.h @@ -0,0 +1,5 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageDivideBlendFilter : GPUImageTwoInputFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageEmbossFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageEmbossFilter.h new file mode 100755 index 00000000..dbd21e82 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageEmbossFilter.h @@ -0,0 +1,8 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageErosionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageErosionFilter.h new file mode 100755 index 00000000..b311a265 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageErosionFilter.h @@ -0,0 +1,11 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageExclusionBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageExclusionBlendFilter.h new file mode 100755 index 00000000..f7c83f57 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageExclusionBlendFilter.h @@ -0,0 +1,7 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageExclusionBlendFilter : GPUImageTwoInputFilter +{ +} + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageExposureFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageExposureFilter.h new file mode 100755 index 00000000..886a052f --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageExposureFilter.h @@ -0,0 +1,11 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageFASTCornerDetectionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageFASTCornerDetectionFilter.h new file mode 100755 index 00000000..86e7cf42 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageFASTCornerDetectionFilter.h @@ -0,0 +1,33 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageFalseColorFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageFalseColorFilter.h new file mode 100755 index 00000000..cb0b82f7 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageFalseColorFilter.h @@ -0,0 +1,15 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageFilter.h new file mode 100755 index 00000000..0171aa80 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageFilter.h @@ -0,0 +1,134 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageFilterGroup.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageFilterGroup.h new file mode 100755 index 00000000..6817cdf0 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageFilterGroup.h @@ -0,0 +1,19 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageFilterPipeline.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageFilterPipeline.h new file mode 100755 index 00000000..dc2baeac --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageFilterPipeline.h @@ -0,0 +1,30 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageFourInputFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageFourInputFilter.h new file mode 100755 index 00000000..3beab2df --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageFourInputFilter.h @@ -0,0 +1,21 @@ +#import "GPUImageThreeInputFilter.h" + +extern NSString *const kGPUImageFourInputTextureVertexShaderString; + +@interface GPUImageFourInputFilter : GPUImageThreeInputFilter +{ + GPUImageFramebuffer *fourthInputFramebuffer; + + GLint filterFourthTextureCoordinateAttribute; + GLint filterInputTextureUniform4; + GPUImageRotationMode inputRotation4; + GLuint filterSourceTexture4; + CMTime fourthFrameTime; + + BOOL hasSetThirdTexture, hasReceivedFourthFrame, fourthFrameWasVideo; + BOOL fourthFrameCheckDisabled; +} + +- (void)disableFourthFrameCheck; + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageFramebuffer.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageFramebuffer.h new file mode 100755 index 00000000..bdb6a1f1 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageFramebuffer.h @@ -0,0 +1,59 @@ +#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; +- (CVPixelBufferRef)pixelBuffer; + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageFramebufferCache.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageFramebufferCache.h new file mode 100755 index 00000000..e56a3456 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageFramebufferCache.h @@ -0,0 +1,15 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageGammaFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageGammaFilter.h new file mode 100755 index 00000000..0521d089 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageGammaFilter.h @@ -0,0 +1,11 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageGaussianBlurFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageGaussianBlurFilter.h new file mode 100755 index 00000000..1fb7a137 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageGaussianBlurFilter.h @@ -0,0 +1,36 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageGaussianBlurPositionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageGaussianBlurPositionFilter.h new file mode 100755 index 00000000..dc88a563 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageGaussianBlurPositionFilter.h @@ -0,0 +1,22 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageGaussianSelectiveBlurFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageGaussianSelectiveBlurFilter.h new file mode 100755 index 00000000..02324566 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageGaussianSelectiveBlurFilter.h @@ -0,0 +1,30 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageGlassSphereFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageGlassSphereFilter.h new file mode 100755 index 00000000..809a4ee8 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageGlassSphereFilter.h @@ -0,0 +1,5 @@ +#import "GPUImageSphereRefractionFilter.h" + +@interface GPUImageGlassSphereFilter : GPUImageSphereRefractionFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageGrayscaleFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageGrayscaleFilter.h new file mode 100755 index 00000000..2d97f8c3 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageGrayscaleFilter.h @@ -0,0 +1,9 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageHSBFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageHSBFilter.h new file mode 100755 index 00000000..65a9e1de --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageHSBFilter.h @@ -0,0 +1,27 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageHalftoneFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageHalftoneFilter.h new file mode 100755 index 00000000..1860bc97 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageHalftoneFilter.h @@ -0,0 +1,5 @@ +#import "GPUImagePixellateFilter.h" + +@interface GPUImageHalftoneFilter : GPUImagePixellateFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageHardLightBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageHardLightBlendFilter.h new file mode 100755 index 00000000..47d62609 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageHardLightBlendFilter.h @@ -0,0 +1,7 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageHardLightBlendFilter : GPUImageTwoInputFilter +{ +} + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageHarrisCornerDetectionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageHarrisCornerDetectionFilter.h new file mode 100755 index 00000000..1492b8b8 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageHarrisCornerDetectionFilter.h @@ -0,0 +1,53 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageHazeFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageHazeFilter.h new file mode 100755 index 00000000..eb3fbca6 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageHazeFilter.h @@ -0,0 +1,29 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageHighPassFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageHighPassFilter.h new file mode 100755 index 00000000..263d8df1 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageHighPassFilter.h @@ -0,0 +1,14 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageHighlightShadowFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageHighlightShadowFilter.h new file mode 100755 index 00000000..35791298 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageHighlightShadowFilter.h @@ -0,0 +1,20 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageHighlightShadowTintFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageHighlightShadowTintFilter.h new file mode 100755 index 00000000..166c5c8c --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageHighlightShadowTintFilter.h @@ -0,0 +1,25 @@ +// +// GPUImageHighlightShadowTintFilter.h +// +// +// Created by github.com/r3mus on 8/14/15. +// +// + +#import "GPUImageFilter.h" + +@interface GPUImageHighlightShadowTintFilter : GPUImageFilter +{ + GLint shadowTintIntensityUniform, highlightTintIntensityUniform, shadowTintColorUniform, highlightTintColorUniform; +} + +// The shadowTint and highlightTint colors specify what colors replace the dark and light areas of the image, respectively. The defaults for shadows are black, highlighs white. +@property(readwrite, nonatomic) GLfloat shadowTintIntensity; +@property(readwrite, nonatomic) GPUVector4 shadowTintColor; +@property(readwrite, nonatomic) GLfloat highlightTintIntensity; +@property(readwrite, nonatomic) GPUVector4 highlightTintColor; + +- (void)setShadowTintColorRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent alpha:(GLfloat)alphaComponent; +- (void)setHighlightTintColorRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent alpha:(GLfloat)alphaComponent; + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageHistogramEqualizationFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageHistogramEqualizationFilter.h new file mode 100755 index 00000000..2b71cda0 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageHistogramEqualizationFilter.h @@ -0,0 +1,26 @@ +// +// 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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageHistogramFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageHistogramFilter.h new file mode 100755 index 00000000..32004bf7 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageHistogramFilter.h @@ -0,0 +1,22 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageHistogramGenerator.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageHistogramGenerator.h new file mode 100755 index 00000000..f80c50f3 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageHistogramGenerator.h @@ -0,0 +1,8 @@ +#import "GPUImageFilter.h" + +@interface GPUImageHistogramGenerator : GPUImageFilter +{ + GLint backgroundColorUniform; +} + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageHoughTransformLineDetector.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageHoughTransformLineDetector.h new file mode 100755 index 00000000..3ab6977f --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageHoughTransformLineDetector.h @@ -0,0 +1,49 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageHueBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageHueBlendFilter.h new file mode 100755 index 00000000..4399ffcf --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageHueBlendFilter.h @@ -0,0 +1,5 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageHueBlendFilter : GPUImageTwoInputFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageHueFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageHueFilter.h new file mode 100755 index 00000000..eef24651 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageHueFilter.h @@ -0,0 +1,11 @@ + +#import "GPUImageFilter.h" + +@interface GPUImageHueFilter : GPUImageFilter +{ + GLint hueAdjustUniform; + +} +@property (nonatomic, readwrite) CGFloat hue; + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageJFAVoronoiFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageJFAVoronoiFilter.h new file mode 100755 index 00000000..4c50cc37 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageJFAVoronoiFilter.h @@ -0,0 +1,17 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageKuwaharaFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageKuwaharaFilter.h new file mode 100755 index 00000000..4fb0bce8 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageKuwaharaFilter.h @@ -0,0 +1,13 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageKuwaharaRadius3Filter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageKuwaharaRadius3Filter.h new file mode 100755 index 00000000..c4591b81 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageKuwaharaRadius3Filter.h @@ -0,0 +1,8 @@ +// +// GPUImageKuwaharaRadius3Filter.h + +#import "GPUImageFilter.h" + +@interface GPUImageKuwaharaRadius3Filter : GPUImageFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageLanczosResamplingFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageLanczosResamplingFilter.h new file mode 100755 index 00000000..5d7409f5 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageLanczosResamplingFilter.h @@ -0,0 +1,7 @@ +#import "GPUImageTwoPassTextureSamplingFilter.h" + +@interface GPUImageLanczosResamplingFilter : GPUImageTwoPassTextureSamplingFilter + +@property(readwrite, nonatomic) CGSize originalImageSize; + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageLaplacianFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageLaplacianFilter.h new file mode 100755 index 00000000..267c1bab --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageLaplacianFilter.h @@ -0,0 +1,5 @@ +#import "GPUImage3x3ConvolutionFilter.h" + +@interface GPUImageLaplacianFilter : GPUImage3x3ConvolutionFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageLevelsFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageLevelsFilter.h new file mode 100755 index 00000000..d0948fbf --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageLevelsFilter.h @@ -0,0 +1,45 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageLightenBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageLightenBlendFilter.h new file mode 100755 index 00000000..b0287c13 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageLightenBlendFilter.h @@ -0,0 +1,8 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageLineGenerator.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageLineGenerator.h new file mode 100755 index 00000000..4c467366 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageLineGenerator.h @@ -0,0 +1,18 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageLinearBurnBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageLinearBurnBlendFilter.h new file mode 100755 index 00000000..7e5e415c --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageLinearBurnBlendFilter.h @@ -0,0 +1,5 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageLinearBurnBlendFilter : GPUImageTwoInputFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageLocalBinaryPatternFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageLocalBinaryPatternFilter.h new file mode 100755 index 00000000..431dbbd4 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageLocalBinaryPatternFilter.h @@ -0,0 +1,5 @@ +#import "GPUImage3x3TextureSamplingFilter.h" + +@interface GPUImageLocalBinaryPatternFilter : GPUImage3x3TextureSamplingFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageLookupFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageLookupFilter.h new file mode 100755 index 00000000..23ebde2b --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageLookupFilter.h @@ -0,0 +1,34 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageLowPassFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageLowPassFilter.h new file mode 100755 index 00000000..be5c397e --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageLowPassFilter.h @@ -0,0 +1,14 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageLuminanceRangeFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageLuminanceRangeFilter.h new file mode 100755 index 00000000..5a310370 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageLuminanceRangeFilter.h @@ -0,0 +1,12 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageLuminanceThresholdFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageLuminanceThresholdFilter.h new file mode 100755 index 00000000..0abb9a1e --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageLuminanceThresholdFilter.h @@ -0,0 +1,14 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageLuminosity.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageLuminosity.h new file mode 100755 index 00000000..b2d2458f --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageLuminosity.h @@ -0,0 +1,17 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageLuminosityBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageLuminosityBlendFilter.h new file mode 100755 index 00000000..03b5e4c9 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageLuminosityBlendFilter.h @@ -0,0 +1,5 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageLuminosityBlendFilter : GPUImageTwoInputFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageMaskFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageMaskFilter.h new file mode 100755 index 00000000..94cf0648 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageMaskFilter.h @@ -0,0 +1,5 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageMaskFilter : GPUImageTwoInputFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageMedianFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageMedianFilter.h new file mode 100755 index 00000000..80225789 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageMedianFilter.h @@ -0,0 +1,5 @@ +#import "GPUImage3x3TextureSamplingFilter.h" + +@interface GPUImageMedianFilter : GPUImage3x3TextureSamplingFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageMissEtikateFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageMissEtikateFilter.h new file mode 100755 index 00000000..de170647 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageMissEtikateFilter.h @@ -0,0 +1,17 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageMonochromeFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageMonochromeFilter.h new file mode 100755 index 00000000..66a0e773 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageMonochromeFilter.h @@ -0,0 +1,13 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageMosaicFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageMosaicFilter.h new file mode 100755 index 00000000..5f72d3c9 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageMosaicFilter.h @@ -0,0 +1,22 @@ + +// 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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageMotionBlurFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageMotionBlurFilter.h new file mode 100755 index 00000000..dcca712f --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageMotionBlurFilter.h @@ -0,0 +1,13 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageMotionDetector.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageMotionDetector.h new file mode 100755 index 00000000..01329145 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageMotionDetector.h @@ -0,0 +1,18 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageMovie.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageMovie.h new file mode 100755 index 00000000..f61e56ef --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageMovie.h @@ -0,0 +1,61 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageMovieComposition.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageMovieComposition.h new file mode 100755 index 00000000..00e43814 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageMovieComposition.h @@ -0,0 +1,21 @@ +// +// 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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageMovieWriter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageMovieWriter.h new file mode 100755 index 00000000..f0b2c6ad --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageMovieWriter.h @@ -0,0 +1,67 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageMultiplyBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageMultiplyBlendFilter.h new file mode 100755 index 00000000..5ebc28bb --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageMultiplyBlendFilter.h @@ -0,0 +1,7 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageMultiplyBlendFilter : GPUImageTwoInputFilter +{ +} + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageNobleCornerDetectionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageNobleCornerDetectionFilter.h new file mode 100755 index 00000000..963fd66a --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageNobleCornerDetectionFilter.h @@ -0,0 +1,12 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageNonMaximumSuppressionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageNonMaximumSuppressionFilter.h new file mode 100755 index 00000000..fd8fe6d6 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageNonMaximumSuppressionFilter.h @@ -0,0 +1,5 @@ +#import "GPUImage3x3TextureSamplingFilter.h" + +@interface GPUImageNonMaximumSuppressionFilter : GPUImage3x3TextureSamplingFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageNormalBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageNormalBlendFilter.h new file mode 100755 index 00000000..ce5e22b4 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageNormalBlendFilter.h @@ -0,0 +1,8 @@ +// Created by Jorge Garcia on 9/5/12. +// + +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageNormalBlendFilter : GPUImageTwoInputFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageOpacityFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageOpacityFilter.h new file mode 100755 index 00000000..826749fb --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageOpacityFilter.h @@ -0,0 +1,11 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageOpeningFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageOpeningFilter.h new file mode 100755 index 00000000..3e4f7545 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageOpeningFilter.h @@ -0,0 +1,19 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageOutput.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageOutput.h new file mode 100755 index 00000000..c10121a9 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageOutput.h @@ -0,0 +1,128 @@ +#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 + +dispatch_queue_attr_t GPUImageDefaultQueueAttribute(void); +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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageOverlayBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageOverlayBlendFilter.h new file mode 100755 index 00000000..57eb8402 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageOverlayBlendFilter.h @@ -0,0 +1,5 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageOverlayBlendFilter : GPUImageTwoInputFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageParallelCoordinateLineTransformFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageParallelCoordinateLineTransformFilter.h new file mode 100755 index 00000000..aa8f3f47 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageParallelCoordinateLineTransformFilter.h @@ -0,0 +1,16 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImagePerlinNoiseFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImagePerlinNoiseFilter.h new file mode 100755 index 00000000..922f4d30 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImagePerlinNoiseFilter.h @@ -0,0 +1,13 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImagePicture+TextureSubimage.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImagePicture+TextureSubimage.h new file mode 100755 index 00000000..03c631bc --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImagePicture+TextureSubimage.h @@ -0,0 +1,19 @@ +// +// 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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImagePicture.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImagePicture.h new file mode 100755 index 00000000..4c4b9942 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImagePicture.h @@ -0,0 +1,38 @@ +#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; +- (id)initWithImage:(UIImage *)newImageSource removePremultiplication:(BOOL)removePremultiplication; +- (id)initWithCGImage:(CGImageRef)newImageSource removePremultiplication:(BOOL)removePremultiplication; +- (id)initWithImage:(UIImage *)newImageSource smoothlyScaleOutput:(BOOL)smoothlyScaleOutput removePremultiplication:(BOOL)removePremultiplication; +- (id)initWithCGImage:(CGImageRef)newImageSource smoothlyScaleOutput:(BOOL)smoothlyScaleOutput removePremultiplication:(BOOL)removePremultiplication; + +// 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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImagePinchDistortionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImagePinchDistortionFilter.h new file mode 100755 index 00000000..994774fd --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImagePinchDistortionFilter.h @@ -0,0 +1,20 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImagePixellateFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImagePixellateFilter.h new file mode 100755 index 00000000..d0f6ae04 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImagePixellateFilter.h @@ -0,0 +1,12 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImagePixellatePositionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImagePixellatePositionFilter.h new file mode 100755 index 00000000..9d304c93 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImagePixellatePositionFilter.h @@ -0,0 +1,17 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImagePoissonBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImagePoissonBlendFilter.h new file mode 100755 index 00000000..58eff225 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImagePoissonBlendFilter.h @@ -0,0 +1,18 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImagePolarPixellateFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImagePolarPixellateFilter.h new file mode 100755 index 00000000..3de6a4d3 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImagePolarPixellateFilter.h @@ -0,0 +1,13 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImagePolkaDotFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImagePolkaDotFilter.h new file mode 100755 index 00000000..369b7737 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImagePolkaDotFilter.h @@ -0,0 +1,10 @@ +#import "GPUImagePixellateFilter.h" + +@interface GPUImagePolkaDotFilter : GPUImagePixellateFilter +{ + GLint dotScalingUniform; +} + +@property(readwrite, nonatomic) CGFloat dotScaling; + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImagePosterizeFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImagePosterizeFilter.h new file mode 100755 index 00000000..6f655b3e --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImagePosterizeFilter.h @@ -0,0 +1,14 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImagePrewittEdgeDetectionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImagePrewittEdgeDetectionFilter.h new file mode 100755 index 00000000..141f8c5f --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImagePrewittEdgeDetectionFilter.h @@ -0,0 +1,5 @@ +#import "GPUImageSobelEdgeDetectionFilter.h" + +@interface GPUImagePrewittEdgeDetectionFilter : GPUImageSobelEdgeDetectionFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageRGBClosingFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageRGBClosingFilter.h new file mode 100755 index 00000000..08d13f88 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageRGBClosingFilter.h @@ -0,0 +1,18 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageRGBDilationFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageRGBDilationFilter.h new file mode 100755 index 00000000..68276f84 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageRGBDilationFilter.h @@ -0,0 +1,11 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageRGBErosionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageRGBErosionFilter.h new file mode 100755 index 00000000..5979cb7e --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageRGBErosionFilter.h @@ -0,0 +1,11 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageRGBFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageRGBFilter.h new file mode 100755 index 00000000..18966b1b --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageRGBFilter.h @@ -0,0 +1,15 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageRGBOpeningFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageRGBOpeningFilter.h new file mode 100755 index 00000000..dbec75fb --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageRGBOpeningFilter.h @@ -0,0 +1,17 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageRawDataInput.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageRawDataInput.h new file mode 100755 index 00000000..6ec4720f --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageRawDataInput.h @@ -0,0 +1,43 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageRawDataOutput.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageRawDataOutput.h new file mode 100755 index 00000000..5a4538c1 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageRawDataOutput.h @@ -0,0 +1,44 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageSaturationBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageSaturationBlendFilter.h new file mode 100755 index 00000000..767892a5 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageSaturationBlendFilter.h @@ -0,0 +1,5 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageSaturationBlendFilter : GPUImageTwoInputFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageSaturationFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageSaturationFilter.h new file mode 100755 index 00000000..1c6ff5bd --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageSaturationFilter.h @@ -0,0 +1,14 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageScreenBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageScreenBlendFilter.h new file mode 100755 index 00000000..2df3abf3 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageScreenBlendFilter.h @@ -0,0 +1,7 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageScreenBlendFilter : GPUImageTwoInputFilter +{ +} + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageSepiaFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageSepiaFilter.h new file mode 100755 index 00000000..a45164fe --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageSepiaFilter.h @@ -0,0 +1,6 @@ +#import "GPUImageColorMatrixFilter.h" + +/// Simple sepia tone filter +@interface GPUImageSepiaFilter : GPUImageColorMatrixFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageSharpenFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageSharpenFilter.h new file mode 100755 index 00000000..739df503 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageSharpenFilter.h @@ -0,0 +1,12 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageShiTomasiFeatureDetectionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageShiTomasiFeatureDetectionFilter.h new file mode 100755 index 00000000..b16ebc01 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageShiTomasiFeatureDetectionFilter.h @@ -0,0 +1,13 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageSingleComponentGaussianBlurFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageSingleComponentGaussianBlurFilter.h new file mode 100755 index 00000000..934b1e3a --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageSingleComponentGaussianBlurFilter.h @@ -0,0 +1,7 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageSketchFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageSketchFilter.h new file mode 100755 index 00000000..598145ae --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageSketchFilter.h @@ -0,0 +1,11 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageSkinToneFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageSkinToneFilter.h new file mode 100755 index 00000000..0dd6f866 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageSkinToneFilter.h @@ -0,0 +1,47 @@ +// +// GPUImageSkinToneFilter.h +// +// +// Created by github.com/r3mus on 8/14/15. +// +// + +#import "GPUImageTwoInputFilter.h" + +typedef NS_ENUM(NSUInteger, GPUImageSkinToneUpperColor) { + GPUImageSkinToneUpperColorGreen, + GPUImageSkinToneUpperColorOrange +}; + +extern NSString *const kGPUImageSkinToneFragmentShaderString; + +@interface GPUImageSkinToneFilter : GPUImageFilter +{ + GLint skinToneAdjustUniform; + GLint skinHueUniform; + GLint skinHueThresholdUniform; + GLint maxHueShiftUniform; + GLint maxSaturationShiftUniform; + GLint upperSkinToneColorUniform; +} + +// The amount of effect to apply, between -1.0 (pink) and +1.0 (orange OR green). Default is 0.0. +@property (nonatomic, readwrite) CGFloat skinToneAdjust; + +// The initial hue of skin to adjust. Default is 0.05 (a common skin red). +@property (nonatomic, readwrite) CGFloat skinHue; + +// The bell curve "breadth" of the skin hue adjustment (i.e. how different from the original skinHue will the modifications effect). +// Default is 40.0 +@property (nonatomic, readwrite) CGFloat skinHueThreshold; + +// The maximum amount of hue shift allowed in the adjustments that affect hue (pink, green). Default = 0.25. +@property (nonatomic, readwrite) CGFloat maxHueShift; + +// The maximum amount of saturation shift allowed in the adjustments that affect saturation (orange). Default = 0.4. +@property (nonatomic, readwrite) CGFloat maxSaturationShift; + +// Defines whether the upper range (> 0.0) will change the skin tone to green (hue) or orange (saturation) +@property (nonatomic, readwrite) GPUImageSkinToneUpperColor upperSkinToneColor; + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageSmoothToonFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageSmoothToonFilter.h new file mode 100755 index 00000000..f89caac5 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageSmoothToonFilter.h @@ -0,0 +1,28 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageSobelEdgeDetectionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageSobelEdgeDetectionFilter.h new file mode 100755 index 00000000..d6b2c13a --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageSobelEdgeDetectionFilter.h @@ -0,0 +1,16 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageSoftEleganceFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageSoftEleganceFilter.h new file mode 100755 index 00000000..596e1567 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageSoftEleganceFilter.h @@ -0,0 +1,19 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageSoftLightBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageSoftLightBlendFilter.h new file mode 100755 index 00000000..13fc877c --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageSoftLightBlendFilter.h @@ -0,0 +1,7 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageSoftLightBlendFilter : GPUImageTwoInputFilter +{ +} + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageSolarizeFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageSolarizeFilter.h new file mode 100755 index 00000000..ba01c15a --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageSolarizeFilter.h @@ -0,0 +1,14 @@ +#import "GPUImageFilter.h" + +/** Pixels with a luminance above the threshold will invert their color + */ +@interface GPUImageSolarizeFilter : GPUImageFilter +{ + GLint thresholdUniform; +} + +/** Anything above this luminance will be inverted, and anything below normal. Ranges from 0.0 to 1.0, with 0.5 as the default + */ +@property(readwrite, nonatomic) CGFloat threshold; + +@end \ No newline at end of file diff --git a/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageSolidColorGenerator.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageSolidColorGenerator.h new file mode 100755 index 00000000..58b1383e --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageSolidColorGenerator.h @@ -0,0 +1,19 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageSourceOverBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageSourceOverBlendFilter.h new file mode 100755 index 00000000..29e30635 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageSourceOverBlendFilter.h @@ -0,0 +1,5 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageSourceOverBlendFilter : GPUImageTwoInputFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageSphereRefractionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageSphereRefractionFilter.h new file mode 100755 index 00000000..cbbd2afa --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageSphereRefractionFilter.h @@ -0,0 +1,15 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageStillCamera.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageStillCamera.h new file mode 100755 index 00000000..e4db59b2 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageStillCamera.h @@ -0,0 +1,24 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageStretchDistortionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageStretchDistortionFilter.h new file mode 100755 index 00000000..07803095 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageStretchDistortionFilter.h @@ -0,0 +1,13 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageSubtractBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageSubtractBlendFilter.h new file mode 100755 index 00000000..8dee8215 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageSubtractBlendFilter.h @@ -0,0 +1,5 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageSubtractBlendFilter : GPUImageTwoInputFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageSwirlFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageSwirlFilter.h new file mode 100755 index 00000000..ed7d0122 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageSwirlFilter.h @@ -0,0 +1,17 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageTextureInput.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageTextureInput.h new file mode 100755 index 00000000..8190305d --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageTextureInput.h @@ -0,0 +1,14 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageTextureOutput.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageTextureOutput.h new file mode 100755 index 00000000..05e1f36e --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageTextureOutput.h @@ -0,0 +1,21 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageThreeInputFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageThreeInputFilter.h new file mode 100755 index 00000000..5ecd53e0 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageThreeInputFilter.h @@ -0,0 +1,21 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageThresholdEdgeDetectionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageThresholdEdgeDetectionFilter.h new file mode 100755 index 00000000..2036030c --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageThresholdEdgeDetectionFilter.h @@ -0,0 +1,12 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageThresholdSketchFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageThresholdSketchFilter.h new file mode 100755 index 00000000..fda58979 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageThresholdSketchFilter.h @@ -0,0 +1,5 @@ +#import "GPUImageThresholdEdgeDetectionFilter.h" + +@interface GPUImageThresholdSketchFilter : GPUImageThresholdEdgeDetectionFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageThresholdedNonMaximumSuppressionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageThresholdedNonMaximumSuppressionFilter.h new file mode 100755 index 00000000..9c6e5d72 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageThresholdedNonMaximumSuppressionFilter.h @@ -0,0 +1,14 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageTiltShiftFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageTiltShiftFilter.h new file mode 100755 index 00000000..e41adee7 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageTiltShiftFilter.h @@ -0,0 +1,24 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageToneCurveFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageToneCurveFilter.h new file mode 100755 index 00000000..ff4ae92e --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageToneCurveFilter.h @@ -0,0 +1,30 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageToonFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageToonFilter.h new file mode 100755 index 00000000..ef8e17c3 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageToonFilter.h @@ -0,0 +1,19 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageTransformFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageTransformFilter.h new file mode 100755 index 00000000..9865b853 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageTransformFilter.h @@ -0,0 +1,19 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageTwoInputCrossTextureSamplingFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageTwoInputCrossTextureSamplingFilter.h new file mode 100755 index 00000000..64eac9dc --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageTwoInputCrossTextureSamplingFilter.h @@ -0,0 +1,15 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageTwoInputFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageTwoInputFilter.h new file mode 100755 index 00000000..da3a1345 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageTwoInputFilter.h @@ -0,0 +1,21 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageTwoPassFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageTwoPassFilter.h new file mode 100755 index 00000000..23087f35 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageTwoPassFilter.h @@ -0,0 +1,19 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageTwoPassTextureSamplingFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageTwoPassTextureSamplingFilter.h new file mode 100755 index 00000000..73ab79d3 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageTwoPassTextureSamplingFilter.h @@ -0,0 +1,13 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageUIElement.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageUIElement.h new file mode 100755 index 00000000..984ff2ad --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageUIElement.h @@ -0,0 +1,15 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageUnsharpMaskFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageUnsharpMaskFilter.h new file mode 100755 index 00000000..9d8aff01 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageUnsharpMaskFilter.h @@ -0,0 +1,16 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageVibranceFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageVibranceFilter.h new file mode 100755 index 00000000..9daddd79 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageVibranceFilter.h @@ -0,0 +1,20 @@ +// +// GPUImageVibranceFilter.h +// +// +// Created by github.com/r3mus on 8/14/15. +// +// + +#import "GPUImageFilter.h" + +@interface GPUImageVibranceFilter : GPUImageFilter +{ + GLint vibranceUniform; +} + +// Modifies the saturation of desaturated colors, leaving saturated colors unmodified. +// Value -1 to 1 (-1 is minimum vibrance, 0 is no change, and 1 is maximum vibrance) +@property (readwrite, nonatomic) GLfloat vibrance; + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageVideoCamera.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageVideoCamera.h new file mode 100755 index 00000000..458020cf --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageVideoCamera.h @@ -0,0 +1,156 @@ +#import +#import +#import +#import "GPUImageContext.h" +#import "GPUImageOutput.h" +#import "GPUImageColorConversion.h" + +//Optionally override the YUV to RGB matrices +void setColorConversion601( GLfloat conversionMatrix[9] ); +void setColorConversion601FullRange( GLfloat conversionMatrix[9] ); +void setColorConversion709( GLfloat conversionMatrix[9] ); + + +//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; +} + +/// Whether or not the underlying AVCaptureSession is running +@property(readonly, nonatomic) BOOL isRunning; + +/// 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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageView.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageView.h new file mode 100755 index 00000000..b42651d3 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageView.h @@ -0,0 +1,41 @@ +#import +#import "GPUImageContext.h" + +typedef NS_ENUM(NSUInteger, GPUImageFillModeType) { + 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 +}; + + + +/** + 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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageVignetteFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageVignetteFilter.h new file mode 100755 index 00000000..37be9449 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageVignetteFilter.h @@ -0,0 +1,22 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageVoronoiConsumerFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageVoronoiConsumerFilter.h new file mode 100755 index 00000000..659e39d5 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageVoronoiConsumerFilter.h @@ -0,0 +1,10 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageVoronoiConsumerFilter : GPUImageTwoInputFilter +{ + GLint sizeUniform; +} + +@property (nonatomic, readwrite) CGSize sizeInPixels; + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageWeakPixelInclusionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageWeakPixelInclusionFilter.h new file mode 100755 index 00000000..44b76c6a --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageWeakPixelInclusionFilter.h @@ -0,0 +1,5 @@ +#import "GPUImage3x3TextureSamplingFilter.h" + +@interface GPUImageWeakPixelInclusionFilter : GPUImage3x3TextureSamplingFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageWhiteBalanceFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageWhiteBalanceFilter.h new file mode 100755 index 00000000..6b09c33d --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageWhiteBalanceFilter.h @@ -0,0 +1,17 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageXYDerivativeFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageXYDerivativeFilter.h new file mode 100755 index 00000000..8db57457 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageXYDerivativeFilter.h @@ -0,0 +1,5 @@ +#import "GPUImageSobelEdgeDetectionFilter.h" + +@interface GPUImageXYDerivativeFilter : GPUImageSobelEdgeDetectionFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageZoomBlurFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageZoomBlurFilter.h new file mode 100755 index 00000000..744a72cb --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageZoomBlurFilter.h @@ -0,0 +1,13 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageiOSBlurFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageiOSBlurFilter.h new file mode 100755 index 00000000..261d0d7c --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Headers/GPUImageiOSBlurFilter.h @@ -0,0 +1,31 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/GPUImage b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/GPUImage new file mode 100755 index 00000000..0013cc9f Binary files /dev/null and b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/GPUImage differ diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GLProgram.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GLProgram.h new file mode 100755 index 00000000..cd455e71 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GLProgram.h @@ -0,0 +1,42 @@ +// 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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImage.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImage.h new file mode 100755 index 00000000..3e91c29c --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImage.h @@ -0,0 +1,170 @@ +#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 "GPUImageSolarizeFilter.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 "GPUImageColorLocalBinaryPatternFilter.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 "GPUImageFourInputFilter.h" +#import "GPUImageWeakPixelInclusionFilter.h" +#import "GPUImageColorConversion.h" +#import "GPUImageColourFASTFeatureDetector.h" +#import "GPUImageColourFASTSamplingOperation.h" + diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImage3x3ConvolutionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImage3x3ConvolutionFilter.h new file mode 100755 index 00000000..67e68def --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImage3x3ConvolutionFilter.h @@ -0,0 +1,18 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImage3x3TextureSamplingFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImage3x3TextureSamplingFilter.h new file mode 100755 index 00000000..5599e156 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImage3x3TextureSamplingFilter.h @@ -0,0 +1,18 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageAdaptiveThresholdFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageAdaptiveThresholdFilter.h new file mode 100755 index 00000000..32785560 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageAdaptiveThresholdFilter.h @@ -0,0 +1,9 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageAddBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageAddBlendFilter.h new file mode 100755 index 00000000..b14c60c6 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageAddBlendFilter.h @@ -0,0 +1,5 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageAddBlendFilter : GPUImageTwoInputFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageAlphaBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageAlphaBlendFilter.h new file mode 100755 index 00000000..c4d75759 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageAlphaBlendFilter.h @@ -0,0 +1,11 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageAmatorkaFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageAmatorkaFilter.h new file mode 100755 index 00000000..1dbe096d --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageAmatorkaFilter.h @@ -0,0 +1,17 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageAverageColor.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageAverageColor.h new file mode 100755 index 00000000..e3d957d0 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageAverageColor.h @@ -0,0 +1,20 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageAverageLuminanceThresholdFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageAverageLuminanceThresholdFilter.h new file mode 100755 index 00000000..7f1ae464 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageAverageLuminanceThresholdFilter.h @@ -0,0 +1,8 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageBilateralFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageBilateralFilter.h new file mode 100755 index 00000000..6b736ccf --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageBilateralFilter.h @@ -0,0 +1,10 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageBoxBlurFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageBoxBlurFilter.h new file mode 100755 index 00000000..3fd880bf --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageBoxBlurFilter.h @@ -0,0 +1,7 @@ +#import "GPUImageGaussianBlurFilter.h" + +/** A hardware-accelerated box blur of an image + */ +@interface GPUImageBoxBlurFilter : GPUImageGaussianBlurFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageBrightnessFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageBrightnessFilter.h new file mode 100755 index 00000000..046473b9 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageBrightnessFilter.h @@ -0,0 +1,11 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageBuffer.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageBuffer.h new file mode 100755 index 00000000..caf09c8d --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageBuffer.h @@ -0,0 +1,10 @@ +#import "GPUImageFilter.h" + +@interface GPUImageBuffer : GPUImageFilter +{ + NSMutableArray *bufferedFramebuffers; +} + +@property(readwrite, nonatomic) NSUInteger bufferSize; + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageBulgeDistortionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageBulgeDistortionFilter.h new file mode 100755 index 00000000..d416e536 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageBulgeDistortionFilter.h @@ -0,0 +1,16 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageCGAColorspaceFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageCGAColorspaceFilter.h new file mode 100755 index 00000000..4f97804b --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageCGAColorspaceFilter.h @@ -0,0 +1,5 @@ +#import "GPUImageFilter.h" + +@interface GPUImageCGAColorspaceFilter : GPUImageFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageCannyEdgeDetectionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageCannyEdgeDetectionFilter.h new file mode 100755 index 00000000..53c58502 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageCannyEdgeDetectionFilter.h @@ -0,0 +1,62 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageChromaKeyBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageChromaKeyBlendFilter.h new file mode 100755 index 00000000..00a5aed7 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageChromaKeyBlendFilter.h @@ -0,0 +1,32 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageChromaKeyFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageChromaKeyFilter.h new file mode 100755 index 00000000..5ee7e498 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageChromaKeyFilter.h @@ -0,0 +1,30 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageClosingFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageClosingFilter.h new file mode 100755 index 00000000..61e34c41 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageClosingFilter.h @@ -0,0 +1,19 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageColorBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageColorBlendFilter.h new file mode 100755 index 00000000..302a16c6 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageColorBlendFilter.h @@ -0,0 +1,5 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageColorBlendFilter : GPUImageTwoInputFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageColorBurnBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageColorBurnBlendFilter.h new file mode 100755 index 00000000..50ebb3f4 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageColorBurnBlendFilter.h @@ -0,0 +1,9 @@ +#import "GPUImageTwoInputFilter.h" + +/** Applies a color burn blend of two images + */ +@interface GPUImageColorBurnBlendFilter : GPUImageTwoInputFilter +{ +} + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageColorConversion.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageColorConversion.h new file mode 100755 index 00000000..02f82bf8 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageColorConversion.h @@ -0,0 +1,12 @@ +#ifndef GPUImageColorConversion_h +#define GPUImageColorConversion_h + +extern GLfloat *kColorConversion601; +extern GLfloat *kColorConversion601FullRange; +extern GLfloat *kColorConversion709; +extern NSString *const kGPUImageYUVVideoRangeConversionForRGFragmentShaderString; +extern NSString *const kGPUImageYUVFullRangeConversionForLAFragmentShaderString; +extern NSString *const kGPUImageYUVVideoRangeConversionForLAFragmentShaderString; + + +#endif /* GPUImageColorConversion_h */ diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageColorDodgeBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageColorDodgeBlendFilter.h new file mode 100755 index 00000000..0f541c42 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageColorDodgeBlendFilter.h @@ -0,0 +1,9 @@ +#import "GPUImageTwoInputFilter.h" + +/** Applies a color dodge blend of two images + */ +@interface GPUImageColorDodgeBlendFilter : GPUImageTwoInputFilter +{ +} + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageColorInvertFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageColorInvertFilter.h new file mode 100755 index 00000000..aaeec438 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageColorInvertFilter.h @@ -0,0 +1,7 @@ +#import "GPUImageFilter.h" + +@interface GPUImageColorInvertFilter : GPUImageFilter +{ +} + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageColorLocalBinaryPatternFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageColorLocalBinaryPatternFilter.h new file mode 100755 index 00000000..8b57cd7c --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageColorLocalBinaryPatternFilter.h @@ -0,0 +1,5 @@ +#import "GPUImage3x3TextureSamplingFilter.h" + +@interface GPUImageColorLocalBinaryPatternFilter : GPUImage3x3TextureSamplingFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageColorMatrixFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageColorMatrixFilter.h new file mode 100755 index 00000000..75887276 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageColorMatrixFilter.h @@ -0,0 +1,19 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageColorPackingFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageColorPackingFilter.h new file mode 100755 index 00000000..c2edca51 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageColorPackingFilter.h @@ -0,0 +1,10 @@ +#import "GPUImageFilter.h" + +@interface GPUImageColorPackingFilter : GPUImageFilter +{ + GLint texelWidthUniform, texelHeightUniform; + + CGFloat texelWidth, texelHeight; +} + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageColourFASTFeatureDetector.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageColourFASTFeatureDetector.h new file mode 100755 index 00000000..3d51ed17 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageColourFASTFeatureDetector.h @@ -0,0 +1,21 @@ +#import "GPUImageFilterGroup.h" + +// This generates image-wide feature descriptors using the ColourFAST process, as developed and described in +// +// A. Ensor and S. Hall. ColourFAST: GPU-based feature point detection and tracking on mobile devices. 28th International Conference of Image and Vision Computing, New Zealand, 2013, p. 124-129. +// +// Seth Hall, "GPU accelerated feature algorithms for mobile devices", PhD thesis, School of Computing and Mathematical Sciences, Auckland University of Technology 2014. +// http://aut.researchgateway.ac.nz/handle/10292/7991 + +@class GPUImageColourFASTSamplingOperation; +@class GPUImageBoxBlurFilter; + +@interface GPUImageColourFASTFeatureDetector : GPUImageFilterGroup +{ + GPUImageBoxBlurFilter *blurFilter; + GPUImageColourFASTSamplingOperation *colourFASTSamplingOperation; +} +// The blur radius of the underlying box blur. The default is 3.0. +@property (readwrite, nonatomic) CGFloat blurRadiusInPixels; + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageColourFASTSamplingOperation.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageColourFASTSamplingOperation.h new file mode 100755 index 00000000..78e6ede9 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageColourFASTSamplingOperation.h @@ -0,0 +1,22 @@ +#import "GPUImageTwoInputFilter.h" + +// This is the feature extraction phase of the ColourFAST feature detector, as described in: +// +// A. Ensor and S. Hall. ColourFAST: GPU-based feature point detection and tracking on mobile devices. 28th International Conference of Image and Vision Computing, New Zealand, 2013, p. 124-129. +// +// Seth Hall, "GPU accelerated feature algorithms for mobile devices", PhD thesis, School of Computing and Mathematical Sciences, Auckland University of Technology 2014. +// http://aut.researchgateway.ac.nz/handle/10292/7991 + +@interface GPUImageColourFASTSamplingOperation : 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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageContext.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageContext.h new file mode 100755 index 00000000..71142b88 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageContext.h @@ -0,0 +1,64 @@ +#import "GLProgram.h" +#import "GPUImageFramebuffer.h" +#import "GPUImageFramebufferCache.h" + +#define GPUImageRotationSwapsWidthAndHeight(rotation) ((rotation) == kGPUImageRotateLeft || (rotation) == kGPUImageRotateRight || (rotation) == kGPUImageRotateRightFlipVertical || (rotation) == kGPUImageRotateRightFlipHorizontal) + +typedef NS_ENUM(NSUInteger, GPUImageRotationMode) { + kGPUImageNoRotation, + kGPUImageRotateLeft, + kGPUImageRotateRight, + kGPUImageFlipVertical, + kGPUImageFlipHorizonal, + kGPUImageRotateRightFlipVertical, + kGPUImageRotateRightFlipHorizontal, + kGPUImageRotate180 +}; + +@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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageContrastFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageContrastFilter.h new file mode 100755 index 00000000..e09e6dc4 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageContrastFilter.h @@ -0,0 +1,14 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageCropFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageCropFilter.h new file mode 100755 index 00000000..641fb7bf --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageCropFilter.h @@ -0,0 +1,14 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageCrosshairGenerator.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageCrosshairGenerator.h new file mode 100755 index 00000000..569774f5 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageCrosshairGenerator.h @@ -0,0 +1,17 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageCrosshatchFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageCrosshatchFilter.h new file mode 100755 index 00000000..dab18967 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageCrosshatchFilter.h @@ -0,0 +1,13 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageDarkenBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageDarkenBlendFilter.h new file mode 100755 index 00000000..5dfe3405 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageDarkenBlendFilter.h @@ -0,0 +1,7 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageDarkenBlendFilter : GPUImageTwoInputFilter +{ +} + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageDifferenceBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageDifferenceBlendFilter.h new file mode 100755 index 00000000..7c7dfc23 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageDifferenceBlendFilter.h @@ -0,0 +1,7 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageDifferenceBlendFilter : GPUImageTwoInputFilter +{ +} + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageDilationFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageDilationFilter.h new file mode 100755 index 00000000..59423a37 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageDilationFilter.h @@ -0,0 +1,16 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageDirectionalNonMaximumSuppressionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageDirectionalNonMaximumSuppressionFilter.h new file mode 100755 index 00000000..fdffb9fb --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageDirectionalNonMaximumSuppressionFilter.h @@ -0,0 +1,19 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageDirectionalSobelEdgeDetectionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageDirectionalSobelEdgeDetectionFilter.h new file mode 100755 index 00000000..cfccc897 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageDirectionalSobelEdgeDetectionFilter.h @@ -0,0 +1,5 @@ +#import "GPUImage3x3TextureSamplingFilter.h" + +@interface GPUImageDirectionalSobelEdgeDetectionFilter : GPUImage3x3TextureSamplingFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageDissolveBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageDissolveBlendFilter.h new file mode 100755 index 00000000..b4e5720a --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageDissolveBlendFilter.h @@ -0,0 +1,11 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageDivideBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageDivideBlendFilter.h new file mode 100755 index 00000000..ad798e29 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageDivideBlendFilter.h @@ -0,0 +1,5 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageDivideBlendFilter : GPUImageTwoInputFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageEmbossFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageEmbossFilter.h new file mode 100755 index 00000000..dbd21e82 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageEmbossFilter.h @@ -0,0 +1,8 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageErosionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageErosionFilter.h new file mode 100755 index 00000000..b311a265 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageErosionFilter.h @@ -0,0 +1,11 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageExclusionBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageExclusionBlendFilter.h new file mode 100755 index 00000000..f7c83f57 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageExclusionBlendFilter.h @@ -0,0 +1,7 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageExclusionBlendFilter : GPUImageTwoInputFilter +{ +} + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageExposureFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageExposureFilter.h new file mode 100755 index 00000000..886a052f --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageExposureFilter.h @@ -0,0 +1,11 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageFASTCornerDetectionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageFASTCornerDetectionFilter.h new file mode 100755 index 00000000..86e7cf42 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageFASTCornerDetectionFilter.h @@ -0,0 +1,33 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageFalseColorFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageFalseColorFilter.h new file mode 100755 index 00000000..cb0b82f7 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageFalseColorFilter.h @@ -0,0 +1,15 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageFilter.h new file mode 100755 index 00000000..0171aa80 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageFilter.h @@ -0,0 +1,134 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageFilterGroup.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageFilterGroup.h new file mode 100755 index 00000000..6817cdf0 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageFilterGroup.h @@ -0,0 +1,19 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageFilterPipeline.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageFilterPipeline.h new file mode 100755 index 00000000..dc2baeac --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageFilterPipeline.h @@ -0,0 +1,30 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageFourInputFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageFourInputFilter.h new file mode 100755 index 00000000..3beab2df --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageFourInputFilter.h @@ -0,0 +1,21 @@ +#import "GPUImageThreeInputFilter.h" + +extern NSString *const kGPUImageFourInputTextureVertexShaderString; + +@interface GPUImageFourInputFilter : GPUImageThreeInputFilter +{ + GPUImageFramebuffer *fourthInputFramebuffer; + + GLint filterFourthTextureCoordinateAttribute; + GLint filterInputTextureUniform4; + GPUImageRotationMode inputRotation4; + GLuint filterSourceTexture4; + CMTime fourthFrameTime; + + BOOL hasSetThirdTexture, hasReceivedFourthFrame, fourthFrameWasVideo; + BOOL fourthFrameCheckDisabled; +} + +- (void)disableFourthFrameCheck; + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageFramebuffer.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageFramebuffer.h new file mode 100755 index 00000000..bdb6a1f1 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageFramebuffer.h @@ -0,0 +1,59 @@ +#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; +- (CVPixelBufferRef)pixelBuffer; + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageFramebufferCache.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageFramebufferCache.h new file mode 100755 index 00000000..e56a3456 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageFramebufferCache.h @@ -0,0 +1,15 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageGammaFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageGammaFilter.h new file mode 100755 index 00000000..0521d089 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageGammaFilter.h @@ -0,0 +1,11 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageGaussianBlurFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageGaussianBlurFilter.h new file mode 100755 index 00000000..1fb7a137 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageGaussianBlurFilter.h @@ -0,0 +1,36 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageGaussianBlurPositionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageGaussianBlurPositionFilter.h new file mode 100755 index 00000000..dc88a563 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageGaussianBlurPositionFilter.h @@ -0,0 +1,22 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageGaussianSelectiveBlurFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageGaussianSelectiveBlurFilter.h new file mode 100755 index 00000000..02324566 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageGaussianSelectiveBlurFilter.h @@ -0,0 +1,30 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageGlassSphereFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageGlassSphereFilter.h new file mode 100755 index 00000000..809a4ee8 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageGlassSphereFilter.h @@ -0,0 +1,5 @@ +#import "GPUImageSphereRefractionFilter.h" + +@interface GPUImageGlassSphereFilter : GPUImageSphereRefractionFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageGrayscaleFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageGrayscaleFilter.h new file mode 100755 index 00000000..2d97f8c3 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageGrayscaleFilter.h @@ -0,0 +1,9 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageHSBFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageHSBFilter.h new file mode 100755 index 00000000..65a9e1de --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageHSBFilter.h @@ -0,0 +1,27 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageHalftoneFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageHalftoneFilter.h new file mode 100755 index 00000000..1860bc97 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageHalftoneFilter.h @@ -0,0 +1,5 @@ +#import "GPUImagePixellateFilter.h" + +@interface GPUImageHalftoneFilter : GPUImagePixellateFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageHardLightBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageHardLightBlendFilter.h new file mode 100755 index 00000000..47d62609 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageHardLightBlendFilter.h @@ -0,0 +1,7 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageHardLightBlendFilter : GPUImageTwoInputFilter +{ +} + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageHarrisCornerDetectionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageHarrisCornerDetectionFilter.h new file mode 100755 index 00000000..1492b8b8 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageHarrisCornerDetectionFilter.h @@ -0,0 +1,53 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageHazeFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageHazeFilter.h new file mode 100755 index 00000000..eb3fbca6 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageHazeFilter.h @@ -0,0 +1,29 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageHighPassFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageHighPassFilter.h new file mode 100755 index 00000000..263d8df1 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageHighPassFilter.h @@ -0,0 +1,14 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageHighlightShadowFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageHighlightShadowFilter.h new file mode 100755 index 00000000..35791298 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageHighlightShadowFilter.h @@ -0,0 +1,20 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageHighlightShadowTintFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageHighlightShadowTintFilter.h new file mode 100755 index 00000000..166c5c8c --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageHighlightShadowTintFilter.h @@ -0,0 +1,25 @@ +// +// GPUImageHighlightShadowTintFilter.h +// +// +// Created by github.com/r3mus on 8/14/15. +// +// + +#import "GPUImageFilter.h" + +@interface GPUImageHighlightShadowTintFilter : GPUImageFilter +{ + GLint shadowTintIntensityUniform, highlightTintIntensityUniform, shadowTintColorUniform, highlightTintColorUniform; +} + +// The shadowTint and highlightTint colors specify what colors replace the dark and light areas of the image, respectively. The defaults for shadows are black, highlighs white. +@property(readwrite, nonatomic) GLfloat shadowTintIntensity; +@property(readwrite, nonatomic) GPUVector4 shadowTintColor; +@property(readwrite, nonatomic) GLfloat highlightTintIntensity; +@property(readwrite, nonatomic) GPUVector4 highlightTintColor; + +- (void)setShadowTintColorRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent alpha:(GLfloat)alphaComponent; +- (void)setHighlightTintColorRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent alpha:(GLfloat)alphaComponent; + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageHistogramEqualizationFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageHistogramEqualizationFilter.h new file mode 100755 index 00000000..2b71cda0 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageHistogramEqualizationFilter.h @@ -0,0 +1,26 @@ +// +// 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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageHistogramFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageHistogramFilter.h new file mode 100755 index 00000000..32004bf7 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageHistogramFilter.h @@ -0,0 +1,22 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageHistogramGenerator.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageHistogramGenerator.h new file mode 100755 index 00000000..f80c50f3 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageHistogramGenerator.h @@ -0,0 +1,8 @@ +#import "GPUImageFilter.h" + +@interface GPUImageHistogramGenerator : GPUImageFilter +{ + GLint backgroundColorUniform; +} + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageHoughTransformLineDetector.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageHoughTransformLineDetector.h new file mode 100755 index 00000000..3ab6977f --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageHoughTransformLineDetector.h @@ -0,0 +1,49 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageHueBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageHueBlendFilter.h new file mode 100755 index 00000000..4399ffcf --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageHueBlendFilter.h @@ -0,0 +1,5 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageHueBlendFilter : GPUImageTwoInputFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageHueFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageHueFilter.h new file mode 100755 index 00000000..eef24651 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageHueFilter.h @@ -0,0 +1,11 @@ + +#import "GPUImageFilter.h" + +@interface GPUImageHueFilter : GPUImageFilter +{ + GLint hueAdjustUniform; + +} +@property (nonatomic, readwrite) CGFloat hue; + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageJFAVoronoiFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageJFAVoronoiFilter.h new file mode 100755 index 00000000..4c50cc37 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageJFAVoronoiFilter.h @@ -0,0 +1,17 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageKuwaharaFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageKuwaharaFilter.h new file mode 100755 index 00000000..4fb0bce8 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageKuwaharaFilter.h @@ -0,0 +1,13 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageKuwaharaRadius3Filter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageKuwaharaRadius3Filter.h new file mode 100755 index 00000000..c4591b81 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageKuwaharaRadius3Filter.h @@ -0,0 +1,8 @@ +// +// GPUImageKuwaharaRadius3Filter.h + +#import "GPUImageFilter.h" + +@interface GPUImageKuwaharaRadius3Filter : GPUImageFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageLanczosResamplingFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageLanczosResamplingFilter.h new file mode 100755 index 00000000..5d7409f5 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageLanczosResamplingFilter.h @@ -0,0 +1,7 @@ +#import "GPUImageTwoPassTextureSamplingFilter.h" + +@interface GPUImageLanczosResamplingFilter : GPUImageTwoPassTextureSamplingFilter + +@property(readwrite, nonatomic) CGSize originalImageSize; + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageLaplacianFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageLaplacianFilter.h new file mode 100755 index 00000000..267c1bab --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageLaplacianFilter.h @@ -0,0 +1,5 @@ +#import "GPUImage3x3ConvolutionFilter.h" + +@interface GPUImageLaplacianFilter : GPUImage3x3ConvolutionFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageLevelsFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageLevelsFilter.h new file mode 100755 index 00000000..d0948fbf --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageLevelsFilter.h @@ -0,0 +1,45 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageLightenBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageLightenBlendFilter.h new file mode 100755 index 00000000..b0287c13 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageLightenBlendFilter.h @@ -0,0 +1,8 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageLineGenerator.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageLineGenerator.h new file mode 100755 index 00000000..4c467366 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageLineGenerator.h @@ -0,0 +1,18 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageLinearBurnBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageLinearBurnBlendFilter.h new file mode 100755 index 00000000..7e5e415c --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageLinearBurnBlendFilter.h @@ -0,0 +1,5 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageLinearBurnBlendFilter : GPUImageTwoInputFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageLocalBinaryPatternFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageLocalBinaryPatternFilter.h new file mode 100755 index 00000000..431dbbd4 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageLocalBinaryPatternFilter.h @@ -0,0 +1,5 @@ +#import "GPUImage3x3TextureSamplingFilter.h" + +@interface GPUImageLocalBinaryPatternFilter : GPUImage3x3TextureSamplingFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageLookupFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageLookupFilter.h new file mode 100755 index 00000000..23ebde2b --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageLookupFilter.h @@ -0,0 +1,34 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageLowPassFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageLowPassFilter.h new file mode 100755 index 00000000..be5c397e --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageLowPassFilter.h @@ -0,0 +1,14 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageLuminanceRangeFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageLuminanceRangeFilter.h new file mode 100755 index 00000000..5a310370 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageLuminanceRangeFilter.h @@ -0,0 +1,12 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageLuminanceThresholdFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageLuminanceThresholdFilter.h new file mode 100755 index 00000000..0abb9a1e --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageLuminanceThresholdFilter.h @@ -0,0 +1,14 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageLuminosity.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageLuminosity.h new file mode 100755 index 00000000..b2d2458f --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageLuminosity.h @@ -0,0 +1,17 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageLuminosityBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageLuminosityBlendFilter.h new file mode 100755 index 00000000..03b5e4c9 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageLuminosityBlendFilter.h @@ -0,0 +1,5 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageLuminosityBlendFilter : GPUImageTwoInputFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageMaskFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageMaskFilter.h new file mode 100755 index 00000000..94cf0648 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageMaskFilter.h @@ -0,0 +1,5 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageMaskFilter : GPUImageTwoInputFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageMedianFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageMedianFilter.h new file mode 100755 index 00000000..80225789 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageMedianFilter.h @@ -0,0 +1,5 @@ +#import "GPUImage3x3TextureSamplingFilter.h" + +@interface GPUImageMedianFilter : GPUImage3x3TextureSamplingFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageMissEtikateFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageMissEtikateFilter.h new file mode 100755 index 00000000..de170647 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageMissEtikateFilter.h @@ -0,0 +1,17 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageMonochromeFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageMonochromeFilter.h new file mode 100755 index 00000000..66a0e773 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageMonochromeFilter.h @@ -0,0 +1,13 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageMosaicFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageMosaicFilter.h new file mode 100755 index 00000000..5f72d3c9 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageMosaicFilter.h @@ -0,0 +1,22 @@ + +// 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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageMotionBlurFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageMotionBlurFilter.h new file mode 100755 index 00000000..dcca712f --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageMotionBlurFilter.h @@ -0,0 +1,13 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageMotionDetector.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageMotionDetector.h new file mode 100755 index 00000000..01329145 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageMotionDetector.h @@ -0,0 +1,18 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageMovie.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageMovie.h new file mode 100755 index 00000000..f61e56ef --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageMovie.h @@ -0,0 +1,61 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageMovieComposition.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageMovieComposition.h new file mode 100755 index 00000000..00e43814 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageMovieComposition.h @@ -0,0 +1,21 @@ +// +// 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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageMovieWriter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageMovieWriter.h new file mode 100755 index 00000000..f0b2c6ad --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageMovieWriter.h @@ -0,0 +1,67 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageMultiplyBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageMultiplyBlendFilter.h new file mode 100755 index 00000000..5ebc28bb --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageMultiplyBlendFilter.h @@ -0,0 +1,7 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageMultiplyBlendFilter : GPUImageTwoInputFilter +{ +} + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageNobleCornerDetectionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageNobleCornerDetectionFilter.h new file mode 100755 index 00000000..963fd66a --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageNobleCornerDetectionFilter.h @@ -0,0 +1,12 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageNonMaximumSuppressionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageNonMaximumSuppressionFilter.h new file mode 100755 index 00000000..fd8fe6d6 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageNonMaximumSuppressionFilter.h @@ -0,0 +1,5 @@ +#import "GPUImage3x3TextureSamplingFilter.h" + +@interface GPUImageNonMaximumSuppressionFilter : GPUImage3x3TextureSamplingFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageNormalBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageNormalBlendFilter.h new file mode 100755 index 00000000..ce5e22b4 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageNormalBlendFilter.h @@ -0,0 +1,8 @@ +// Created by Jorge Garcia on 9/5/12. +// + +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageNormalBlendFilter : GPUImageTwoInputFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageOpacityFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageOpacityFilter.h new file mode 100755 index 00000000..826749fb --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageOpacityFilter.h @@ -0,0 +1,11 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageOpeningFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageOpeningFilter.h new file mode 100755 index 00000000..3e4f7545 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageOpeningFilter.h @@ -0,0 +1,19 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageOutput.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageOutput.h new file mode 100755 index 00000000..c10121a9 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageOutput.h @@ -0,0 +1,128 @@ +#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 + +dispatch_queue_attr_t GPUImageDefaultQueueAttribute(void); +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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageOverlayBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageOverlayBlendFilter.h new file mode 100755 index 00000000..57eb8402 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageOverlayBlendFilter.h @@ -0,0 +1,5 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageOverlayBlendFilter : GPUImageTwoInputFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageParallelCoordinateLineTransformFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageParallelCoordinateLineTransformFilter.h new file mode 100755 index 00000000..aa8f3f47 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageParallelCoordinateLineTransformFilter.h @@ -0,0 +1,16 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImagePerlinNoiseFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImagePerlinNoiseFilter.h new file mode 100755 index 00000000..922f4d30 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImagePerlinNoiseFilter.h @@ -0,0 +1,13 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImagePicture+TextureSubimage.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImagePicture+TextureSubimage.h new file mode 100755 index 00000000..03c631bc --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImagePicture+TextureSubimage.h @@ -0,0 +1,19 @@ +// +// 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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImagePicture.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImagePicture.h new file mode 100755 index 00000000..4c4b9942 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImagePicture.h @@ -0,0 +1,38 @@ +#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; +- (id)initWithImage:(UIImage *)newImageSource removePremultiplication:(BOOL)removePremultiplication; +- (id)initWithCGImage:(CGImageRef)newImageSource removePremultiplication:(BOOL)removePremultiplication; +- (id)initWithImage:(UIImage *)newImageSource smoothlyScaleOutput:(BOOL)smoothlyScaleOutput removePremultiplication:(BOOL)removePremultiplication; +- (id)initWithCGImage:(CGImageRef)newImageSource smoothlyScaleOutput:(BOOL)smoothlyScaleOutput removePremultiplication:(BOOL)removePremultiplication; + +// 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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImagePinchDistortionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImagePinchDistortionFilter.h new file mode 100755 index 00000000..994774fd --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImagePinchDistortionFilter.h @@ -0,0 +1,20 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImagePixellateFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImagePixellateFilter.h new file mode 100755 index 00000000..d0f6ae04 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImagePixellateFilter.h @@ -0,0 +1,12 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImagePixellatePositionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImagePixellatePositionFilter.h new file mode 100755 index 00000000..9d304c93 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImagePixellatePositionFilter.h @@ -0,0 +1,17 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImagePoissonBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImagePoissonBlendFilter.h new file mode 100755 index 00000000..58eff225 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImagePoissonBlendFilter.h @@ -0,0 +1,18 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImagePolarPixellateFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImagePolarPixellateFilter.h new file mode 100755 index 00000000..3de6a4d3 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImagePolarPixellateFilter.h @@ -0,0 +1,13 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImagePolkaDotFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImagePolkaDotFilter.h new file mode 100755 index 00000000..369b7737 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImagePolkaDotFilter.h @@ -0,0 +1,10 @@ +#import "GPUImagePixellateFilter.h" + +@interface GPUImagePolkaDotFilter : GPUImagePixellateFilter +{ + GLint dotScalingUniform; +} + +@property(readwrite, nonatomic) CGFloat dotScaling; + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImagePosterizeFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImagePosterizeFilter.h new file mode 100755 index 00000000..6f655b3e --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImagePosterizeFilter.h @@ -0,0 +1,14 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImagePrewittEdgeDetectionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImagePrewittEdgeDetectionFilter.h new file mode 100755 index 00000000..141f8c5f --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImagePrewittEdgeDetectionFilter.h @@ -0,0 +1,5 @@ +#import "GPUImageSobelEdgeDetectionFilter.h" + +@interface GPUImagePrewittEdgeDetectionFilter : GPUImageSobelEdgeDetectionFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageRGBClosingFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageRGBClosingFilter.h new file mode 100755 index 00000000..08d13f88 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageRGBClosingFilter.h @@ -0,0 +1,18 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageRGBDilationFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageRGBDilationFilter.h new file mode 100755 index 00000000..68276f84 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageRGBDilationFilter.h @@ -0,0 +1,11 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageRGBErosionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageRGBErosionFilter.h new file mode 100755 index 00000000..5979cb7e --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageRGBErosionFilter.h @@ -0,0 +1,11 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageRGBFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageRGBFilter.h new file mode 100755 index 00000000..18966b1b --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageRGBFilter.h @@ -0,0 +1,15 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageRGBOpeningFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageRGBOpeningFilter.h new file mode 100755 index 00000000..dbec75fb --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageRGBOpeningFilter.h @@ -0,0 +1,17 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageRawDataInput.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageRawDataInput.h new file mode 100755 index 00000000..6ec4720f --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageRawDataInput.h @@ -0,0 +1,43 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageRawDataOutput.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageRawDataOutput.h new file mode 100755 index 00000000..5a4538c1 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageRawDataOutput.h @@ -0,0 +1,44 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageSaturationBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageSaturationBlendFilter.h new file mode 100755 index 00000000..767892a5 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageSaturationBlendFilter.h @@ -0,0 +1,5 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageSaturationBlendFilter : GPUImageTwoInputFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageSaturationFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageSaturationFilter.h new file mode 100755 index 00000000..1c6ff5bd --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageSaturationFilter.h @@ -0,0 +1,14 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageScreenBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageScreenBlendFilter.h new file mode 100755 index 00000000..2df3abf3 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageScreenBlendFilter.h @@ -0,0 +1,7 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageScreenBlendFilter : GPUImageTwoInputFilter +{ +} + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageSepiaFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageSepiaFilter.h new file mode 100755 index 00000000..a45164fe --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageSepiaFilter.h @@ -0,0 +1,6 @@ +#import "GPUImageColorMatrixFilter.h" + +/// Simple sepia tone filter +@interface GPUImageSepiaFilter : GPUImageColorMatrixFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageSharpenFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageSharpenFilter.h new file mode 100755 index 00000000..739df503 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageSharpenFilter.h @@ -0,0 +1,12 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageShiTomasiFeatureDetectionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageShiTomasiFeatureDetectionFilter.h new file mode 100755 index 00000000..b16ebc01 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageShiTomasiFeatureDetectionFilter.h @@ -0,0 +1,13 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageSingleComponentGaussianBlurFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageSingleComponentGaussianBlurFilter.h new file mode 100755 index 00000000..934b1e3a --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageSingleComponentGaussianBlurFilter.h @@ -0,0 +1,7 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageSketchFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageSketchFilter.h new file mode 100755 index 00000000..598145ae --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageSketchFilter.h @@ -0,0 +1,11 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageSkinToneFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageSkinToneFilter.h new file mode 100755 index 00000000..0dd6f866 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageSkinToneFilter.h @@ -0,0 +1,47 @@ +// +// GPUImageSkinToneFilter.h +// +// +// Created by github.com/r3mus on 8/14/15. +// +// + +#import "GPUImageTwoInputFilter.h" + +typedef NS_ENUM(NSUInteger, GPUImageSkinToneUpperColor) { + GPUImageSkinToneUpperColorGreen, + GPUImageSkinToneUpperColorOrange +}; + +extern NSString *const kGPUImageSkinToneFragmentShaderString; + +@interface GPUImageSkinToneFilter : GPUImageFilter +{ + GLint skinToneAdjustUniform; + GLint skinHueUniform; + GLint skinHueThresholdUniform; + GLint maxHueShiftUniform; + GLint maxSaturationShiftUniform; + GLint upperSkinToneColorUniform; +} + +// The amount of effect to apply, between -1.0 (pink) and +1.0 (orange OR green). Default is 0.0. +@property (nonatomic, readwrite) CGFloat skinToneAdjust; + +// The initial hue of skin to adjust. Default is 0.05 (a common skin red). +@property (nonatomic, readwrite) CGFloat skinHue; + +// The bell curve "breadth" of the skin hue adjustment (i.e. how different from the original skinHue will the modifications effect). +// Default is 40.0 +@property (nonatomic, readwrite) CGFloat skinHueThreshold; + +// The maximum amount of hue shift allowed in the adjustments that affect hue (pink, green). Default = 0.25. +@property (nonatomic, readwrite) CGFloat maxHueShift; + +// The maximum amount of saturation shift allowed in the adjustments that affect saturation (orange). Default = 0.4. +@property (nonatomic, readwrite) CGFloat maxSaturationShift; + +// Defines whether the upper range (> 0.0) will change the skin tone to green (hue) or orange (saturation) +@property (nonatomic, readwrite) GPUImageSkinToneUpperColor upperSkinToneColor; + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageSmoothToonFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageSmoothToonFilter.h new file mode 100755 index 00000000..f89caac5 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageSmoothToonFilter.h @@ -0,0 +1,28 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageSobelEdgeDetectionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageSobelEdgeDetectionFilter.h new file mode 100755 index 00000000..d6b2c13a --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageSobelEdgeDetectionFilter.h @@ -0,0 +1,16 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageSoftEleganceFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageSoftEleganceFilter.h new file mode 100755 index 00000000..596e1567 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageSoftEleganceFilter.h @@ -0,0 +1,19 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageSoftLightBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageSoftLightBlendFilter.h new file mode 100755 index 00000000..13fc877c --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageSoftLightBlendFilter.h @@ -0,0 +1,7 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageSoftLightBlendFilter : GPUImageTwoInputFilter +{ +} + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageSolarizeFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageSolarizeFilter.h new file mode 100755 index 00000000..ba01c15a --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageSolarizeFilter.h @@ -0,0 +1,14 @@ +#import "GPUImageFilter.h" + +/** Pixels with a luminance above the threshold will invert their color + */ +@interface GPUImageSolarizeFilter : GPUImageFilter +{ + GLint thresholdUniform; +} + +/** Anything above this luminance will be inverted, and anything below normal. Ranges from 0.0 to 1.0, with 0.5 as the default + */ +@property(readwrite, nonatomic) CGFloat threshold; + +@end \ No newline at end of file diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageSolidColorGenerator.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageSolidColorGenerator.h new file mode 100755 index 00000000..58b1383e --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageSolidColorGenerator.h @@ -0,0 +1,19 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageSourceOverBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageSourceOverBlendFilter.h new file mode 100755 index 00000000..29e30635 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageSourceOverBlendFilter.h @@ -0,0 +1,5 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageSourceOverBlendFilter : GPUImageTwoInputFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageSphereRefractionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageSphereRefractionFilter.h new file mode 100755 index 00000000..cbbd2afa --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageSphereRefractionFilter.h @@ -0,0 +1,15 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageStillCamera.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageStillCamera.h new file mode 100755 index 00000000..e4db59b2 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageStillCamera.h @@ -0,0 +1,24 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageStretchDistortionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageStretchDistortionFilter.h new file mode 100755 index 00000000..07803095 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageStretchDistortionFilter.h @@ -0,0 +1,13 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageSubtractBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageSubtractBlendFilter.h new file mode 100755 index 00000000..8dee8215 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageSubtractBlendFilter.h @@ -0,0 +1,5 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageSubtractBlendFilter : GPUImageTwoInputFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageSwirlFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageSwirlFilter.h new file mode 100755 index 00000000..ed7d0122 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageSwirlFilter.h @@ -0,0 +1,17 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageTextureInput.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageTextureInput.h new file mode 100755 index 00000000..8190305d --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageTextureInput.h @@ -0,0 +1,14 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageTextureOutput.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageTextureOutput.h new file mode 100755 index 00000000..05e1f36e --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageTextureOutput.h @@ -0,0 +1,21 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageThreeInputFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageThreeInputFilter.h new file mode 100755 index 00000000..5ecd53e0 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageThreeInputFilter.h @@ -0,0 +1,21 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageThresholdEdgeDetectionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageThresholdEdgeDetectionFilter.h new file mode 100755 index 00000000..2036030c --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageThresholdEdgeDetectionFilter.h @@ -0,0 +1,12 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageThresholdSketchFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageThresholdSketchFilter.h new file mode 100755 index 00000000..fda58979 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageThresholdSketchFilter.h @@ -0,0 +1,5 @@ +#import "GPUImageThresholdEdgeDetectionFilter.h" + +@interface GPUImageThresholdSketchFilter : GPUImageThresholdEdgeDetectionFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageThresholdedNonMaximumSuppressionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageThresholdedNonMaximumSuppressionFilter.h new file mode 100755 index 00000000..9c6e5d72 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageThresholdedNonMaximumSuppressionFilter.h @@ -0,0 +1,14 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageTiltShiftFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageTiltShiftFilter.h new file mode 100755 index 00000000..e41adee7 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageTiltShiftFilter.h @@ -0,0 +1,24 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageToneCurveFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageToneCurveFilter.h new file mode 100755 index 00000000..ff4ae92e --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageToneCurveFilter.h @@ -0,0 +1,30 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageToonFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageToonFilter.h new file mode 100755 index 00000000..ef8e17c3 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageToonFilter.h @@ -0,0 +1,19 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageTransformFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageTransformFilter.h new file mode 100755 index 00000000..9865b853 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageTransformFilter.h @@ -0,0 +1,19 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageTwoInputCrossTextureSamplingFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageTwoInputCrossTextureSamplingFilter.h new file mode 100755 index 00000000..64eac9dc --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageTwoInputCrossTextureSamplingFilter.h @@ -0,0 +1,15 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageTwoInputFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageTwoInputFilter.h new file mode 100755 index 00000000..da3a1345 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageTwoInputFilter.h @@ -0,0 +1,21 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageTwoPassFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageTwoPassFilter.h new file mode 100755 index 00000000..23087f35 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageTwoPassFilter.h @@ -0,0 +1,19 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageTwoPassTextureSamplingFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageTwoPassTextureSamplingFilter.h new file mode 100755 index 00000000..73ab79d3 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageTwoPassTextureSamplingFilter.h @@ -0,0 +1,13 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageUIElement.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageUIElement.h new file mode 100755 index 00000000..984ff2ad --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageUIElement.h @@ -0,0 +1,15 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageUnsharpMaskFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageUnsharpMaskFilter.h new file mode 100755 index 00000000..9d8aff01 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageUnsharpMaskFilter.h @@ -0,0 +1,16 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageVibranceFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageVibranceFilter.h new file mode 100755 index 00000000..9daddd79 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageVibranceFilter.h @@ -0,0 +1,20 @@ +// +// GPUImageVibranceFilter.h +// +// +// Created by github.com/r3mus on 8/14/15. +// +// + +#import "GPUImageFilter.h" + +@interface GPUImageVibranceFilter : GPUImageFilter +{ + GLint vibranceUniform; +} + +// Modifies the saturation of desaturated colors, leaving saturated colors unmodified. +// Value -1 to 1 (-1 is minimum vibrance, 0 is no change, and 1 is maximum vibrance) +@property (readwrite, nonatomic) GLfloat vibrance; + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageVideoCamera.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageVideoCamera.h new file mode 100755 index 00000000..458020cf --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageVideoCamera.h @@ -0,0 +1,156 @@ +#import +#import +#import +#import "GPUImageContext.h" +#import "GPUImageOutput.h" +#import "GPUImageColorConversion.h" + +//Optionally override the YUV to RGB matrices +void setColorConversion601( GLfloat conversionMatrix[9] ); +void setColorConversion601FullRange( GLfloat conversionMatrix[9] ); +void setColorConversion709( GLfloat conversionMatrix[9] ); + + +//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; +} + +/// Whether or not the underlying AVCaptureSession is running +@property(readonly, nonatomic) BOOL isRunning; + +/// 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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageView.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageView.h new file mode 100755 index 00000000..b42651d3 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageView.h @@ -0,0 +1,41 @@ +#import +#import "GPUImageContext.h" + +typedef NS_ENUM(NSUInteger, GPUImageFillModeType) { + 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 +}; + + + +/** + 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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageVignetteFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageVignetteFilter.h new file mode 100755 index 00000000..37be9449 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageVignetteFilter.h @@ -0,0 +1,22 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageVoronoiConsumerFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageVoronoiConsumerFilter.h new file mode 100755 index 00000000..659e39d5 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageVoronoiConsumerFilter.h @@ -0,0 +1,10 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageVoronoiConsumerFilter : GPUImageTwoInputFilter +{ + GLint sizeUniform; +} + +@property (nonatomic, readwrite) CGSize sizeInPixels; + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageWeakPixelInclusionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageWeakPixelInclusionFilter.h new file mode 100755 index 00000000..44b76c6a --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageWeakPixelInclusionFilter.h @@ -0,0 +1,5 @@ +#import "GPUImage3x3TextureSamplingFilter.h" + +@interface GPUImageWeakPixelInclusionFilter : GPUImage3x3TextureSamplingFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageWhiteBalanceFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageWhiteBalanceFilter.h new file mode 100755 index 00000000..6b09c33d --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageWhiteBalanceFilter.h @@ -0,0 +1,17 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageXYDerivativeFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageXYDerivativeFilter.h new file mode 100755 index 00000000..8db57457 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageXYDerivativeFilter.h @@ -0,0 +1,5 @@ +#import "GPUImageSobelEdgeDetectionFilter.h" + +@interface GPUImageXYDerivativeFilter : GPUImageSobelEdgeDetectionFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageZoomBlurFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageZoomBlurFilter.h new file mode 100755 index 00000000..744a72cb --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageZoomBlurFilter.h @@ -0,0 +1,13 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageiOSBlurFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageiOSBlurFilter.h new file mode 100755 index 00000000..261d0d7c --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/A/Headers/GPUImageiOSBlurFilter.h @@ -0,0 +1,31 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/GPUImage b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/GPUImage new file mode 100755 index 00000000..0013cc9f Binary files /dev/null and b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/GPUImage differ diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GLProgram.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GLProgram.h new file mode 100755 index 00000000..cd455e71 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GLProgram.h @@ -0,0 +1,42 @@ +// 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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImage.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImage.h new file mode 100755 index 00000000..3e91c29c --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImage.h @@ -0,0 +1,170 @@ +#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 "GPUImageSolarizeFilter.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 "GPUImageColorLocalBinaryPatternFilter.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 "GPUImageFourInputFilter.h" +#import "GPUImageWeakPixelInclusionFilter.h" +#import "GPUImageColorConversion.h" +#import "GPUImageColourFASTFeatureDetector.h" +#import "GPUImageColourFASTSamplingOperation.h" + diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImage3x3ConvolutionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImage3x3ConvolutionFilter.h new file mode 100755 index 00000000..67e68def --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImage3x3ConvolutionFilter.h @@ -0,0 +1,18 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImage3x3TextureSamplingFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImage3x3TextureSamplingFilter.h new file mode 100755 index 00000000..5599e156 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImage3x3TextureSamplingFilter.h @@ -0,0 +1,18 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageAdaptiveThresholdFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageAdaptiveThresholdFilter.h new file mode 100755 index 00000000..32785560 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageAdaptiveThresholdFilter.h @@ -0,0 +1,9 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageAddBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageAddBlendFilter.h new file mode 100755 index 00000000..b14c60c6 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageAddBlendFilter.h @@ -0,0 +1,5 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageAddBlendFilter : GPUImageTwoInputFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageAlphaBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageAlphaBlendFilter.h new file mode 100755 index 00000000..c4d75759 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageAlphaBlendFilter.h @@ -0,0 +1,11 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageAmatorkaFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageAmatorkaFilter.h new file mode 100755 index 00000000..1dbe096d --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageAmatorkaFilter.h @@ -0,0 +1,17 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageAverageColor.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageAverageColor.h new file mode 100755 index 00000000..e3d957d0 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageAverageColor.h @@ -0,0 +1,20 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageAverageLuminanceThresholdFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageAverageLuminanceThresholdFilter.h new file mode 100755 index 00000000..7f1ae464 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageAverageLuminanceThresholdFilter.h @@ -0,0 +1,8 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageBilateralFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageBilateralFilter.h new file mode 100755 index 00000000..6b736ccf --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageBilateralFilter.h @@ -0,0 +1,10 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageBoxBlurFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageBoxBlurFilter.h new file mode 100755 index 00000000..3fd880bf --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageBoxBlurFilter.h @@ -0,0 +1,7 @@ +#import "GPUImageGaussianBlurFilter.h" + +/** A hardware-accelerated box blur of an image + */ +@interface GPUImageBoxBlurFilter : GPUImageGaussianBlurFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageBrightnessFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageBrightnessFilter.h new file mode 100755 index 00000000..046473b9 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageBrightnessFilter.h @@ -0,0 +1,11 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageBuffer.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageBuffer.h new file mode 100755 index 00000000..caf09c8d --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageBuffer.h @@ -0,0 +1,10 @@ +#import "GPUImageFilter.h" + +@interface GPUImageBuffer : GPUImageFilter +{ + NSMutableArray *bufferedFramebuffers; +} + +@property(readwrite, nonatomic) NSUInteger bufferSize; + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageBulgeDistortionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageBulgeDistortionFilter.h new file mode 100755 index 00000000..d416e536 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageBulgeDistortionFilter.h @@ -0,0 +1,16 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageCGAColorspaceFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageCGAColorspaceFilter.h new file mode 100755 index 00000000..4f97804b --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageCGAColorspaceFilter.h @@ -0,0 +1,5 @@ +#import "GPUImageFilter.h" + +@interface GPUImageCGAColorspaceFilter : GPUImageFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageCannyEdgeDetectionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageCannyEdgeDetectionFilter.h new file mode 100755 index 00000000..53c58502 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageCannyEdgeDetectionFilter.h @@ -0,0 +1,62 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageChromaKeyBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageChromaKeyBlendFilter.h new file mode 100755 index 00000000..00a5aed7 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageChromaKeyBlendFilter.h @@ -0,0 +1,32 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageChromaKeyFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageChromaKeyFilter.h new file mode 100755 index 00000000..5ee7e498 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageChromaKeyFilter.h @@ -0,0 +1,30 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageClosingFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageClosingFilter.h new file mode 100755 index 00000000..61e34c41 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageClosingFilter.h @@ -0,0 +1,19 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageColorBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageColorBlendFilter.h new file mode 100755 index 00000000..302a16c6 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageColorBlendFilter.h @@ -0,0 +1,5 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageColorBlendFilter : GPUImageTwoInputFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageColorBurnBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageColorBurnBlendFilter.h new file mode 100755 index 00000000..50ebb3f4 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageColorBurnBlendFilter.h @@ -0,0 +1,9 @@ +#import "GPUImageTwoInputFilter.h" + +/** Applies a color burn blend of two images + */ +@interface GPUImageColorBurnBlendFilter : GPUImageTwoInputFilter +{ +} + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageColorConversion.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageColorConversion.h new file mode 100755 index 00000000..02f82bf8 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageColorConversion.h @@ -0,0 +1,12 @@ +#ifndef GPUImageColorConversion_h +#define GPUImageColorConversion_h + +extern GLfloat *kColorConversion601; +extern GLfloat *kColorConversion601FullRange; +extern GLfloat *kColorConversion709; +extern NSString *const kGPUImageYUVVideoRangeConversionForRGFragmentShaderString; +extern NSString *const kGPUImageYUVFullRangeConversionForLAFragmentShaderString; +extern NSString *const kGPUImageYUVVideoRangeConversionForLAFragmentShaderString; + + +#endif /* GPUImageColorConversion_h */ diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageColorDodgeBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageColorDodgeBlendFilter.h new file mode 100755 index 00000000..0f541c42 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageColorDodgeBlendFilter.h @@ -0,0 +1,9 @@ +#import "GPUImageTwoInputFilter.h" + +/** Applies a color dodge blend of two images + */ +@interface GPUImageColorDodgeBlendFilter : GPUImageTwoInputFilter +{ +} + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageColorInvertFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageColorInvertFilter.h new file mode 100755 index 00000000..aaeec438 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageColorInvertFilter.h @@ -0,0 +1,7 @@ +#import "GPUImageFilter.h" + +@interface GPUImageColorInvertFilter : GPUImageFilter +{ +} + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageColorLocalBinaryPatternFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageColorLocalBinaryPatternFilter.h new file mode 100755 index 00000000..8b57cd7c --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageColorLocalBinaryPatternFilter.h @@ -0,0 +1,5 @@ +#import "GPUImage3x3TextureSamplingFilter.h" + +@interface GPUImageColorLocalBinaryPatternFilter : GPUImage3x3TextureSamplingFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageColorMatrixFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageColorMatrixFilter.h new file mode 100755 index 00000000..75887276 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageColorMatrixFilter.h @@ -0,0 +1,19 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageColorPackingFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageColorPackingFilter.h new file mode 100755 index 00000000..c2edca51 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageColorPackingFilter.h @@ -0,0 +1,10 @@ +#import "GPUImageFilter.h" + +@interface GPUImageColorPackingFilter : GPUImageFilter +{ + GLint texelWidthUniform, texelHeightUniform; + + CGFloat texelWidth, texelHeight; +} + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageColourFASTFeatureDetector.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageColourFASTFeatureDetector.h new file mode 100755 index 00000000..3d51ed17 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageColourFASTFeatureDetector.h @@ -0,0 +1,21 @@ +#import "GPUImageFilterGroup.h" + +// This generates image-wide feature descriptors using the ColourFAST process, as developed and described in +// +// A. Ensor and S. Hall. ColourFAST: GPU-based feature point detection and tracking on mobile devices. 28th International Conference of Image and Vision Computing, New Zealand, 2013, p. 124-129. +// +// Seth Hall, "GPU accelerated feature algorithms for mobile devices", PhD thesis, School of Computing and Mathematical Sciences, Auckland University of Technology 2014. +// http://aut.researchgateway.ac.nz/handle/10292/7991 + +@class GPUImageColourFASTSamplingOperation; +@class GPUImageBoxBlurFilter; + +@interface GPUImageColourFASTFeatureDetector : GPUImageFilterGroup +{ + GPUImageBoxBlurFilter *blurFilter; + GPUImageColourFASTSamplingOperation *colourFASTSamplingOperation; +} +// The blur radius of the underlying box blur. The default is 3.0. +@property (readwrite, nonatomic) CGFloat blurRadiusInPixels; + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageColourFASTSamplingOperation.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageColourFASTSamplingOperation.h new file mode 100755 index 00000000..78e6ede9 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageColourFASTSamplingOperation.h @@ -0,0 +1,22 @@ +#import "GPUImageTwoInputFilter.h" + +// This is the feature extraction phase of the ColourFAST feature detector, as described in: +// +// A. Ensor and S. Hall. ColourFAST: GPU-based feature point detection and tracking on mobile devices. 28th International Conference of Image and Vision Computing, New Zealand, 2013, p. 124-129. +// +// Seth Hall, "GPU accelerated feature algorithms for mobile devices", PhD thesis, School of Computing and Mathematical Sciences, Auckland University of Technology 2014. +// http://aut.researchgateway.ac.nz/handle/10292/7991 + +@interface GPUImageColourFASTSamplingOperation : 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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageContext.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageContext.h new file mode 100755 index 00000000..71142b88 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageContext.h @@ -0,0 +1,64 @@ +#import "GLProgram.h" +#import "GPUImageFramebuffer.h" +#import "GPUImageFramebufferCache.h" + +#define GPUImageRotationSwapsWidthAndHeight(rotation) ((rotation) == kGPUImageRotateLeft || (rotation) == kGPUImageRotateRight || (rotation) == kGPUImageRotateRightFlipVertical || (rotation) == kGPUImageRotateRightFlipHorizontal) + +typedef NS_ENUM(NSUInteger, GPUImageRotationMode) { + kGPUImageNoRotation, + kGPUImageRotateLeft, + kGPUImageRotateRight, + kGPUImageFlipVertical, + kGPUImageFlipHorizonal, + kGPUImageRotateRightFlipVertical, + kGPUImageRotateRightFlipHorizontal, + kGPUImageRotate180 +}; + +@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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageContrastFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageContrastFilter.h new file mode 100755 index 00000000..e09e6dc4 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageContrastFilter.h @@ -0,0 +1,14 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageCropFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageCropFilter.h new file mode 100755 index 00000000..641fb7bf --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageCropFilter.h @@ -0,0 +1,14 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageCrosshairGenerator.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageCrosshairGenerator.h new file mode 100755 index 00000000..569774f5 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageCrosshairGenerator.h @@ -0,0 +1,17 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageCrosshatchFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageCrosshatchFilter.h new file mode 100755 index 00000000..dab18967 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageCrosshatchFilter.h @@ -0,0 +1,13 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageDarkenBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageDarkenBlendFilter.h new file mode 100755 index 00000000..5dfe3405 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageDarkenBlendFilter.h @@ -0,0 +1,7 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageDarkenBlendFilter : GPUImageTwoInputFilter +{ +} + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageDifferenceBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageDifferenceBlendFilter.h new file mode 100755 index 00000000..7c7dfc23 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageDifferenceBlendFilter.h @@ -0,0 +1,7 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageDifferenceBlendFilter : GPUImageTwoInputFilter +{ +} + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageDilationFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageDilationFilter.h new file mode 100755 index 00000000..59423a37 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageDilationFilter.h @@ -0,0 +1,16 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageDirectionalNonMaximumSuppressionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageDirectionalNonMaximumSuppressionFilter.h new file mode 100755 index 00000000..fdffb9fb --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageDirectionalNonMaximumSuppressionFilter.h @@ -0,0 +1,19 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageDirectionalSobelEdgeDetectionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageDirectionalSobelEdgeDetectionFilter.h new file mode 100755 index 00000000..cfccc897 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageDirectionalSobelEdgeDetectionFilter.h @@ -0,0 +1,5 @@ +#import "GPUImage3x3TextureSamplingFilter.h" + +@interface GPUImageDirectionalSobelEdgeDetectionFilter : GPUImage3x3TextureSamplingFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageDissolveBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageDissolveBlendFilter.h new file mode 100755 index 00000000..b4e5720a --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageDissolveBlendFilter.h @@ -0,0 +1,11 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageDivideBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageDivideBlendFilter.h new file mode 100755 index 00000000..ad798e29 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageDivideBlendFilter.h @@ -0,0 +1,5 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageDivideBlendFilter : GPUImageTwoInputFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageEmbossFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageEmbossFilter.h new file mode 100755 index 00000000..dbd21e82 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageEmbossFilter.h @@ -0,0 +1,8 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageErosionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageErosionFilter.h new file mode 100755 index 00000000..b311a265 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageErosionFilter.h @@ -0,0 +1,11 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageExclusionBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageExclusionBlendFilter.h new file mode 100755 index 00000000..f7c83f57 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageExclusionBlendFilter.h @@ -0,0 +1,7 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageExclusionBlendFilter : GPUImageTwoInputFilter +{ +} + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageExposureFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageExposureFilter.h new file mode 100755 index 00000000..886a052f --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageExposureFilter.h @@ -0,0 +1,11 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageFASTCornerDetectionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageFASTCornerDetectionFilter.h new file mode 100755 index 00000000..86e7cf42 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageFASTCornerDetectionFilter.h @@ -0,0 +1,33 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageFalseColorFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageFalseColorFilter.h new file mode 100755 index 00000000..cb0b82f7 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageFalseColorFilter.h @@ -0,0 +1,15 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageFilter.h new file mode 100755 index 00000000..0171aa80 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageFilter.h @@ -0,0 +1,134 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageFilterGroup.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageFilterGroup.h new file mode 100755 index 00000000..6817cdf0 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageFilterGroup.h @@ -0,0 +1,19 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageFilterPipeline.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageFilterPipeline.h new file mode 100755 index 00000000..dc2baeac --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageFilterPipeline.h @@ -0,0 +1,30 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageFourInputFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageFourInputFilter.h new file mode 100755 index 00000000..3beab2df --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageFourInputFilter.h @@ -0,0 +1,21 @@ +#import "GPUImageThreeInputFilter.h" + +extern NSString *const kGPUImageFourInputTextureVertexShaderString; + +@interface GPUImageFourInputFilter : GPUImageThreeInputFilter +{ + GPUImageFramebuffer *fourthInputFramebuffer; + + GLint filterFourthTextureCoordinateAttribute; + GLint filterInputTextureUniform4; + GPUImageRotationMode inputRotation4; + GLuint filterSourceTexture4; + CMTime fourthFrameTime; + + BOOL hasSetThirdTexture, hasReceivedFourthFrame, fourthFrameWasVideo; + BOOL fourthFrameCheckDisabled; +} + +- (void)disableFourthFrameCheck; + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageFramebuffer.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageFramebuffer.h new file mode 100755 index 00000000..bdb6a1f1 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageFramebuffer.h @@ -0,0 +1,59 @@ +#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; +- (CVPixelBufferRef)pixelBuffer; + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageFramebufferCache.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageFramebufferCache.h new file mode 100755 index 00000000..e56a3456 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageFramebufferCache.h @@ -0,0 +1,15 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageGammaFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageGammaFilter.h new file mode 100755 index 00000000..0521d089 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageGammaFilter.h @@ -0,0 +1,11 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageGaussianBlurFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageGaussianBlurFilter.h new file mode 100755 index 00000000..1fb7a137 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageGaussianBlurFilter.h @@ -0,0 +1,36 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageGaussianBlurPositionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageGaussianBlurPositionFilter.h new file mode 100755 index 00000000..dc88a563 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageGaussianBlurPositionFilter.h @@ -0,0 +1,22 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageGaussianSelectiveBlurFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageGaussianSelectiveBlurFilter.h new file mode 100755 index 00000000..02324566 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageGaussianSelectiveBlurFilter.h @@ -0,0 +1,30 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageGlassSphereFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageGlassSphereFilter.h new file mode 100755 index 00000000..809a4ee8 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageGlassSphereFilter.h @@ -0,0 +1,5 @@ +#import "GPUImageSphereRefractionFilter.h" + +@interface GPUImageGlassSphereFilter : GPUImageSphereRefractionFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageGrayscaleFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageGrayscaleFilter.h new file mode 100755 index 00000000..2d97f8c3 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageGrayscaleFilter.h @@ -0,0 +1,9 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageHSBFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageHSBFilter.h new file mode 100755 index 00000000..65a9e1de --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageHSBFilter.h @@ -0,0 +1,27 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageHalftoneFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageHalftoneFilter.h new file mode 100755 index 00000000..1860bc97 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageHalftoneFilter.h @@ -0,0 +1,5 @@ +#import "GPUImagePixellateFilter.h" + +@interface GPUImageHalftoneFilter : GPUImagePixellateFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageHardLightBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageHardLightBlendFilter.h new file mode 100755 index 00000000..47d62609 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageHardLightBlendFilter.h @@ -0,0 +1,7 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageHardLightBlendFilter : GPUImageTwoInputFilter +{ +} + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageHarrisCornerDetectionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageHarrisCornerDetectionFilter.h new file mode 100755 index 00000000..1492b8b8 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageHarrisCornerDetectionFilter.h @@ -0,0 +1,53 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageHazeFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageHazeFilter.h new file mode 100755 index 00000000..eb3fbca6 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageHazeFilter.h @@ -0,0 +1,29 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageHighPassFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageHighPassFilter.h new file mode 100755 index 00000000..263d8df1 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageHighPassFilter.h @@ -0,0 +1,14 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageHighlightShadowFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageHighlightShadowFilter.h new file mode 100755 index 00000000..35791298 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageHighlightShadowFilter.h @@ -0,0 +1,20 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageHighlightShadowTintFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageHighlightShadowTintFilter.h new file mode 100755 index 00000000..166c5c8c --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageHighlightShadowTintFilter.h @@ -0,0 +1,25 @@ +// +// GPUImageHighlightShadowTintFilter.h +// +// +// Created by github.com/r3mus on 8/14/15. +// +// + +#import "GPUImageFilter.h" + +@interface GPUImageHighlightShadowTintFilter : GPUImageFilter +{ + GLint shadowTintIntensityUniform, highlightTintIntensityUniform, shadowTintColorUniform, highlightTintColorUniform; +} + +// The shadowTint and highlightTint colors specify what colors replace the dark and light areas of the image, respectively. The defaults for shadows are black, highlighs white. +@property(readwrite, nonatomic) GLfloat shadowTintIntensity; +@property(readwrite, nonatomic) GPUVector4 shadowTintColor; +@property(readwrite, nonatomic) GLfloat highlightTintIntensity; +@property(readwrite, nonatomic) GPUVector4 highlightTintColor; + +- (void)setShadowTintColorRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent alpha:(GLfloat)alphaComponent; +- (void)setHighlightTintColorRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent alpha:(GLfloat)alphaComponent; + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageHistogramEqualizationFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageHistogramEqualizationFilter.h new file mode 100755 index 00000000..2b71cda0 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageHistogramEqualizationFilter.h @@ -0,0 +1,26 @@ +// +// 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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageHistogramFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageHistogramFilter.h new file mode 100755 index 00000000..32004bf7 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageHistogramFilter.h @@ -0,0 +1,22 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageHistogramGenerator.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageHistogramGenerator.h new file mode 100755 index 00000000..f80c50f3 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageHistogramGenerator.h @@ -0,0 +1,8 @@ +#import "GPUImageFilter.h" + +@interface GPUImageHistogramGenerator : GPUImageFilter +{ + GLint backgroundColorUniform; +} + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageHoughTransformLineDetector.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageHoughTransformLineDetector.h new file mode 100755 index 00000000..3ab6977f --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageHoughTransformLineDetector.h @@ -0,0 +1,49 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageHueBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageHueBlendFilter.h new file mode 100755 index 00000000..4399ffcf --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageHueBlendFilter.h @@ -0,0 +1,5 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageHueBlendFilter : GPUImageTwoInputFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageHueFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageHueFilter.h new file mode 100755 index 00000000..eef24651 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageHueFilter.h @@ -0,0 +1,11 @@ + +#import "GPUImageFilter.h" + +@interface GPUImageHueFilter : GPUImageFilter +{ + GLint hueAdjustUniform; + +} +@property (nonatomic, readwrite) CGFloat hue; + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageJFAVoronoiFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageJFAVoronoiFilter.h new file mode 100755 index 00000000..4c50cc37 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageJFAVoronoiFilter.h @@ -0,0 +1,17 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageKuwaharaFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageKuwaharaFilter.h new file mode 100755 index 00000000..4fb0bce8 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageKuwaharaFilter.h @@ -0,0 +1,13 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageKuwaharaRadius3Filter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageKuwaharaRadius3Filter.h new file mode 100755 index 00000000..c4591b81 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageKuwaharaRadius3Filter.h @@ -0,0 +1,8 @@ +// +// GPUImageKuwaharaRadius3Filter.h + +#import "GPUImageFilter.h" + +@interface GPUImageKuwaharaRadius3Filter : GPUImageFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageLanczosResamplingFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageLanczosResamplingFilter.h new file mode 100755 index 00000000..5d7409f5 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageLanczosResamplingFilter.h @@ -0,0 +1,7 @@ +#import "GPUImageTwoPassTextureSamplingFilter.h" + +@interface GPUImageLanczosResamplingFilter : GPUImageTwoPassTextureSamplingFilter + +@property(readwrite, nonatomic) CGSize originalImageSize; + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageLaplacianFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageLaplacianFilter.h new file mode 100755 index 00000000..267c1bab --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageLaplacianFilter.h @@ -0,0 +1,5 @@ +#import "GPUImage3x3ConvolutionFilter.h" + +@interface GPUImageLaplacianFilter : GPUImage3x3ConvolutionFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageLevelsFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageLevelsFilter.h new file mode 100755 index 00000000..d0948fbf --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageLevelsFilter.h @@ -0,0 +1,45 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageLightenBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageLightenBlendFilter.h new file mode 100755 index 00000000..b0287c13 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageLightenBlendFilter.h @@ -0,0 +1,8 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageLineGenerator.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageLineGenerator.h new file mode 100755 index 00000000..4c467366 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageLineGenerator.h @@ -0,0 +1,18 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageLinearBurnBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageLinearBurnBlendFilter.h new file mode 100755 index 00000000..7e5e415c --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageLinearBurnBlendFilter.h @@ -0,0 +1,5 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageLinearBurnBlendFilter : GPUImageTwoInputFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageLocalBinaryPatternFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageLocalBinaryPatternFilter.h new file mode 100755 index 00000000..431dbbd4 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageLocalBinaryPatternFilter.h @@ -0,0 +1,5 @@ +#import "GPUImage3x3TextureSamplingFilter.h" + +@interface GPUImageLocalBinaryPatternFilter : GPUImage3x3TextureSamplingFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageLookupFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageLookupFilter.h new file mode 100755 index 00000000..23ebde2b --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageLookupFilter.h @@ -0,0 +1,34 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageLowPassFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageLowPassFilter.h new file mode 100755 index 00000000..be5c397e --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageLowPassFilter.h @@ -0,0 +1,14 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageLuminanceRangeFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageLuminanceRangeFilter.h new file mode 100755 index 00000000..5a310370 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageLuminanceRangeFilter.h @@ -0,0 +1,12 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageLuminanceThresholdFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageLuminanceThresholdFilter.h new file mode 100755 index 00000000..0abb9a1e --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageLuminanceThresholdFilter.h @@ -0,0 +1,14 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageLuminosity.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageLuminosity.h new file mode 100755 index 00000000..b2d2458f --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageLuminosity.h @@ -0,0 +1,17 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageLuminosityBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageLuminosityBlendFilter.h new file mode 100755 index 00000000..03b5e4c9 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageLuminosityBlendFilter.h @@ -0,0 +1,5 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageLuminosityBlendFilter : GPUImageTwoInputFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageMaskFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageMaskFilter.h new file mode 100755 index 00000000..94cf0648 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageMaskFilter.h @@ -0,0 +1,5 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageMaskFilter : GPUImageTwoInputFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageMedianFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageMedianFilter.h new file mode 100755 index 00000000..80225789 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageMedianFilter.h @@ -0,0 +1,5 @@ +#import "GPUImage3x3TextureSamplingFilter.h" + +@interface GPUImageMedianFilter : GPUImage3x3TextureSamplingFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageMissEtikateFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageMissEtikateFilter.h new file mode 100755 index 00000000..de170647 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageMissEtikateFilter.h @@ -0,0 +1,17 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageMonochromeFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageMonochromeFilter.h new file mode 100755 index 00000000..66a0e773 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageMonochromeFilter.h @@ -0,0 +1,13 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageMosaicFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageMosaicFilter.h new file mode 100755 index 00000000..5f72d3c9 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageMosaicFilter.h @@ -0,0 +1,22 @@ + +// 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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageMotionBlurFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageMotionBlurFilter.h new file mode 100755 index 00000000..dcca712f --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageMotionBlurFilter.h @@ -0,0 +1,13 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageMotionDetector.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageMotionDetector.h new file mode 100755 index 00000000..01329145 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageMotionDetector.h @@ -0,0 +1,18 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageMovie.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageMovie.h new file mode 100755 index 00000000..f61e56ef --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageMovie.h @@ -0,0 +1,61 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageMovieComposition.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageMovieComposition.h new file mode 100755 index 00000000..00e43814 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageMovieComposition.h @@ -0,0 +1,21 @@ +// +// 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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageMovieWriter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageMovieWriter.h new file mode 100755 index 00000000..f0b2c6ad --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageMovieWriter.h @@ -0,0 +1,67 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageMultiplyBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageMultiplyBlendFilter.h new file mode 100755 index 00000000..5ebc28bb --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageMultiplyBlendFilter.h @@ -0,0 +1,7 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageMultiplyBlendFilter : GPUImageTwoInputFilter +{ +} + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageNobleCornerDetectionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageNobleCornerDetectionFilter.h new file mode 100755 index 00000000..963fd66a --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageNobleCornerDetectionFilter.h @@ -0,0 +1,12 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageNonMaximumSuppressionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageNonMaximumSuppressionFilter.h new file mode 100755 index 00000000..fd8fe6d6 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageNonMaximumSuppressionFilter.h @@ -0,0 +1,5 @@ +#import "GPUImage3x3TextureSamplingFilter.h" + +@interface GPUImageNonMaximumSuppressionFilter : GPUImage3x3TextureSamplingFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageNormalBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageNormalBlendFilter.h new file mode 100755 index 00000000..ce5e22b4 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageNormalBlendFilter.h @@ -0,0 +1,8 @@ +// Created by Jorge Garcia on 9/5/12. +// + +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageNormalBlendFilter : GPUImageTwoInputFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageOpacityFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageOpacityFilter.h new file mode 100755 index 00000000..826749fb --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageOpacityFilter.h @@ -0,0 +1,11 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageOpeningFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageOpeningFilter.h new file mode 100755 index 00000000..3e4f7545 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageOpeningFilter.h @@ -0,0 +1,19 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageOutput.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageOutput.h new file mode 100755 index 00000000..c10121a9 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageOutput.h @@ -0,0 +1,128 @@ +#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 + +dispatch_queue_attr_t GPUImageDefaultQueueAttribute(void); +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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageOverlayBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageOverlayBlendFilter.h new file mode 100755 index 00000000..57eb8402 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageOverlayBlendFilter.h @@ -0,0 +1,5 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageOverlayBlendFilter : GPUImageTwoInputFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageParallelCoordinateLineTransformFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageParallelCoordinateLineTransformFilter.h new file mode 100755 index 00000000..aa8f3f47 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageParallelCoordinateLineTransformFilter.h @@ -0,0 +1,16 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImagePerlinNoiseFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImagePerlinNoiseFilter.h new file mode 100755 index 00000000..922f4d30 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImagePerlinNoiseFilter.h @@ -0,0 +1,13 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImagePicture+TextureSubimage.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImagePicture+TextureSubimage.h new file mode 100755 index 00000000..03c631bc --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImagePicture+TextureSubimage.h @@ -0,0 +1,19 @@ +// +// 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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImagePicture.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImagePicture.h new file mode 100755 index 00000000..4c4b9942 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImagePicture.h @@ -0,0 +1,38 @@ +#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; +- (id)initWithImage:(UIImage *)newImageSource removePremultiplication:(BOOL)removePremultiplication; +- (id)initWithCGImage:(CGImageRef)newImageSource removePremultiplication:(BOOL)removePremultiplication; +- (id)initWithImage:(UIImage *)newImageSource smoothlyScaleOutput:(BOOL)smoothlyScaleOutput removePremultiplication:(BOOL)removePremultiplication; +- (id)initWithCGImage:(CGImageRef)newImageSource smoothlyScaleOutput:(BOOL)smoothlyScaleOutput removePremultiplication:(BOOL)removePremultiplication; + +// 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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImagePinchDistortionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImagePinchDistortionFilter.h new file mode 100755 index 00000000..994774fd --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImagePinchDistortionFilter.h @@ -0,0 +1,20 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImagePixellateFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImagePixellateFilter.h new file mode 100755 index 00000000..d0f6ae04 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImagePixellateFilter.h @@ -0,0 +1,12 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImagePixellatePositionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImagePixellatePositionFilter.h new file mode 100755 index 00000000..9d304c93 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImagePixellatePositionFilter.h @@ -0,0 +1,17 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImagePoissonBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImagePoissonBlendFilter.h new file mode 100755 index 00000000..58eff225 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImagePoissonBlendFilter.h @@ -0,0 +1,18 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImagePolarPixellateFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImagePolarPixellateFilter.h new file mode 100755 index 00000000..3de6a4d3 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImagePolarPixellateFilter.h @@ -0,0 +1,13 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImagePolkaDotFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImagePolkaDotFilter.h new file mode 100755 index 00000000..369b7737 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImagePolkaDotFilter.h @@ -0,0 +1,10 @@ +#import "GPUImagePixellateFilter.h" + +@interface GPUImagePolkaDotFilter : GPUImagePixellateFilter +{ + GLint dotScalingUniform; +} + +@property(readwrite, nonatomic) CGFloat dotScaling; + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImagePosterizeFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImagePosterizeFilter.h new file mode 100755 index 00000000..6f655b3e --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImagePosterizeFilter.h @@ -0,0 +1,14 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImagePrewittEdgeDetectionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImagePrewittEdgeDetectionFilter.h new file mode 100755 index 00000000..141f8c5f --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImagePrewittEdgeDetectionFilter.h @@ -0,0 +1,5 @@ +#import "GPUImageSobelEdgeDetectionFilter.h" + +@interface GPUImagePrewittEdgeDetectionFilter : GPUImageSobelEdgeDetectionFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageRGBClosingFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageRGBClosingFilter.h new file mode 100755 index 00000000..08d13f88 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageRGBClosingFilter.h @@ -0,0 +1,18 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageRGBDilationFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageRGBDilationFilter.h new file mode 100755 index 00000000..68276f84 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageRGBDilationFilter.h @@ -0,0 +1,11 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageRGBErosionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageRGBErosionFilter.h new file mode 100755 index 00000000..5979cb7e --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageRGBErosionFilter.h @@ -0,0 +1,11 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageRGBFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageRGBFilter.h new file mode 100755 index 00000000..18966b1b --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageRGBFilter.h @@ -0,0 +1,15 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageRGBOpeningFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageRGBOpeningFilter.h new file mode 100755 index 00000000..dbec75fb --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageRGBOpeningFilter.h @@ -0,0 +1,17 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageRawDataInput.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageRawDataInput.h new file mode 100755 index 00000000..6ec4720f --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageRawDataInput.h @@ -0,0 +1,43 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageRawDataOutput.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageRawDataOutput.h new file mode 100755 index 00000000..5a4538c1 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageRawDataOutput.h @@ -0,0 +1,44 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageSaturationBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageSaturationBlendFilter.h new file mode 100755 index 00000000..767892a5 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageSaturationBlendFilter.h @@ -0,0 +1,5 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageSaturationBlendFilter : GPUImageTwoInputFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageSaturationFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageSaturationFilter.h new file mode 100755 index 00000000..1c6ff5bd --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageSaturationFilter.h @@ -0,0 +1,14 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageScreenBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageScreenBlendFilter.h new file mode 100755 index 00000000..2df3abf3 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageScreenBlendFilter.h @@ -0,0 +1,7 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageScreenBlendFilter : GPUImageTwoInputFilter +{ +} + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageSepiaFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageSepiaFilter.h new file mode 100755 index 00000000..a45164fe --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageSepiaFilter.h @@ -0,0 +1,6 @@ +#import "GPUImageColorMatrixFilter.h" + +/// Simple sepia tone filter +@interface GPUImageSepiaFilter : GPUImageColorMatrixFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageSharpenFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageSharpenFilter.h new file mode 100755 index 00000000..739df503 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageSharpenFilter.h @@ -0,0 +1,12 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageShiTomasiFeatureDetectionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageShiTomasiFeatureDetectionFilter.h new file mode 100755 index 00000000..b16ebc01 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageShiTomasiFeatureDetectionFilter.h @@ -0,0 +1,13 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageSingleComponentGaussianBlurFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageSingleComponentGaussianBlurFilter.h new file mode 100755 index 00000000..934b1e3a --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageSingleComponentGaussianBlurFilter.h @@ -0,0 +1,7 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageSketchFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageSketchFilter.h new file mode 100755 index 00000000..598145ae --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageSketchFilter.h @@ -0,0 +1,11 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageSkinToneFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageSkinToneFilter.h new file mode 100755 index 00000000..0dd6f866 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageSkinToneFilter.h @@ -0,0 +1,47 @@ +// +// GPUImageSkinToneFilter.h +// +// +// Created by github.com/r3mus on 8/14/15. +// +// + +#import "GPUImageTwoInputFilter.h" + +typedef NS_ENUM(NSUInteger, GPUImageSkinToneUpperColor) { + GPUImageSkinToneUpperColorGreen, + GPUImageSkinToneUpperColorOrange +}; + +extern NSString *const kGPUImageSkinToneFragmentShaderString; + +@interface GPUImageSkinToneFilter : GPUImageFilter +{ + GLint skinToneAdjustUniform; + GLint skinHueUniform; + GLint skinHueThresholdUniform; + GLint maxHueShiftUniform; + GLint maxSaturationShiftUniform; + GLint upperSkinToneColorUniform; +} + +// The amount of effect to apply, between -1.0 (pink) and +1.0 (orange OR green). Default is 0.0. +@property (nonatomic, readwrite) CGFloat skinToneAdjust; + +// The initial hue of skin to adjust. Default is 0.05 (a common skin red). +@property (nonatomic, readwrite) CGFloat skinHue; + +// The bell curve "breadth" of the skin hue adjustment (i.e. how different from the original skinHue will the modifications effect). +// Default is 40.0 +@property (nonatomic, readwrite) CGFloat skinHueThreshold; + +// The maximum amount of hue shift allowed in the adjustments that affect hue (pink, green). Default = 0.25. +@property (nonatomic, readwrite) CGFloat maxHueShift; + +// The maximum amount of saturation shift allowed in the adjustments that affect saturation (orange). Default = 0.4. +@property (nonatomic, readwrite) CGFloat maxSaturationShift; + +// Defines whether the upper range (> 0.0) will change the skin tone to green (hue) or orange (saturation) +@property (nonatomic, readwrite) GPUImageSkinToneUpperColor upperSkinToneColor; + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageSmoothToonFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageSmoothToonFilter.h new file mode 100755 index 00000000..f89caac5 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageSmoothToonFilter.h @@ -0,0 +1,28 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageSobelEdgeDetectionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageSobelEdgeDetectionFilter.h new file mode 100755 index 00000000..d6b2c13a --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageSobelEdgeDetectionFilter.h @@ -0,0 +1,16 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageSoftEleganceFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageSoftEleganceFilter.h new file mode 100755 index 00000000..596e1567 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageSoftEleganceFilter.h @@ -0,0 +1,19 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageSoftLightBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageSoftLightBlendFilter.h new file mode 100755 index 00000000..13fc877c --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageSoftLightBlendFilter.h @@ -0,0 +1,7 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageSoftLightBlendFilter : GPUImageTwoInputFilter +{ +} + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageSolarizeFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageSolarizeFilter.h new file mode 100755 index 00000000..ba01c15a --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageSolarizeFilter.h @@ -0,0 +1,14 @@ +#import "GPUImageFilter.h" + +/** Pixels with a luminance above the threshold will invert their color + */ +@interface GPUImageSolarizeFilter : GPUImageFilter +{ + GLint thresholdUniform; +} + +/** Anything above this luminance will be inverted, and anything below normal. Ranges from 0.0 to 1.0, with 0.5 as the default + */ +@property(readwrite, nonatomic) CGFloat threshold; + +@end \ No newline at end of file diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageSolidColorGenerator.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageSolidColorGenerator.h new file mode 100755 index 00000000..58b1383e --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageSolidColorGenerator.h @@ -0,0 +1,19 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageSourceOverBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageSourceOverBlendFilter.h new file mode 100755 index 00000000..29e30635 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageSourceOverBlendFilter.h @@ -0,0 +1,5 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageSourceOverBlendFilter : GPUImageTwoInputFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageSphereRefractionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageSphereRefractionFilter.h new file mode 100755 index 00000000..cbbd2afa --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageSphereRefractionFilter.h @@ -0,0 +1,15 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageStillCamera.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageStillCamera.h new file mode 100755 index 00000000..e4db59b2 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageStillCamera.h @@ -0,0 +1,24 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageStretchDistortionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageStretchDistortionFilter.h new file mode 100755 index 00000000..07803095 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageStretchDistortionFilter.h @@ -0,0 +1,13 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageSubtractBlendFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageSubtractBlendFilter.h new file mode 100755 index 00000000..8dee8215 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageSubtractBlendFilter.h @@ -0,0 +1,5 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageSubtractBlendFilter : GPUImageTwoInputFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageSwirlFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageSwirlFilter.h new file mode 100755 index 00000000..ed7d0122 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageSwirlFilter.h @@ -0,0 +1,17 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageTextureInput.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageTextureInput.h new file mode 100755 index 00000000..8190305d --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageTextureInput.h @@ -0,0 +1,14 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageTextureOutput.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageTextureOutput.h new file mode 100755 index 00000000..05e1f36e --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageTextureOutput.h @@ -0,0 +1,21 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageThreeInputFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageThreeInputFilter.h new file mode 100755 index 00000000..5ecd53e0 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageThreeInputFilter.h @@ -0,0 +1,21 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageThresholdEdgeDetectionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageThresholdEdgeDetectionFilter.h new file mode 100755 index 00000000..2036030c --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageThresholdEdgeDetectionFilter.h @@ -0,0 +1,12 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageThresholdSketchFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageThresholdSketchFilter.h new file mode 100755 index 00000000..fda58979 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageThresholdSketchFilter.h @@ -0,0 +1,5 @@ +#import "GPUImageThresholdEdgeDetectionFilter.h" + +@interface GPUImageThresholdSketchFilter : GPUImageThresholdEdgeDetectionFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageThresholdedNonMaximumSuppressionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageThresholdedNonMaximumSuppressionFilter.h new file mode 100755 index 00000000..9c6e5d72 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageThresholdedNonMaximumSuppressionFilter.h @@ -0,0 +1,14 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageTiltShiftFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageTiltShiftFilter.h new file mode 100755 index 00000000..e41adee7 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageTiltShiftFilter.h @@ -0,0 +1,24 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageToneCurveFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageToneCurveFilter.h new file mode 100755 index 00000000..ff4ae92e --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageToneCurveFilter.h @@ -0,0 +1,30 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageToonFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageToonFilter.h new file mode 100755 index 00000000..ef8e17c3 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageToonFilter.h @@ -0,0 +1,19 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageTransformFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageTransformFilter.h new file mode 100755 index 00000000..9865b853 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageTransformFilter.h @@ -0,0 +1,19 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageTwoInputCrossTextureSamplingFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageTwoInputCrossTextureSamplingFilter.h new file mode 100755 index 00000000..64eac9dc --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageTwoInputCrossTextureSamplingFilter.h @@ -0,0 +1,15 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageTwoInputFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageTwoInputFilter.h new file mode 100755 index 00000000..da3a1345 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageTwoInputFilter.h @@ -0,0 +1,21 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageTwoPassFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageTwoPassFilter.h new file mode 100755 index 00000000..23087f35 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageTwoPassFilter.h @@ -0,0 +1,19 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageTwoPassTextureSamplingFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageTwoPassTextureSamplingFilter.h new file mode 100755 index 00000000..73ab79d3 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageTwoPassTextureSamplingFilter.h @@ -0,0 +1,13 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageUIElement.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageUIElement.h new file mode 100755 index 00000000..984ff2ad --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageUIElement.h @@ -0,0 +1,15 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageUnsharpMaskFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageUnsharpMaskFilter.h new file mode 100755 index 00000000..9d8aff01 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageUnsharpMaskFilter.h @@ -0,0 +1,16 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageVibranceFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageVibranceFilter.h new file mode 100755 index 00000000..9daddd79 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageVibranceFilter.h @@ -0,0 +1,20 @@ +// +// GPUImageVibranceFilter.h +// +// +// Created by github.com/r3mus on 8/14/15. +// +// + +#import "GPUImageFilter.h" + +@interface GPUImageVibranceFilter : GPUImageFilter +{ + GLint vibranceUniform; +} + +// Modifies the saturation of desaturated colors, leaving saturated colors unmodified. +// Value -1 to 1 (-1 is minimum vibrance, 0 is no change, and 1 is maximum vibrance) +@property (readwrite, nonatomic) GLfloat vibrance; + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageVideoCamera.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageVideoCamera.h new file mode 100755 index 00000000..458020cf --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageVideoCamera.h @@ -0,0 +1,156 @@ +#import +#import +#import +#import "GPUImageContext.h" +#import "GPUImageOutput.h" +#import "GPUImageColorConversion.h" + +//Optionally override the YUV to RGB matrices +void setColorConversion601( GLfloat conversionMatrix[9] ); +void setColorConversion601FullRange( GLfloat conversionMatrix[9] ); +void setColorConversion709( GLfloat conversionMatrix[9] ); + + +//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; +} + +/// Whether or not the underlying AVCaptureSession is running +@property(readonly, nonatomic) BOOL isRunning; + +/// 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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageView.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageView.h new file mode 100755 index 00000000..b42651d3 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageView.h @@ -0,0 +1,41 @@ +#import +#import "GPUImageContext.h" + +typedef NS_ENUM(NSUInteger, GPUImageFillModeType) { + 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 +}; + + + +/** + 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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageVignetteFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageVignetteFilter.h new file mode 100755 index 00000000..37be9449 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageVignetteFilter.h @@ -0,0 +1,22 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageVoronoiConsumerFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageVoronoiConsumerFilter.h new file mode 100755 index 00000000..659e39d5 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageVoronoiConsumerFilter.h @@ -0,0 +1,10 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageVoronoiConsumerFilter : GPUImageTwoInputFilter +{ + GLint sizeUniform; +} + +@property (nonatomic, readwrite) CGSize sizeInPixels; + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageWeakPixelInclusionFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageWeakPixelInclusionFilter.h new file mode 100755 index 00000000..44b76c6a --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageWeakPixelInclusionFilter.h @@ -0,0 +1,5 @@ +#import "GPUImage3x3TextureSamplingFilter.h" + +@interface GPUImageWeakPixelInclusionFilter : GPUImage3x3TextureSamplingFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageWhiteBalanceFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageWhiteBalanceFilter.h new file mode 100755 index 00000000..6b09c33d --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageWhiteBalanceFilter.h @@ -0,0 +1,17 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageXYDerivativeFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageXYDerivativeFilter.h new file mode 100755 index 00000000..8db57457 --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageXYDerivativeFilter.h @@ -0,0 +1,5 @@ +#import "GPUImageSobelEdgeDetectionFilter.h" + +@interface GPUImageXYDerivativeFilter : GPUImageSobelEdgeDetectionFilter + +@end diff --git a/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageZoomBlurFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageZoomBlurFilter.h new file mode 100755 index 00000000..744a72cb --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageZoomBlurFilter.h @@ -0,0 +1,13 @@ +#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/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageiOSBlurFilter.h b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageiOSBlurFilter.h new file mode 100755 index 00000000..261d0d7c --- /dev/null +++ b/ios-rongimdemo/framework/GPUImage.framework/Versions/Current/Headers/GPUImageiOSBlurFilter.h @@ -0,0 +1,31 @@ +#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/ios-rongimdemo/framework/JrmfIMLib/JYangToolKit.framework/Headers/JYangLib.h b/ios-rongimdemo/framework/JrmfIMLib/JYangToolKit.framework/Headers/JYangLib.h index 1579a835..0f7a2c5a 100644 --- a/ios-rongimdemo/framework/JrmfIMLib/JYangToolKit.framework/Headers/JYangLib.h +++ b/ios-rongimdemo/framework/JrmfIMLib/JYangToolKit.framework/Headers/JYangLib.h @@ -42,6 +42,8 @@ typedef void (^JYResponseFail)(NSURLSessionDataTask * task, NSError * error); + (void)JYangLibsetImageWithImageView:(UIImageView *)imageView URL:(NSURL *)url placeholderImage:(UIImage *)placeholder; ++ (void)JYangLibDownloadImageWithUrl:(NSURL *)url block:(void(^)(UIImage * image))block; + #pragma mark - 等待框 /** 显示等待框 @@ -75,6 +77,10 @@ typedef void (^JYResponseFail)(NSURLSessionDataTask * task, NSError * error); */ + (void)JYangLibShowWait:(NSString *)hint InViewController:(UIViewController *)viewController completion:(void(^)(BOOL dismissed))completion; + ++ (void)mf_showProgressHUDWith:(NSString *)title inView:(UIView *)view; ++ (void)mf_hideHUDInView:(UIView *)view; + #pragma mark - 网络请求 /** 普通post方法请求网络数据 @@ -87,7 +93,14 @@ typedef void (^JYResponseFail)(NSURLSessionDataTask * task, NSError * error); + (NSURLSessionDataTask *)postGetRequestWithLink:(NSString *)reqUrl parameter:(NSString *)param Success:(JYResponseSuccess)success Fail:(JYResponseFail)fail; #pragma mark - Msg ++ (void)mf_collectErrorMsg:(NSString *)partnerId userId:(NSString *)userId; + + (NSString *)GetJYangToolLibMsg; ++ (void)mf_setUserIcon:(NSString *)uId className:(NSString *)name with:(UIImageView *)uIcon webImage:(NSString *)iconStr defaultImage:(UIImage *)defaultImage; + ++ (void)mf_setUserIcon:(NSString *)uId className:(NSString *)name with:(UIImageView *)uIcon webImage:(NSString *)iconStr defaultImage:(UIImage *)defaultImage block:(void(^)(NSString * imageStr,UIImage * uImage,NSString * user_nickname))block; + ++ (NSURLSessionDataTask * )mf_post:(NSString *)urlStr param:(NSDictionary *)mdic block:(void(^)(id obj,NSError * err))block; @end diff --git a/ios-rongimdemo/framework/JrmfIMLib/JYangToolKit.framework/Headers/JYangToolKit.h b/ios-rongimdemo/framework/JrmfIMLib/JYangToolKit.framework/Headers/JYangToolKit.h index 3b34242c..b99de0e3 100644 --- a/ios-rongimdemo/framework/JrmfIMLib/JYangToolKit.framework/Headers/JYangToolKit.h +++ b/ios-rongimdemo/framework/JrmfIMLib/JYangToolKit.framework/Headers/JYangToolKit.h @@ -21,9 +21,11 @@ FOUNDATION_EXPORT const unsigned char JYangToolKitVersionString[]; #import #import #import +#import // 控件类 #import #import #import #import + diff --git a/ios-rongimdemo/framework/JrmfIMLib/JYangToolKit.framework/Headers/UIView+Frame.h b/ios-rongimdemo/framework/JrmfIMLib/JYangToolKit.framework/Headers/UIView+Frame.h index 4bbdb5c9..7c59c8c5 100644 --- a/ios-rongimdemo/framework/JrmfIMLib/JYangToolKit.framework/Headers/UIView+Frame.h +++ b/ios-rongimdemo/framework/JrmfIMLib/JYangToolKit.framework/Headers/UIView+Frame.h @@ -10,15 +10,15 @@ @interface UIView (Frame) -@property (nonatomic, assign) CGFloat x; -@property (nonatomic, assign) CGFloat y; -@property (nonatomic, assign) CGFloat width; -@property (nonatomic, assign) CGFloat height; +@property (nonatomic, assign) CGFloat jrmf_x; +@property (nonatomic, assign) CGFloat jrmf_y; +@property (nonatomic, assign) CGFloat jrmf_width; +@property (nonatomic, assign) CGFloat jrmf_height; -@property (nonatomic, assign) CGPoint origin; -@property (nonatomic, assign) CGSize size; +@property (nonatomic, assign) CGPoint jrmf_origin; +@property (nonatomic, assign) CGSize jrmf_size; -@property (nonatomic, assign) CGFloat centerX; -@property (nonatomic, assign) CGFloat centerY; +@property (nonatomic, assign) CGFloat jrmf_centerX; +@property (nonatomic, assign) CGFloat jrmf_centerY; @end diff --git a/ios-rongimdemo/framework/JrmfIMLib/JYangToolKit.framework/Info.plist b/ios-rongimdemo/framework/JrmfIMLib/JYangToolKit.framework/Info.plist index 0a017fd3..6385b76d 100644 Binary files a/ios-rongimdemo/framework/JrmfIMLib/JYangToolKit.framework/Info.plist and b/ios-rongimdemo/framework/JrmfIMLib/JYangToolKit.framework/Info.plist differ diff --git a/ios-rongimdemo/framework/JrmfIMLib/JYangToolKit.framework/JYangToolKit b/ios-rongimdemo/framework/JrmfIMLib/JYangToolKit.framework/JYangToolKit index 0c348638..f9309d0f 100644 Binary files a/ios-rongimdemo/framework/JrmfIMLib/JYangToolKit.framework/JYangToolKit and b/ios-rongimdemo/framework/JrmfIMLib/JYangToolKit.framework/JYangToolKit differ diff --git a/ios-rongimdemo/framework/JrmfIMLib/JYangToolKit.framework/Modules/module.modulemap b/ios-rongimdemo/framework/JrmfIMLib/JYangToolKit.framework/Modules/module.modulemap new file mode 100644 index 00000000..8bcf0236 --- /dev/null +++ b/ios-rongimdemo/framework/JrmfIMLib/JYangToolKit.framework/Modules/module.modulemap @@ -0,0 +1,6 @@ +framework module JYangToolKit { + umbrella header "JYangToolKit.h" + + export * + module * { export * } +} diff --git a/ios-rongimdemo/framework/RCSticker/RongSticker.framework/RongSticker b/ios-rongimdemo/framework/RCSticker/RongSticker.framework/RongSticker index 1b88caa7..8bcdf2d8 100644 Binary files a/ios-rongimdemo/framework/RCSticker/RongSticker.framework/RongSticker and b/ios-rongimdemo/framework/RCSticker/RongSticker.framework/RongSticker differ diff --git a/ios-rongimdemo/framework/RongCallKit.framework/Info.plist b/ios-rongimdemo/framework/RongCallKit.framework/Info.plist index 43696c8f..e601d5a9 100644 Binary files a/ios-rongimdemo/framework/RongCallKit.framework/Info.plist and b/ios-rongimdemo/framework/RongCallKit.framework/Info.plist differ diff --git a/ios-rongimdemo/framework/RongCallKit.framework/RongCallKit b/ios-rongimdemo/framework/RongCallKit.framework/RongCallKit index 39ef214d..c3f531c9 100644 Binary files a/ios-rongimdemo/framework/RongCallKit.framework/RongCallKit and b/ios-rongimdemo/framework/RongCallKit.framework/RongCallKit differ diff --git a/ios-rongimdemo/framework/RongCallLib.framework/Info.plist b/ios-rongimdemo/framework/RongCallLib.framework/Info.plist index 0029804d..2eb29a25 100644 Binary files a/ios-rongimdemo/framework/RongCallLib.framework/Info.plist and b/ios-rongimdemo/framework/RongCallLib.framework/Info.plist differ diff --git a/ios-rongimdemo/framework/RongCallLib.framework/RongCallLib b/ios-rongimdemo/framework/RongCallLib.framework/RongCallLib index 29148c31..e44e8b2a 100644 Binary files a/ios-rongimdemo/framework/RongCallLib.framework/RongCallLib and b/ios-rongimdemo/framework/RongCallLib.framework/RongCallLib differ diff --git a/ios-rongimdemo/framework/RongContactCard.framework/Headers/RCContactCardMessage.h b/ios-rongimdemo/framework/RongContactCard.framework/Headers/RCContactCardMessage.h index 047ae80c..1deed553 100644 --- a/ios-rongimdemo/framework/RongContactCard.framework/Headers/RCContactCardMessage.h +++ b/ios-rongimdemo/framework/RongContactCard.framework/Headers/RCContactCardMessage.h @@ -44,7 +44,7 @@ @property (nonatomic,copy) NSString *sendUserId; /** - * 个人名片消息发送者的id + * 个人名片消息发送者的昵称 */ @property (nonatomic,copy) NSString *sendUserName; diff --git a/ios-rongimdemo/framework/RongContactCard.framework/RongContactCard b/ios-rongimdemo/framework/RongContactCard.framework/RongContactCard index 034a06e7..a580452f 100644 Binary files a/ios-rongimdemo/framework/RongContactCard.framework/RongContactCard and b/ios-rongimdemo/framework/RongContactCard.framework/RongContactCard differ diff --git a/ios-rongimdemo/framework/RongIMKit.framework/Headers/RCAttributedLabel.h b/ios-rongimdemo/framework/RongIMKit.framework/Headers/RCAttributedLabel.h index 7c8b2c16..9409d7ed 100644 --- a/ios-rongimdemo/framework/RongIMKit.framework/Headers/RCAttributedLabel.h +++ b/ios-rongimdemo/framework/RongIMKit.framework/Headers/RCAttributedLabel.h @@ -19,7 +19,7 @@ ///** // * text // */ -//@property(nonatomic, strong) NSString *text; +//@property(nonatomic, copy) NSString *text; // //@end diff --git a/ios-rongimdemo/framework/RongIMKit.framework/Headers/RCConversationModel.h b/ios-rongimdemo/framework/RongIMKit.framework/Headers/RCConversationModel.h index 2d2eec1e..5e5a08c3 100644 --- a/ios-rongimdemo/framework/RongIMKit.framework/Headers/RCConversationModel.h +++ b/ios-rongimdemo/framework/RongIMKit.framework/Headers/RCConversationModel.h @@ -54,7 +54,7 @@ typedef NS_ENUM(NSUInteger, RCConversationModelType) { /*! 目标会话ID */ -@property(nonatomic, strong) NSString *targetId; +@property(nonatomic, copy) NSString *targetId; /*! 会话的标题 @@ -104,17 +104,17 @@ typedef NS_ENUM(NSUInteger, RCConversationModelType) { /*! 会话中存在的草稿 */ -@property(nonatomic, strong) NSString *draft; +@property(nonatomic, copy) NSString *draft; /*! 会话中最后一条消息的类型名 */ -@property(nonatomic, strong) NSString *objectName; +@property(nonatomic, copy) NSString *objectName; /*! 会话中最后一条消息的发送者用户ID */ -@property(nonatomic, strong) NSString *senderUserId; +@property(nonatomic, copy) NSString *senderUserId; /*! 会话中最后一条消息的发送者的用户名(已废弃,请勿使用) diff --git a/ios-rongimdemo/framework/RongIMKit.framework/Headers/RCConversationViewController.h b/ios-rongimdemo/framework/RongIMKit.framework/Headers/RCConversationViewController.h index 3aa0e66a..aaa74cc6 100644 --- a/ios-rongimdemo/framework/RongIMKit.framework/Headers/RCConversationViewController.h +++ b/ios-rongimdemo/framework/RongIMKit.framework/Headers/RCConversationViewController.h @@ -65,7 +65,7 @@ typedef NS_ENUM(NSUInteger, RCCustomerServiceStatus) { /*! 目标会话ID */ -@property(nonatomic, strong) NSString *targetId; +@property(nonatomic, copy) NSString *targetId; /*! 当前的用户名称(已废弃,请勿使用) @@ -250,8 +250,6 @@ typedef NS_ENUM(NSUInteger, RCCustomerServiceStatus) { /*! 会话页面消息是否可编辑选择,如果为 YES,消息 cell 会变为多选样式,如果为 NO,页面恢复初始状态。 - - @warning 非线程安全,请在主线程操作该属性 */ @property(nonatomic, assign) BOOL allowsMessageCellSelection; diff --git a/ios-rongimdemo/framework/RongIMKit.framework/Headers/RCIM.h b/ios-rongimdemo/framework/RongIMKit.framework/Headers/RCIM.h index 8c29da02..94dfa7b6 100644 --- a/ios-rongimdemo/framework/RongIMKit.framework/Headers/RCIM.h +++ b/ios-rongimdemo/framework/RongIMKit.framework/Headers/RCIM.h @@ -999,6 +999,11 @@ FOUNDATION_EXPORT NSString *const RCKitDispatchMessageReceiptRequestNotification #pragma mark - 公众号信息提供者 +/*! + 公众号信息提供者 + + @discussion SDK需要通过您实现公众号信息提供者,获取公众号信息并显示。 + */ @property (nonatomic,weak) id publicServiceInfoDataSource; #pragma mark 头像显示 diff --git a/ios-rongimdemo/framework/RongIMKit.framework/Headers/RCLocationViewController.h b/ios-rongimdemo/framework/RongIMKit.framework/Headers/RCLocationViewController.h index 9e41c7a6..3b9880a2 100644 --- a/ios-rongimdemo/framework/RongIMKit.framework/Headers/RCLocationViewController.h +++ b/ios-rongimdemo/framework/RongIMKit.framework/Headers/RCLocationViewController.h @@ -23,7 +23,7 @@ /*! 位置消息中的地理位置的名称 */ -@property(nonatomic, strong) NSString *locationName; +@property(nonatomic, copy) NSString *locationName; /*! 返回按钮的点击事件 diff --git a/ios-rongimdemo/framework/RongIMKit.framework/Headers/RCMessageModel.h b/ios-rongimdemo/framework/RongIMKit.framework/Headers/RCMessageModel.h index 2ecda076..6c3ccf21 100644 --- a/ios-rongimdemo/framework/RongIMKit.framework/Headers/RCMessageModel.h +++ b/ios-rongimdemo/framework/RongIMKit.framework/Headers/RCMessageModel.h @@ -37,7 +37,7 @@ /*! 目标会话ID */ -@property(nonatomic, strong) NSString *targetId; +@property(nonatomic, copy) NSString *targetId; /*! 消息ID @@ -52,7 +52,7 @@ /*! 发送者的用户ID */ -@property(nonatomic, strong) NSString *senderUserId; +@property(nonatomic, copy) NSString *senderUserId; /*! 消息的接收状态 @@ -77,7 +77,7 @@ /*! 消息的类型名 */ -@property(nonatomic, strong) NSString *objectName; +@property(nonatomic, copy) NSString *objectName; /*! 消息的内容 @@ -92,7 +92,7 @@ /*! 消息的附加字段 */ -@property(nonatomic, strong) NSString *extra; +@property(nonatomic, copy) NSString *extra; /*! 消息展示时的Cell高度 @@ -105,7 +105,7 @@ @discussion 服务器消息唯一ID(在同一个Appkey下全局唯一) */ -@property(nonatomic, strong) NSString *messageUId; +@property(nonatomic, copy) NSString *messageUId; /*! 消息是否可以发送请求回执 diff --git a/ios-rongimdemo/framework/RongIMKit.framework/Headers/RCVoiceMessageCell.h b/ios-rongimdemo/framework/RongIMKit.framework/Headers/RCVoiceMessageCell.h index 7f3a64fb..00d15d8f 100644 --- a/ios-rongimdemo/framework/RongIMKit.framework/Headers/RCVoiceMessageCell.h +++ b/ios-rongimdemo/framework/RongIMKit.framework/Headers/RCVoiceMessageCell.h @@ -17,6 +17,10 @@ */ UIKIT_EXTERN NSString *const kNotificationPlayVoice; +/*! + 语音消息播放停止的Notification + */ +UIKIT_EXTERN NSString *const kNotificationStopVoicePlayer; /*! 语音消息Cell diff --git a/ios-rongimdemo/framework/RongIMKit.framework/Info.plist b/ios-rongimdemo/framework/RongIMKit.framework/Info.plist index 85bb0baa..ae79cb70 100644 Binary files a/ios-rongimdemo/framework/RongIMKit.framework/Info.plist and b/ios-rongimdemo/framework/RongIMKit.framework/Info.plist differ diff --git a/ios-rongimdemo/framework/RongIMKit.framework/RongIMKit b/ios-rongimdemo/framework/RongIMKit.framework/RongIMKit index c1d84de5..95d5be07 100644 Binary files a/ios-rongimdemo/framework/RongIMKit.framework/RongIMKit and b/ios-rongimdemo/framework/RongIMKit.framework/RongIMKit differ diff --git a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCChatRoomInfo.h b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCChatRoomInfo.h index 8c9d2a1f..2cc8015c 100644 --- a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCChatRoomInfo.h +++ b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCChatRoomInfo.h @@ -17,7 +17,7 @@ /*! 聊天室ID */ -@property(nonatomic, strong) NSString *targetId; +@property(nonatomic, copy) NSString *targetId; /*! 包含的成员信息类型 diff --git a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCChatRoomMemberInfo.h b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCChatRoomMemberInfo.h index 5a791b7a..0a2a10ce 100644 --- a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCChatRoomMemberInfo.h +++ b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCChatRoomMemberInfo.h @@ -16,7 +16,7 @@ /*! 用户ID */ -@property(nonatomic, strong) NSString *userId; +@property(nonatomic, copy) NSString *userId; /*! 加入时间(Unix时间戳,毫秒) diff --git a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCCommandMessage.h b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCCommandMessage.h index 06742293..0c6a0e45 100644 --- a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCCommandMessage.h +++ b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCCommandMessage.h @@ -23,14 +23,14 @@ /*! 命令的名称 */ -@property(nonatomic, strong) NSString *name; +@property(nonatomic, copy) NSString *name; /*! 命令的扩展数据 @discussion 命令的扩展数据,可以为任意字符串,如存放您定义的json数据。 */ -@property(nonatomic, strong) NSString *data; +@property(nonatomic, copy) NSString *data; /*! 初始化命令消息 diff --git a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCCommandNotificationMessage.h b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCCommandNotificationMessage.h index fc03b08f..d2393c57 100644 --- a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCCommandNotificationMessage.h +++ b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCCommandNotificationMessage.h @@ -28,14 +28,14 @@ /*! 命令提醒的名称 */ -@property(nonatomic, strong) NSString *name; +@property(nonatomic, copy) NSString *name; /*! 命令提醒消息的扩展数据 @discussion 命令提醒消息的扩展数据,可以为任意字符串,如存放您定义的json数据。 */ -@property(nonatomic, strong) NSString *data; +@property(nonatomic, copy) NSString *data; /*! 初始化命令提醒消息 diff --git a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCContactNotificationMessage.h b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCContactNotificationMessage.h index f58c7418..253e3eff 100644 --- a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCContactNotificationMessage.h +++ b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCContactNotificationMessage.h @@ -44,29 +44,29 @@ 好友请求当前的操作名称,您可以使用预定义好的操作名,也可以是您自己定义的任何操作名。 预定义的操作名:ContactNotificationMessage_ContactOperationRequest、ContactNotificationMessage_ContactOperationAcceptResponse、ContactNotificationMessage_ContactOperationRejectResponse。 */ -@property(nonatomic, strong) NSString *operation; +@property(nonatomic, copy) NSString *operation; /*! 当前操作发起用户的用户ID */ -@property(nonatomic, strong) NSString *sourceUserId; +@property(nonatomic, copy) NSString *sourceUserId; /*! 当前操作目标用户的用户ID */ -@property(nonatomic, strong) NSString *targetUserId; +@property(nonatomic, copy) NSString *targetUserId; /*! 当前操作的消息内容 @discussion 当前操作的消息内容,如同意、拒绝的理由等。 */ -@property(nonatomic, strong) NSString *message; +@property(nonatomic, copy) NSString *message; /*! 当前操作的附加信息 */ -@property(nonatomic, strong) NSString *extra; +@property(nonatomic, copy) NSString *extra; /*! 初始化好友请求消息 diff --git a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCConversation.h b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCConversation.h index 79da89e7..d4237c55 100644 --- a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCConversation.h +++ b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCConversation.h @@ -28,12 +28,12 @@ /*! 目标会话ID */ -@property(nonatomic, strong) NSString *targetId; +@property(nonatomic, copy) NSString *targetId; /*! 会话的标题 */ -@property(nonatomic, strong) NSString *conversationTitle; +@property(nonatomic, copy) NSString *conversationTitle; /*! 会话中的未读消息数量 @@ -71,24 +71,24 @@ /*! 会话中存在的草稿 */ -@property(nonatomic, strong) NSString *draft; +@property(nonatomic, copy) NSString *draft; /*! 会话中最后一条消息的类型名 */ -@property(nonatomic, strong) NSString *objectName; +@property(nonatomic, copy) NSString *objectName; /*! 会话中最后一条消息的发送者用户ID */ -@property(nonatomic, strong) NSString *senderUserId; +@property(nonatomic, copy) NSString *senderUserId; /*! 会话中最后一条消息的发送者的用户名(已废弃,请勿使用) @warning **已废弃,请勿使用。** */ -@property(nonatomic, strong) NSString *senderUserName __deprecated_msg("已废弃,请勿使用。"); +@property(nonatomic, copy) NSString *senderUserName __deprecated_msg("已废弃,请勿使用。"); /*! 会话中最后一条消息的消息ID @@ -118,7 +118,7 @@ @discussion 服务器消息唯一ID(在同一个Appkey下全局唯一) */ -@property(nonatomic, strong) NSString *lastestMessageUId; +@property(nonatomic, copy) NSString *lastestMessageUId; /*! 会话中是否存在被@的消息 diff --git a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCCustomerServiceConfig.h b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCCustomerServiceConfig.h index eae65da3..535081b8 100644 --- a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCCustomerServiceConfig.h +++ b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCCustomerServiceConfig.h @@ -25,12 +25,12 @@ /*! * 公司名称 */ -@property(nonatomic, strong) NSString *companyName; +@property(nonatomic, copy) NSString *companyName; /*! * 公司的Url */ -@property(nonatomic, strong) NSString *companyUrl; +@property(nonatomic, copy) NSString *companyUrl; /*! * 机器人会话是否不需要评价 @@ -48,10 +48,10 @@ @property(nonatomic, strong) NSArray *humanEvaluateItems; @property(nonatomic) int adminTipTime; -@property(nonatomic, strong) NSString *adminTipWord; +@property(nonatomic, copy) NSString *adminTipWord; @property(nonatomic) int userTipTime; -@property(nonatomic, strong) NSString *userTipWord; +@property(nonatomic, copy) NSString *userTipWord; /*! * 评价时机 */ diff --git a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCCustomerServiceGroupItem.h b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCCustomerServiceGroupItem.h index 46603c88..b07ebb30 100644 --- a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCCustomerServiceGroupItem.h +++ b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCCustomerServiceGroupItem.h @@ -9,7 +9,7 @@ #import @interface RCCustomerServiceGroupItem : NSObject -@property(nonatomic, strong) NSString *groupId; -@property(nonatomic, strong) NSString *name; +@property(nonatomic, copy) NSString *groupId; +@property(nonatomic, copy) NSString *name; @property(nonatomic, assign) BOOL online; @end diff --git a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCCustomerServiceInfo.h b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCCustomerServiceInfo.h index bca99ba0..3e48c22b 100644 --- a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCCustomerServiceInfo.h +++ b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCCustomerServiceInfo.h @@ -9,34 +9,34 @@ #import @interface RCCustomerServiceInfo : NSObject -@property(nonatomic, strong) NSString *userId; //用户唯一标识 -@property(nonatomic, strong) NSString *nickName; //用户昵称 -@property(nonatomic, strong) NSString *loginName; //用户登录名 -@property(nonatomic, strong) NSString *name; //用户名称 -@property(nonatomic, strong) NSString *grade; //用户等级 -@property(nonatomic, strong) NSString *gender; //用户性别 -@property(nonatomic, strong) NSString *birthday; //用户生日 -@property(nonatomic, strong) NSString *age; //年龄 -@property(nonatomic, strong) NSString *profession; //职业 -@property(nonatomic, strong) NSString *portraitUrl; //头像 -@property(nonatomic, strong) NSString *province; //省份 -@property(nonatomic, strong) NSString *city; //城市 -@property(nonatomic, strong) NSString *memo; //备注 +@property(nonatomic, copy) NSString *userId; //用户唯一标识 +@property(nonatomic, copy) NSString *nickName; //用户昵称 +@property(nonatomic, copy) NSString *loginName; //用户登录名 +@property(nonatomic, copy) NSString *name; //用户名称 +@property(nonatomic, copy) NSString *grade; //用户等级 +@property(nonatomic, copy) NSString *gender; //用户性别 +@property(nonatomic, copy) NSString *birthday; //用户生日 +@property(nonatomic, copy) NSString *age; //年龄 +@property(nonatomic, copy) NSString *profession; //职业 +@property(nonatomic, copy) NSString *portraitUrl; //头像 +@property(nonatomic, copy) NSString *province; //省份 +@property(nonatomic, copy) NSString *city; //城市 +@property(nonatomic, copy) NSString *memo; //备注 -@property(nonatomic, strong) NSString *mobileNo; //电话号码 -@property(nonatomic, strong) NSString *email; //邮箱 -@property(nonatomic, strong) NSString *address; //地址 -@property(nonatomic, strong) NSString *QQ; // QQ号 -@property(nonatomic, strong) NSString *weibo; //微博 -@property(nonatomic, strong) NSString *weixin; //微信 +@property(nonatomic, copy) NSString *mobileNo; //电话号码 +@property(nonatomic, copy) NSString *email; //邮箱 +@property(nonatomic, copy) NSString *address; //地址 +@property(nonatomic, copy) NSString *QQ; // QQ号 +@property(nonatomic, copy) NSString *weibo; //微博 +@property(nonatomic, copy) NSString *weixin; //微信 -@property(nonatomic, strong) NSString *page; //页面信息 -@property(nonatomic, strong) NSString *referrer; //来源 -@property(nonatomic, strong) NSString *enterUrl; // -@property(nonatomic, strong) NSString *skillId; +@property(nonatomic, copy) NSString *page; //页面信息 +@property(nonatomic, copy) NSString *referrer; //来源 +@property(nonatomic, copy) NSString *enterUrl; // +@property(nonatomic, copy) NSString *skillId; @property(nonatomic, strong) NSArray *listUrl; -@property(nonatomic, strong) NSString *define; //自定义信息 -@property(nonatomic, strong) NSString *productId; //商品id +@property(nonatomic, copy) NSString *define; //自定义信息 +@property(nonatomic, copy) NSString *productId; //商品id - (NSData *)encode; @end diff --git a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCDiscussion.h b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCDiscussion.h index 52c786bf..21177cac 100644 --- a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCDiscussion.h +++ b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCDiscussion.h @@ -23,17 +23,17 @@ /*! 讨论组ID */ -@property(nonatomic, strong) NSString *discussionId; +@property(nonatomic, copy) NSString *discussionId; /*! 讨论组名称 */ -@property(nonatomic, strong) NSString *discussionName; +@property(nonatomic, copy) NSString *discussionName; /*! 讨论组的创建者的用户ID */ -@property(nonatomic, strong) NSString *creatorId; +@property(nonatomic, copy) NSString *creatorId; /*! 讨论组成员的用户ID列表 diff --git a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCDiscussionNotificationMessage.h b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCDiscussionNotificationMessage.h index 91fd9c15..0900a1ae 100644 --- a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCDiscussionNotificationMessage.h +++ b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCDiscussionNotificationMessage.h @@ -58,12 +58,12 @@ typedef NS_ENUM(NSInteger, RCDiscussionNotificationType) { /*! 操作者的用户ID */ -@property(nonatomic, strong) NSString *operatorId; +@property(nonatomic, copy) NSString *operatorId; /*! 讨论组通知的扩展信息 */ -@property(nonatomic, strong) NSString *extension; +@property(nonatomic, copy) NSString *extension; /*! 初始化讨论组通知消息 diff --git a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCEvaluateItem.h b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCEvaluateItem.h index 4f566caf..6952b99d 100644 --- a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCEvaluateItem.h +++ b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCEvaluateItem.h @@ -9,6 +9,6 @@ #import @interface RCEvaluateItem : NSObject -@property(nonatomic, strong) NSString *describe; // description +@property(nonatomic, copy) NSString *describe; // description @property(nonatomic) int value; @end diff --git a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCFileMessage.h b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCFileMessage.h index a4a7b07c..222001bc 100644 --- a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCFileMessage.h +++ b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCFileMessage.h @@ -13,12 +13,12 @@ */ #define RCFileMessageTypeIdentifier @"RC:FileMsg" -@interface RCFileMessage : RCMessageContent +@interface RCFileMessage : RCMediaMessageContent /*! 文件名 */ -@property(nonatomic, strong) NSString *name; +@property(nonatomic, copy) NSString *name; /*! 文件大小,单位为Byte @@ -28,22 +28,22 @@ /*! 文件类型 */ -@property(nonatomic, strong) NSString *type; +@property(nonatomic, copy) NSString *type; /*! 文件的网络地址 */ -@property(nonatomic, strong) NSString *fileUrl; +@property(nonatomic, copy) NSString *fileUrl; /*! 文件的本地路径 */ -@property(nonatomic, strong) NSString *localPath; +@property(nonatomic, copy) NSString *localPath; /*! 附加信息 */ -@property(nonatomic, strong) NSString *extra; +@property(nonatomic, copy) NSString *extra; /*! 初始化文件消息 diff --git a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCFwLog.h b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCFwLog.h index 5e64389e..43cc7c6c 100644 --- a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCFwLog.h +++ b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCFwLog.h @@ -25,7 +25,7 @@ #define FwLogD(p, t, k, ...) [[RCFwLog getInstance] write:RC_Level_D type:p tag:t keys:k, ##__VA_ARGS__] #define FwLogV(p, t, k, ...) [[RCFwLog getInstance] write:RC_Level_V type:p tag:t keys:k, ##__VA_ARGS__] -typedef NS_ENUM(NSUInteger, LogLevel) { RC_Level_F = 1, RC_Level_E = 2, RC_Level_W = 3, RC_Level_I = 4, RC_Level_D = 5, RC_Level_V = 6 }; +typedef NS_ENUM(NSUInteger, RCFwLogLevel) { RC_Level_F = 1, RC_Level_E = 2, RC_Level_W = 3, RC_Level_I = 4, RC_Level_D = 5, RC_Level_V = 6 }; typedef NS_OPTIONS(NSUInteger, LogType) { RC_Type_APP = 1 << 0, // User interface. @@ -52,9 +52,9 @@ typedef NS_OPTIONS(NSUInteger, LogType) { + (void)setToken:(NSString *)token; + (void)setUserId:(NSString *)userId; + (void)setLogListener:(void (^)(NSString *log))logBlock; -+ (void)setConsoleLogLevel:(LogLevel)level; ++ (void)setConsoleLogLevel:(RCFwLogLevel)level; + (NSString *)getIpWithHost:(NSString *)hostName; -- (void)write:(LogLevel)level +- (void)write:(RCFwLogLevel)level type:(LogType)type tag:(NSString *)tag keys:(NSString *)keys, ... NS_FORMAT_FUNCTION(4, 5); diff --git a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCGroup.h b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCGroup.h index 94a4e804..e23e2c44 100644 --- a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCGroup.h +++ b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCGroup.h @@ -20,17 +20,17 @@ /*! 群组ID */ -@property(nonatomic, strong) NSString *groupId; +@property(nonatomic, copy) NSString *groupId; /*! 群组名称 */ -@property(nonatomic, strong) NSString *groupName; +@property(nonatomic, copy) NSString *groupName; /*! 群组头像的URL */ -@property(nonatomic, strong) NSString *portraitUri; +@property(nonatomic, copy) NSString *portraitUri; /*! 群组信息的初始化方法 diff --git a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCGroupNotificationMessage.h b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCGroupNotificationMessage.h index f68e4208..52ce2ff4 100644 --- a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCGroupNotificationMessage.h +++ b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCGroupNotificationMessage.h @@ -52,12 +52,12 @@ 群组通知的当前操作名称,您可以使用预定义好的操作名,也可以是您自己定义的任何操作名。 预定义的操作名:GroupNotificationMessage_GroupOperationAdd、GroupNotificationMessage_GroupOperationQuit、GroupNotificationMessage_GroupOperationKicked、GroupNotificationMessage_GroupOperationRename、GroupNotificationMessage_GroupOperationBulletin。 */ -@property(nonatomic, strong) NSString *operation; +@property(nonatomic, copy) NSString *operation; /*! 当前操作发起用户的用户ID */ -@property(nonatomic, strong) NSString *operatorUserId; +@property(nonatomic, copy) NSString *operatorUserId; /*! 当前操作的目标对象 @@ -65,17 +65,17 @@ @discussion 当前操作的目标对象,如被当前操作目标用户的用户ID或变更后的群主名称等。 */ -@property(nonatomic, strong) NSString *data; +@property(nonatomic, copy) NSString *data; /*! 当前操作的消息内容 */ -@property(nonatomic, strong) NSString *message; +@property(nonatomic, copy) NSString *message; /*! 当前操作的附加信息 */ -@property(nonatomic, strong) NSString *extra; +@property(nonatomic, copy) NSString *extra; /*! 初始化群组通知消息 diff --git a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCIMClient.h b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCIMClient.h index a0710bd2..d318c98d 100644 --- a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCIMClient.h +++ b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCIMClient.h @@ -1253,7 +1253,7 @@ FOUNDATION_EXPORT NSString *const RCLibDispatchReadReceiptNotification; /*! 在会话中搜索指定消息的前 beforeCount 数量和后 afterCount - 数量的消息。返回的消息列表中会包含指定的消息。消息列表时间顺序从旧到新。 + 数量的消息。返回的消息列表中会包含指定的消息。消息列表时间顺序从新到旧。 @param conversationType 会话类型 @param targetId 目标会话ID @@ -1402,6 +1402,26 @@ FOUNDATION_EXPORT NSString *const RCLibDispatchReadReceiptNotification; success:(void (^)(void))successBlock error:(void (^)(RCErrorCode status))errorBlock; + +/** + 批量删除某个会话中的指定远端消息(同时删除对应的本地消息) + + @param conversationType 会话类型,不支持聊天室 + @param targetId 目标会话ID + @param messages 将被删除的消息列表 + @param successBlock 成功的回调 + @param errorBlock 失败的回调 + + @discussion 此方法会同时删除远端和本地消息。 + 一次批量操作仅支持删除属于同一个会话的消息,请确保消息列表中的所有消息来自同一会话 + 一次最多删除 100 条消息。 + */ +- (void)deleteRemoteMessage:(RCConversationType)conversationType + targetId:(NSString *)targetId + messages:(NSArray *)messages + success:(void (^)(void))successBlock + error:(void (^)(RCErrorCode status))errorBlock; + /*! 删除某个会话中的所有消息 @@ -2508,9 +2528,9 @@ FOUNDATION_EXPORT NSString *const RCLibDispatchReadReceiptNotification; #pragma mark - 历史消息 /** - 设置离线消息补偿时间(以天为单位) + 设置离线消息在服务端的存储时间(以天为单位) - @param duration 离线消息补偿时间,范围【1~7天】 + @param duration 存储时间,范围【1~7天】 @param successBlock 成功回调 @param errorBlock 失败回调 */ diff --git a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCImageMessage.h b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCImageMessage.h index e94275a5..dccfc4d7 100644 --- a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCImageMessage.h +++ b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCImageMessage.h @@ -10,7 +10,7 @@ // RCImageMessage.h // Created by Heq.Shinoda on 14-6-13. -#import "RCMessageContent.h" +#import "RCMediaMessageContent.h" #import /*! @@ -23,19 +23,19 @@ @discussion 图片消息类,此消息会进行存储并计入未读消息数。 */ -@interface RCImageMessage : RCMessageContent +@interface RCImageMessage : RCMediaMessageContent /*! 图片消息的URL地址 @discussion 发送方此字段为图片的本地路径,接收方此字段为网络URL地址。 */ -@property(nonatomic, strong) NSString *imageUrl; +@property(nonatomic, copy) NSString *imageUrl; /*! 图片的本地路径 */ -@property(nonatomic, strong) NSString *localPath; +@property(nonatomic, copy) NSString *localPath; /*! 图片消息的缩略图 @@ -52,7 +52,7 @@ /*! 图片消息的附加信息 */ -@property(nonatomic, strong) NSString *extra; +@property(nonatomic, copy) NSString *extra; /*! 图片消息的原始图片信息 diff --git a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCInformationNotificationMessage.h b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCInformationNotificationMessage.h index 2ba97da4..79c98950 100644 --- a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCInformationNotificationMessage.h +++ b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCInformationNotificationMessage.h @@ -27,12 +27,12 @@ /*! 通知的内容 */ -@property(nonatomic, strong) NSString *message; +@property(nonatomic, copy) NSString *message; /*! 通知的附加信息 */ -@property(nonatomic, strong) NSString *extra; +@property(nonatomic, copy) NSString *extra; /*! 初始化通知消息 diff --git a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCLocationMessage.h b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCLocationMessage.h index c3ded13f..10759cac 100644 --- a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCLocationMessage.h +++ b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCLocationMessage.h @@ -34,7 +34,7 @@ /*! 地理位置的名称 */ -@property(nonatomic, strong) NSString *locationName; +@property(nonatomic, copy) NSString *locationName; /*! 地理位置的缩略图 @@ -44,7 +44,7 @@ /*! 地理位置的附加信息 */ -@property(nonatomic, strong) NSString *extra; +@property(nonatomic, copy) NSString *extra; /*! 初始化地理位置消息 diff --git a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCMediaMessageContent.h b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCMediaMessageContent.h new file mode 100644 index 00000000..6ae509ae --- /dev/null +++ b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCMediaMessageContent.h @@ -0,0 +1,34 @@ +// +// RCMediaMessageContent.h +// RongIMLib +// +// Created by lichenfeng on 2018/11/22. +// Copyright © 2018年 RongCloud. All rights reserved. +// + +#import "RCMessageContent.h" + +/** + 媒体类型消息的父类 + + @discussion SDK中所有媒体类型消息(图片、文件等)均继承此类,开发者如需将自定义的媒体类型消息上传到融云默认的服务器时必须继承此类(SDK负责媒体消息的上传及上传成功后的发送,开发者自行处理消息接收后的展示)。 + 以下属性需要子类在encode、decode方法中和扩展的属性一同进行处理 + */ +@interface RCMediaMessageContent : RCMessageContent + +/** + 媒体内容的本地路径(此属性必须有值) + */ +@property(nonatomic, copy) NSString *localPath; + +/** + 媒体内容上传服务器后的网络地址(上传成功后SDK会为该属性赋值) + */ +@property(nonatomic, copy) NSString *remoteUrl; + +/** + 媒体内容的文件名(如不传使用SDK中downloadMediaMessage方法下载后会默认生成一个名称) + */ +@property(nonatomic, copy) NSString *name; +@end + diff --git a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCMentionedInfo.h b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCMentionedInfo.h index 99aec921..ee17b398 100644 --- a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCMentionedInfo.h +++ b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCMentionedInfo.h @@ -29,7 +29,7 @@ /*! 包含@提醒的消息,本地通知和远程推送显示的内容 */ -@property(nonatomic, strong) NSString *mentionedContent; +@property(nonatomic, copy) NSString *mentionedContent; /*! 是否@了我 diff --git a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCMessage.h b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCMessage.h index 4ca22d79..5bb2ed6d 100644 --- a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCMessage.h +++ b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCMessage.h @@ -32,7 +32,7 @@ /*! 目标会话ID */ -@property(nonatomic, strong) NSString *targetId; +@property(nonatomic, copy) NSString *targetId; /*! 消息的ID @@ -49,7 +49,7 @@ /*! 消息的发送者ID */ -@property(nonatomic, strong) NSString *senderUserId; +@property(nonatomic, copy) NSString *senderUserId; /*! 消息的接收状态 @@ -74,7 +74,7 @@ /*! 消息的类型名 */ -@property(nonatomic, strong) NSString *objectName; +@property(nonatomic, copy) NSString *objectName; /*! 消息的内容 @@ -84,14 +84,14 @@ /*! 消息的附加字段 */ -@property(nonatomic, strong) NSString *extra; +@property(nonatomic, copy) NSString *extra; /*! 全局唯一ID @discussion 服务器消息唯一ID(在同一个Appkey下全局唯一) */ -@property(nonatomic, strong) NSString *messageUId; +@property(nonatomic, copy) NSString *messageUId; /*! 阅读回执状态 diff --git a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCMessageContent.h b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCMessageContent.h index b45903a0..97fc4298 100644 --- a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCMessageContent.h +++ b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCMessageContent.h @@ -128,6 +128,14 @@ */ @property(nonatomic, strong) RCMentionedInfo *mentionedInfo; +/** + 将用户信息编码到字典中 + + @param userInfo 要编码的用户信息 + @return 存有用户信息的 Dictionary + */ +- (NSDictionary *)encodeUserInfo:(RCUserInfo *)userInfo; + /*! 将消息内容中携带的用户信息解码 @@ -135,6 +143,14 @@ */ - (void)decodeUserInfo:(NSDictionary *)dictionary; +/** + 将@提醒信息编码到字典中 + + @param mentionedInfo 要编码的@信息 + @return 存有@信息的 Dictionary + */ +- (NSDictionary *)encodeMentionedInfo:(RCMentionedInfo *)mentionedInfo; + /*! 将消息内容中携带的@提醒信息解码 diff --git a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCProfileNotificationMessage.h b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCProfileNotificationMessage.h index 31b1fc44..a6bbcd95 100644 --- a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCProfileNotificationMessage.h +++ b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCProfileNotificationMessage.h @@ -27,17 +27,17 @@ /*! 公众服务账号信息变更的操作名 */ -@property(nonatomic, strong) NSString *operation; +@property(nonatomic, copy) NSString *operation; /*! 信息变更的数据,可以为任意格式,如json数据。 */ -@property(nonatomic, strong) NSString *data; +@property(nonatomic, copy) NSString *data; /*! 信息变更的附加信息 */ -@property(nonatomic, strong) NSString *extra; +@property(nonatomic, copy) NSString *extra; /*! 初始化公众服务账号信息变更消息 diff --git a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCPublicServiceCommandMessage.h b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCPublicServiceCommandMessage.h index 63087fdd..ff9f90d8 100644 --- a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCPublicServiceCommandMessage.h +++ b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCPublicServiceCommandMessage.h @@ -25,17 +25,17 @@ /*! 请求的名称 */ -@property(nonatomic, strong) NSString *command; +@property(nonatomic, copy) NSString *command; /*! 请求的内容 */ -@property(nonatomic, strong) NSString *data; +@property(nonatomic, copy) NSString *data; /*! 请求的扩展数据 */ -@property(nonatomic, strong) NSString *extra; +@property(nonatomic, copy) NSString *extra; /*! 初始化公众服务请求消息 diff --git a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCPublicServiceMenuItem.h b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCPublicServiceMenuItem.h index ecb3f435..8bc96e30 100644 --- a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCPublicServiceMenuItem.h +++ b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCPublicServiceMenuItem.h @@ -21,17 +21,17 @@ /*! 菜单的ID */ -@property(nonatomic, strong) NSString *id; +@property(nonatomic, copy) NSString *id; /*! 菜单的标题 */ -@property(nonatomic, strong) NSString *name; +@property(nonatomic, copy) NSString *name; /*! 菜单的URL链接 */ -@property(nonatomic, strong) NSString *url; +@property(nonatomic, copy) NSString *url; /*! 菜单的类型 diff --git a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCPublicServiceMultiRichContentMessage.h b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCPublicServiceMultiRichContentMessage.h index cfa8daf6..ec47f068 100644 --- a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCPublicServiceMultiRichContentMessage.h +++ b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCPublicServiceMultiRichContentMessage.h @@ -32,7 +32,7 @@ /*! 多图文消息的附加信息 */ -@property(nonatomic, strong) NSString *extra; +@property(nonatomic, copy) NSString *extra; /** diff --git a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCPublicServiceProfile.h b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCPublicServiceProfile.h index 8674893e..6a7b19bb 100644 --- a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCPublicServiceProfile.h +++ b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCPublicServiceProfile.h @@ -23,50 +23,50 @@ /*! 公众服务账号的名称 */ -@property(nonatomic, strong) NSString *name; +@property(nonatomic, copy) NSString *name; /*! 公众服务账号的描述 */ -@property(nonatomic, strong) NSString *introduction; +@property(nonatomic, copy) NSString *introduction; /*! 公众服务账号的ID */ -@property(nonatomic, strong) NSString *publicServiceId; +@property(nonatomic, copy) NSString *publicServiceId; /*! 公众服务账号头像URL */ -@property(nonatomic, strong) NSString *portraitUrl; +@property(nonatomic, copy) NSString *portraitUrl; /*! 公众服务账号的所有者 @discussion 当前版本暂不支持。 */ -@property(nonatomic, strong) NSString *owner; +@property(nonatomic, copy) NSString *owner; /*! 公众服务账号所有者的URL @discussion 当前版本暂不支持。 */ -@property(nonatomic, strong) NSString *ownerUrl; +@property(nonatomic, copy) NSString *ownerUrl; /*! 公众服务账号的联系电话 @discussion 当前版本暂不支持。 */ -@property(nonatomic, strong) NSString *publicServiceTel; +@property(nonatomic, copy) NSString *publicServiceTel; /*! 公众服务账号历史消息 @discussion 当前版本暂不支持。 */ -@property(nonatomic, strong) NSString *histroyMsgUrl; +@property(nonatomic, copy) NSString *histroyMsgUrl; /*! 公众服务账号地理位置 @@ -80,7 +80,7 @@ @discussion 当前版本暂不支持。 */ -@property(nonatomic, strong) NSString *scope; +@property(nonatomic, copy) NSString *scope; /*! 公众服务账号类型 diff --git a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCPublicServiceRichContentMessage.h b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCPublicServiceRichContentMessage.h index d198890d..a45db0ce 100644 --- a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCPublicServiceRichContentMessage.h +++ b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCPublicServiceRichContentMessage.h @@ -33,6 +33,6 @@ /*! 图文消息的附加信息 */ -@property(nonatomic, strong) NSString *extra; +@property(nonatomic, copy) NSString *extra; @end diff --git a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCPushProfile.h b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCPushProfile.h index 13f9accf..af7f3113 100644 --- a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCPushProfile.h +++ b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCPushProfile.h @@ -10,11 +10,18 @@ #import @interface RCPushProfile : NSObject + //是否显示远程推送的内容 @property(nonatomic, assign, readonly) BOOL isShowPushContent; +//远程推送的语言 +@property(nonatomic, assign, readonly) RCPushLauguage pushLauguage; + +//其他端在线时,手机是否接收远程推送(多个手机端登录,最后一个会接收) +@property(nonatomic, assign, readonly) BOOL receiveStatus; + /** - 设置是否显示远程推送的内容(需要提交工单开通对应的功能后,此接口方可正常使用) + 设置是否显示远程推送的内容 @param isShowPushContent 是否显示推送的具体内容( YES显示 NO 不显示) @param successBlock 成功回调 @@ -24,4 +31,27 @@ success:(void (^)(void))successBlock error:(void (^)(RCErrorCode status))errorBlock; +/** + 设置推送内容的自然语言 + + @param pushLauguage 设置推送内容的自然语言 (目前只支持中文和英文) + @param successBlock 成功回调 + @param errorBlock 失败回调 + */ +- (void)setPushLauguage:(RCPushLauguage)pushLauguage + success:(void (^)(void))successBlock + error:(void (^)(RCErrorCode status))errorBlock; + + +/** + 设置 Web 端在线时,手机端是否接收推送 + + @param receiveStatus 是否接收推送( YES 接收 NO 不接收) + @param successBlock 成功回调 + @param errorBlock 失败回调 + */ +- (void)setPushReceiveStatus:(BOOL)receiveStatus + success:(void (^)(void))successBlock + error:(void (^)(RCErrorCode status))errorBlock; + @end diff --git a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCRealTimeLocationEndMessage.h b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCRealTimeLocationEndMessage.h index d1a2febf..2e741d43 100644 --- a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCRealTimeLocationEndMessage.h +++ b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCRealTimeLocationEndMessage.h @@ -23,7 +23,7 @@ /*! 结束消息的附加信息 */ -@property(nonatomic, strong) NSString *extra; +@property(nonatomic, copy) NSString *extra; /*! 初始化实时位置共享的结束消息 @@ -33,4 +33,4 @@ */ + (instancetype)messageWithExtra:(NSString *)extra; -@end \ No newline at end of file +@end diff --git a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCRealTimeLocationStartMessage.h b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCRealTimeLocationStartMessage.h index e1220bef..59397d7d 100644 --- a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCRealTimeLocationStartMessage.h +++ b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCRealTimeLocationStartMessage.h @@ -23,7 +23,7 @@ /*! 发起消息的附加信息 */ -@property(nonatomic, strong) NSString *extra; +@property(nonatomic, copy) NSString *extra; /*! 初始化实时位置共享的发起消息 diff --git a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCRecallNotificationMessage.h b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCRecallNotificationMessage.h index e95f8539..6a9db201 100644 --- a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCRecallNotificationMessage.h +++ b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCRecallNotificationMessage.h @@ -21,7 +21,7 @@ /*! 发起撤回操作的用户ID */ -@property(nonatomic, strong) NSString *operatorId; +@property(nonatomic, copy) NSString *operatorId; /*! 撤回的时间(毫秒) @@ -31,7 +31,7 @@ /*! 原消息的消息类型名 */ -@property(nonatomic, strong) NSString *originalObjectName; +@property(nonatomic, copy) NSString *originalObjectName; /*! 是否是管理员操作 diff --git a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCRichContentItem.h b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCRichContentItem.h index 0836e71b..2265c12a 100644 --- a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCRichContentItem.h +++ b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCRichContentItem.h @@ -22,27 +22,27 @@ /*! 图文信息条目的标题 */ -@property(nonatomic, strong) NSString *title; +@property(nonatomic, copy) NSString *title; /*! 图文信息条目的内容摘要 */ -@property(nonatomic, strong) NSString *digest; +@property(nonatomic, copy) NSString *digest; /*! 图文信息条目的图片URL */ -@property(nonatomic, strong) NSString *imageURL; +@property(nonatomic, copy) NSString *imageURL; /*! 图文信息条目中包含的需要跳转到的URL */ -@property(nonatomic, strong) NSString *url; +@property(nonatomic, copy) NSString *url; /*! 图文信息条目的扩展信息 */ -@property(nonatomic, strong) NSString *extra; +@property(nonatomic, copy) NSString *extra; /*! 初始化公众服务图文信息条目 diff --git a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCRichContentMessage.h b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCRichContentMessage.h index 42b9d0bc..6a06e8ff 100644 --- a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCRichContentMessage.h +++ b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCRichContentMessage.h @@ -28,27 +28,27 @@ /*! 图文消息的标题 */ -@property(nonatomic, strong) NSString *title; +@property(nonatomic, copy) NSString *title; /*! 图文消息的内容摘要 */ -@property(nonatomic, strong) NSString *digest; +@property(nonatomic, copy) NSString *digest; /*! 图文消息图片URL */ -@property(nonatomic, strong) NSString *imageURL; +@property(nonatomic, copy) NSString *imageURL; /*! 图文消息中包含的需要跳转到的URL */ -@property(nonatomic, strong) NSString *url; +@property(nonatomic, copy) NSString *url; /*! 图文消息的扩展信息 */ -@property(nonatomic, strong) NSString *extra; +@property(nonatomic, copy) NSString *extra; /*! 初始化图文消息 diff --git a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCSightMessage.h b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCSightMessage.h index 5bad74d9..28248956 100644 --- a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCSightMessage.h +++ b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCSightMessage.h @@ -19,12 +19,12 @@ @discussion 小视频消息类,此消息会进行存储并计入未读消息数。 */ -@interface RCSightMessage : RCMessageContent +@interface RCSightMessage : RCMediaMessageContent /*! 本地URL地址 */ -@property(nonatomic, readonly) NSString *localPath; +@property(nonatomic, copy) NSString *localPath; /*! 网络URL地址 diff --git a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCStatusDefine.h b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCStatusDefine.h index d24db7e9..5d532357 100644 --- a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCStatusDefine.h +++ b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCStatusDefine.h @@ -221,7 +221,7 @@ typedef NS_ENUM(NSInteger, RCConnectErrorCode) { 调用过connect之后,只有在token错误或者被踢下线或者用户logout的情况下才需要再次调用connect。SDK会自动重连,不需要应用多次调用connect来保证连接性。 */ RC_CONNECTION_EXIST = 34001, - + /*! 开发者接口调用时传入的参数错误 @@ -686,7 +686,7 @@ typedef NS_ENUM(NSUInteger, RCMessagePersistent) { MessagePersistent_ISCOUNTED = 3, /*! - 在本地不存储,不计入未读数,并且如果对方不在线,服务器会直接丢弃该消息,对方如果之后再上线也不会再收到此消息(聊天室类型除外,此类消息聊天室会视为普通消息)。 + 在本地不存储,不计入未读数,并且如果对方不在线,服务器会直接丢弃该消息,对方如果之后再上线也不会再收到此消息。 @discussion 一般用于发送输入状态之类的消息,该类型消息的messageUId为nil。 */ diff --git a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCTextMessage.h b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCTextMessage.h index 08a74434..a5f5bb57 100644 --- a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCTextMessage.h +++ b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCTextMessage.h @@ -27,12 +27,12 @@ /*! 文本消息的内容 */ -@property(nonatomic, strong) NSString *content; +@property(nonatomic, copy) NSString *content; /*! 文本消息的附加信息 */ -@property(nonatomic, strong) NSString *extra; +@property(nonatomic, copy) NSString *extra; /*! 初始化文本消息 diff --git a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCUserInfo.h b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCUserInfo.h index 538d6b5d..0e19cb17 100644 --- a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCUserInfo.h +++ b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCUserInfo.h @@ -20,17 +20,22 @@ /*! 用户ID */ -@property(nonatomic, strong) NSString *userId; +@property(nonatomic, copy) NSString *userId; /*! 用户名称 */ -@property(nonatomic, strong) NSString *name; +@property(nonatomic, copy) NSString *name; /*! 用户头像的URL */ -@property(nonatomic, strong) NSString *portraitUri; +@property(nonatomic, copy) NSString *portraitUri; + +/** + 用户信息附加字段 + */ +@property(nonatomic, copy) NSString *extra; /*! 用户信息的初始化方法 diff --git a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCUserTypingStatus.h b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCUserTypingStatus.h index 93e5bbf3..a3cf47d1 100644 --- a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCUserTypingStatus.h +++ b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCUserTypingStatus.h @@ -16,7 +16,7 @@ /*! 当前正在输入的用户ID */ -@property(nonatomic, strong) NSString *userId; +@property(nonatomic, copy) NSString *userId; /*! 当前正在输入的消息类型名 @@ -25,7 +25,7 @@ contentType为用户当前正在编辑的消息类型名,即RCMessageContent中getObjectName的返回值。 如文本消息,应该传类型名"RC:TxtMsg"。 */ -@property(nonatomic, strong) NSString *contentType; +@property(nonatomic, copy) NSString *contentType; /*! 初始化用户输入状态对象 diff --git a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCVoiceMessage.h b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCVoiceMessage.h index 494e8b99..2b1dbd98 100644 --- a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCVoiceMessage.h +++ b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RCVoiceMessage.h @@ -37,7 +37,7 @@ /*! 语音消息的附加信息 */ -@property(nonatomic, strong) NSString *extra; +@property(nonatomic, copy) NSString *extra; /*! 初始化语音消息 diff --git a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RongIMLib.h b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RongIMLib.h index 3a58275e..98347b02 100644 --- a/ios-rongimdemo/framework/RongIMLib.framework/Headers/RongIMLib.h +++ b/ios-rongimdemo/framework/RongIMLib.framework/Headers/RongIMLib.h @@ -40,6 +40,7 @@ FOUNDATION_EXPORT const unsigned char RongIMLibVersionString[]; #import #import #import +#import #import #import #import diff --git a/ios-rongimdemo/framework/RongIMLib.framework/Info.plist b/ios-rongimdemo/framework/RongIMLib.framework/Info.plist index ad0fab1b..2c66297d 100644 Binary files a/ios-rongimdemo/framework/RongIMLib.framework/Info.plist and b/ios-rongimdemo/framework/RongIMLib.framework/Info.plist differ diff --git a/ios-rongimdemo/framework/RongIMLib.framework/RongIMLib b/ios-rongimdemo/framework/RongIMLib.framework/RongIMLib index b1a3032c..3fadb145 100644 Binary files a/ios-rongimdemo/framework/RongIMLib.framework/RongIMLib and b/ios-rongimdemo/framework/RongIMLib.framework/RongIMLib differ diff --git a/ios-rongimdemo/framework/RongRTCEngine.framework/RongRTCEngine b/ios-rongimdemo/framework/RongRTCEngine.framework/RongRTCEngine index 73b481a5..48912ee0 100644 Binary files a/ios-rongimdemo/framework/RongRTCEngine.framework/RongRTCEngine and b/ios-rongimdemo/framework/RongRTCEngine.framework/RongRTCEngine differ diff --git a/ios-rongimdemo/framework/RongSight.framework/RongSight b/ios-rongimdemo/framework/RongSight.framework/RongSight index 006674ad..24b2779e 100644 Binary files a/ios-rongimdemo/framework/RongSight.framework/RongSight and b/ios-rongimdemo/framework/RongSight.framework/RongSight differ diff --git a/ios-rongimdemo/framework/RongiFlyKit.framework/Info.plist b/ios-rongimdemo/framework/RongiFlyKit.framework/Info.plist index a14de080..a46c7a2c 100644 Binary files a/ios-rongimdemo/framework/RongiFlyKit.framework/Info.plist and b/ios-rongimdemo/framework/RongiFlyKit.framework/Info.plist differ diff --git a/ios-rongimdemo/framework/RongiFlyKit.framework/RongiFlyKit b/ios-rongimdemo/framework/RongiFlyKit.framework/RongiFlyKit index d5db6c0a..4114803a 100644 Binary files a/ios-rongimdemo/framework/RongiFlyKit.framework/RongiFlyKit and b/ios-rongimdemo/framework/RongiFlyKit.framework/RongiFlyKit differ diff --git "a/ios-rongimdemo/\350\236\215\344\272\221 Demo WatchKit App/Info.plist" "b/ios-rongimdemo/\350\236\215\344\272\221 Demo WatchKit App/Info.plist" index b2fb6235..7525c505 100644 --- "a/ios-rongimdemo/\350\236\215\344\272\221 Demo WatchKit App/Info.plist" +++ "b/ios-rongimdemo/\350\236\215\344\272\221 Demo WatchKit App/Info.plist" @@ -17,11 +17,11 @@ CFBundlePackageType APPL CFBundleShortVersionString - 2.9.8 Dev + 2.9.9 Dev CFBundleSignature ???? CFBundleVersion - 201811221848 + 201901091923 UISupportedInterfaceOrientations UIInterfaceOrientationPortrait diff --git "a/ios-rongimdemo/\350\236\215\344\272\221 Demo WatchKit Extension/Info.plist" "b/ios-rongimdemo/\350\236\215\344\272\221 Demo WatchKit Extension/Info.plist" index e032a46c..6d231f3e 100644 --- "a/ios-rongimdemo/\350\236\215\344\272\221 Demo WatchKit Extension/Info.plist" +++ "b/ios-rongimdemo/\350\236\215\344\272\221 Demo WatchKit Extension/Info.plist" @@ -17,11 +17,11 @@ CFBundlePackageType XPC! CFBundleShortVersionString - 2.9.8 Dev + 2.9.9 Dev CFBundleSignature ???? CFBundleVersion - 201811221848 + 201901091923 NSExtension NSExtensionAttributes