基础库

This commit is contained in:
WangQiang 2022-08-04 20:01:02 +08:00
parent e44ea96b43
commit fbf31f0104
14 changed files with 54 additions and 111 deletions

28
.vscode/settings.json vendored
View File

@ -75,7 +75,33 @@
"stack": "cpp", "stack": "cpp",
"__mutex_base": "cpp", "__mutex_base": "cpp",
"shared_mutex": "cpp", "shared_mutex": "cpp",
"valarray": "cpp" "valarray": "cpp",
"__bit_reference": "cpp",
"__debug": "cpp",
"__errc": "cpp",
"__functional_base": "cpp",
"__hash_table": "cpp",
"__locale": "cpp",
"__node_handle": "cpp",
"__nullptr": "cpp",
"__split_buffer": "cpp",
"__string": "cpp",
"__threading_support": "cpp",
"__tree": "cpp",
"__tuple": "cpp",
"algorithm": "cpp",
"codecvt": "cpp",
"fstream": "cpp",
"iomanip": "cpp",
"iterator": "cpp",
"locale": "cpp",
"random": "cpp",
"regex": "cpp",
"cinttypes": "cpp",
"csignal": "cpp",
"memory_resource": "cpp",
"future": "cpp",
"cfenv": "cpp"
}, },
"C_Cpp.errorSquiggles": "Disabled" "C_Cpp.errorSquiggles": "Disabled"
} }

View File

