基础库
This commit is contained in:
parent
e44ea96b43
commit
fbf31f0104
28
.vscode/settings.json
vendored
28
.vscode/settings.json
vendored
|
@ -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"
|
||||||
}
|
}
|
|
@ -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": [],
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,6 @@
|
||||||
|
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
#include "GaussianBlurMonoFilter.hpp"
|
#include "GaussianBlurMonoFilter.hpp"
|
||||||
#include "util.h"
|
|
||||||
|
|
||||||
NS_GI_BEGIN
|
NS_GI_BEGIN
|
||||||
|
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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",
|
||||||
|
|
|
@ -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>
|
|
|
@ -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;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -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);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -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;
|
|
||||||
}
|
|
|
@ -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,
|
||||||
|
|
Loading…
Reference in New Issue
Block a user