@ -58,6 +58,12 @@ cc_library(
srcs = ["GPUImageUtil.cpp"], srcs = ["GPUImageUtil.cpp"],
hdrs = ["GPUImageUtil.h"], hdrs = ["GPUImageUtil.h"],
visibility = ["//path/to/package:__pkg__"], visibility = ["//path/to/package:__pkg__"],
linkopts = select({
"//conditions:default": [],
"//mediapipe:android": [
"-llog",
],
}),
deps = select({ deps = select({
"//mediapipe:android": [], "//mediapipe:android": [],
"//mediapipe:apple": [], "//mediapipe:apple": [],

View File

@ -23,6 +23,7 @@
#import <OpenGLES/ES3/glext.h> #import <OpenGLES/ES3/glext.h>
#endif #endif
#include "Filter.hpp" #include "Filter.hpp"
#include "Context.hpp" #include "Context.hpp"
#include "GPUImageUtil.h" #include "GPUImageUtil.h"
@ -34,6 +35,7 @@ std::mutex Context::_mutex;
std::string Context::activatedContextKey = ""; std::string Context::activatedContextKey = "";
std::map<std::string, Context*> Context::_ContextCache; std::map<std::string, Context*> Context::_ContextCache;
#if defined(__APPLE__)
Context::Context(EAGLContext *context) Context::Context(EAGLContext *context)
:_curShaderProgram(0) :_curShaderProgram(0)
,isCapturingFrame(false) ,isCapturingFrame(false)
@ -44,16 +46,13 @@ Context::Context(EAGLContext *context)
,_eglContextIO(0) ,_eglContextIO(0)
,vertexArray(-1) { ,vertexArray(-1) {
_framebufferCache = new FramebufferCache(this); _framebufferCache = new FramebufferCache(this);
#if defined(__APPLE__)
_eglContext = context; _eglContext = context;
shareGroup = [_eglContext sharegroup]; shareGroup = [_eglContext sharegroup];
_eglContextIO = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES3 sharegroup:shareGroup]; _eglContextIO = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES3 sharegroup:shareGroup];
_eglOfflinerenderContext = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES3 sharegroup:shareGroup]; _eglOfflinerenderContext = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES3 sharegroup:shareGroup];
#endif
} }
#endif
Context::Context() Context::Context()
:_curShaderProgram(0) :_curShaderProgram(0)

View File

@ -30,8 +30,9 @@
#import <OpenGLES/EAGL.h> #import <OpenGLES/EAGL.h>
#import <OpenGLES/ES3/gl.h> #import <OpenGLES/ES3/gl.h>
#import <CoreVideo/CoreVideo.h> #import <CoreVideo/CoreVideo.h>
#else #elif defined(__ANDROID__)
#include <EGL/egl.h> #include <GLES3/gl3.h>
#include <GLES3/gl3ext.h>
#endif #endif

View File

@ -17,11 +17,14 @@
*/ */
#if defined(__APPLE__) #if defined(__APPLE__)
#import <Foundation/Foundation.h> #import <Foundation/Foundation.h>
#elif defined(__ANDROID__)
#include <android/log.h>
#endif #endif
#include "GPUImageUtil.h" #include "GPUImageUtil.h"
#define openLog 1 #define openLog 1
#define ANDROID_LOG_INFO 'gpu_log_info'
namespace Opipe { namespace Opipe {

View File

@ -18,7 +18,7 @@
#include <cmath> #include <cmath>
#include "GaussianBlurFilter.hpp" #include "GaussianBlurFilter.hpp"
#include "util.h" // #include "util.h"
NS_GI_BEGIN NS_GI_BEGIN

View File

@ -18,7 +18,6 @@
#include <cmath> #include <cmath>
#include "GaussianBlurMonoFilter.hpp" #include "GaussianBlurMonoFilter.hpp"
#include "util.h"
NS_GI_BEGIN NS_GI_BEGIN

View File

@ -13,7 +13,7 @@
#if defined(__APPLE__) #if defined(__APPLE__)
#include "GPUImageMacros.h" #include "GPUImageMacros.h"
#else #else
#include "GPUImage-x/GPUImageMacros.h" #include "GPUImageMacros.h"
#endif #endif
#if defined(__APPLE__) #if defined(__APPLE__)
#include <pthread.h> #include <pthread.h>

View File

@ -44,8 +44,6 @@ cc_library(
linkstatic = True, linkstatic = True,
deps = [ deps = [
"//mediapipe/render/module/common:olamodule_common_library", "//mediapipe/render/module/common:olamodule_common_library",
] + select({ ] + select({
"//mediapipe:apple": [ "//mediapipe:apple": [
"//mediapipe/render/core:core-ios", "//mediapipe/render/core:core-ios",
@ -53,6 +51,12 @@ cc_library(
"//mediapipe/framework/formats:landmark_cc_proto", "//mediapipe/framework/formats:landmark_cc_proto",
"//mediapipe/render/module/beauty/filters:BeautyFilters", "//mediapipe/render/module/beauty/filters:BeautyFilters",
], ],
"//mediapipe:android": [
"//mediapipe/render/core:core",
"//mediapipe/graphs/face_mesh:mobile_calculators",
"//mediapipe/framework/formats:landmark_cc_proto",
"//mediapipe/render/module/beauty/filters:BeautyFilters",
],
"//conditions:default": [ "//conditions:default": [
"//mediapipe/render/core:core", "//mediapipe/render/core:core",
"//mediapipe/graphs/face_mesh:mobile_calculators", "//mediapipe/graphs/face_mesh:mobile_calculators",

View File

@ -1,9 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.ola.olamera">
<uses-permission android:name="android.permission.CAMERA" />
<uses-sdk tools:overrideLibrary="androidx.camera.core,androidx.camera.camera2" />
</manifest>

View File

@ -1,11 +0,0 @@
//
// Created by jormin on 2021/4/3.
//
#include <jni.h>
extern "C" {
JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *jvm, void *reserved) {
return JNI_VERSION_1_6;
}
}

View File

@ -1,63 +0,0 @@
precision highp float;
precision highp int;
varying vec2 textureCoordinate;
uniform sampler2D inputImageTexture;
uniform float inputImageTextureWidth;
uniform float inputImageTextureHeight;
float cY(float x,float y){
vec4 c=texture2D(inputImageTexture,vec2(x,y));
return 0.183 * c.r + 0.614 * c.g + 0.062 * c.b + 0.0625;
}
vec4 cC(float x,float y,float dx,float dy){
vec4 c0=texture2D(inputImageTexture,vec2(x,y));
vec4 c1=texture2D(inputImageTexture,vec2(x+dx,y));
vec4 c2=texture2D(inputImageTexture,vec2(x,y+dy));
vec4 c3=texture2D(inputImageTexture,vec2(x+dx,y+dy));
return (c0+c1+c2+c3)/4.;
}
float cU(float x,float y,float dx,float dy){
vec4 c=cC(x,y,dx,dy);
return -0.101 * c.r - 0.339 * c.g + 0.439 * c.b + 0.5000;
}
float cV(float x,float y,float dx,float dy){
vec4 c=cC(x,y,dx,dy);
return 0.439 * c.r - 0.399 * c.g - 0.040 * c.b + 0.5000;
}
vec2 cPos(float t,float shiftx,float gy){
vec2 pos=vec2(floor(inputImageTextureWidth*textureCoordinate.x),floor(inputImageTextureHeight*gy));
return vec2(mod(pos.x*shiftx,inputImageTextureWidth),(pos.y*shiftx+floor(pos.x*shiftx/inputImageTextureWidth))*t);
}
vec4 calculateY(){
vec2 pos=cPos(1.,4.,textureCoordinate.y);
vec4 oColor=vec4(0);
float textureYPos=pos.y/inputImageTextureHeight;
oColor[0]=cY(pos.x/inputImageTextureWidth,textureYPos);
oColor[1]=cY((pos.x+1.)/inputImageTextureWidth,textureYPos);
oColor[2]=cY((pos.x+2.)/inputImageTextureWidth,textureYPos);
oColor[3]=cY((pos.x+3.)/inputImageTextureWidth,textureYPos);
return oColor;
}
vec4 calculateUV(float dx,float dy){
vec2 pos=cPos(2.,4.,textureCoordinate.y-0.2500);
vec4 oColor=vec4(0);
float textureYPos=pos.y/inputImageTextureHeight;
oColor[0]= cV(pos.x/inputImageTextureWidth,textureYPos,dx,dy);
oColor[1]= cU(pos.x/inputImageTextureWidth,textureYPos,dx,dy);
oColor[2]= cV((pos.x+2.)/inputImageTextureWidth,textureYPos,dx,dy);
oColor[3]= cU((pos.x+2.)/inputImageTextureWidth,textureYPos,dx,dy);
return oColor;
}
void main() {
if(textureCoordinate.y<0.2500){
gl_FragColor=calculateY();
}else if(textureCoordinate.y<0.3750){
gl_FragColor=calculateUV(1./inputImageTextureWidth,1./inputImageTextureHeight);
}else{
gl_FragColor=vec4(0,0,0,0);
}
}

View File

@ -1,11 +0,0 @@
attribute vec4 position;
attribute vec4 inputTextureCoordinate;
uniform mat4 mvp;
varying vec2 textureCoordinate;
void main()
{
gl_Position = mvp * position;
textureCoordinate = inputTextureCoordinate.xy;
}

View File

@ -42,7 +42,6 @@ cc_library(
"-Wno-shorten-64-to-32", "-Wno-shorten-64-to-32",
"-fobjc-arc", # enable reference-counting "-fobjc-arc", # enable reference-counting
], ],
"//conditions:default": ["-std=c++17"], "//conditions:default": ["-std=c++17"],
}), }),
alwayslink = True, alwayslink = True,