updae code of codecheck
Signed-off-by: tyBrave <tianyong13@huawei.com>
This commit is contained in:
parent
91f022516f
commit
57d773e582
|
@ -22,6 +22,41 @@
|
|||
#ifndef GPU_ImageETS_constant_shape_H
|
||||
#define GPU_ImageETS_constant_shape_H
|
||||
|
||||
|
||||
const int UNIFORM_TYPE_2FV_SIZE = 10;
|
||||
const int UNIFORM_TYPE_FV = 1;
|
||||
const int UNIFORM_TYPE_2FV = 2;
|
||||
const int UNIFORM_TYPE_3FV = 3;
|
||||
const int UNIFORM_TYPE_4FV = 4;
|
||||
const int UNIFORM_TYPE_2F = 21;
|
||||
|
||||
const int DEFAULT_ZERO = 0;
|
||||
const int DEFAULT_ONE = 1;
|
||||
const int DEFAULT_TWO = 2;
|
||||
const int DEFAULT_THREE = 3;
|
||||
const int DEFAULT_FOUR = 4;
|
||||
const float DEFAULT_ONE_HALF = 1.5;
|
||||
|
||||
const int UNIFORM_TYPE_ZERO = 0;
|
||||
const int UNIFORM_TYPE_ONE = 1;
|
||||
const int UNIFORM_TYPE_THREE = 3;
|
||||
const int UNIFORM_TYPE_FOUR = 4;
|
||||
|
||||
|
||||
const int SHADER_TYPE_BRIGHT = 0;
|
||||
const int SHADER_TYPE_CONTRAST = 1;
|
||||
const int SHADER_TYPE_INVERT = 2;
|
||||
const int SHADER_TYPE_KUWAHARA = 4;
|
||||
const int SHADER_TYPE_PIXELATION = 3;
|
||||
const int SHADER_TYPE_SKETCH = 6;
|
||||
const int SHADER_TYPE_SWIRL = 7;
|
||||
const int SHADER_TYPE_TOON = 8;
|
||||
const int SHADER_TYPE_VIGNETTE = 9;
|
||||
const int SHADER_TYPE_SEPIA = 5;
|
||||
const int SHADER_TYPE_GRAYSCALE = 10;
|
||||
const int SHADER_TYPE_BLUR = 12;
|
||||
|
||||
|
||||
const char vShaderStr[] =
|
||||
"#version 300 es \n"
|
||||
"layout(location = 0) in vec4 a_position; \n"
|
||||
|
|
|
@ -36,10 +36,10 @@
|
|||
#include "../util/NapiUtil.h"
|
||||
|
||||
|
||||
#define PARAM_TYPE_SHADER_INDEX 300
|
||||
const int PARAM_TYPE_SHADER_INDEX = 300;
|
||||
|
||||
#define VERTEX_POS_LOC 0
|
||||
#define TEXTURE_POS_LOC 1
|
||||
const int VERTEX_POS_LOC = 0;
|
||||
const int TEXTURE_POS_LOC = 1;
|
||||
|
||||
const int32_t STR_DEFAULT_SIZE = 1024;
|
||||
EGLRender *EGLRender::sInstance = nullptr;
|
||||
|
@ -162,14 +162,14 @@ napi_value EGLRender::GetPixelMapOfSurface(napi_env env, napi_callback_info info
|
|||
return nullptr;
|
||||
}
|
||||
|
||||
uint8_t* pixels = (uint8_t*) malloc(surfaceWidth * surfaceHeight * 4);
|
||||
uint8_t* pixels = (uint8_t*) malloc(surfaceWidth * surfaceHeight * DEFAULT_FOUR);
|
||||
|
||||
glPixelStorei(GL_PACK_ALIGNMENT, 1);
|
||||
glReadPixels(x, y, surfaceWidth, surfaceHeight, GL_RGBA, GL_UNSIGNED_BYTE, pixels);
|
||||
|
||||
NativeImageUtil::flip(&pixels, surfaceWidth, surfaceHeight);
|
||||
napi_value array;
|
||||
int byte_length = surfaceWidth * surfaceHeight * 4;
|
||||
int byte_length = surfaceWidth * surfaceHeight * DEFAULT_FOUR;
|
||||
if (!NativeImageUtil::CreateArrayBuffer(env, pixels, byte_length, &array)) {
|
||||
LOGI("gl--> GetPixelMapOfSurface error");
|
||||
}
|
||||
|
@ -217,12 +217,12 @@ napi_value EGLRender::setTypeArrayOfFloat(napi_env env, napi_callback_info info)
|
|||
napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
|
||||
|
||||
std::string locationContent;
|
||||
NapiUtil::JsValueToString(env, args[0], 1024, locationContent);
|
||||
NapiUtil::JsValueToString(env, args[0], STR_DEFAULT_SIZE, locationContent);
|
||||
|
||||
char* location = (char*)locationContent.c_str();
|
||||
|
||||
std::string content;
|
||||
NapiUtil::JsValueToString(env, args[1], 1024, content);
|
||||
NapiUtil::JsValueToString(env, args[1], STR_DEFAULT_SIZE, content);
|
||||
|
||||
char* key = (char*)content.c_str();
|
||||
|
||||
|
@ -240,15 +240,15 @@ napi_value EGLRender::setTypeArrayOfFloat(napi_env env, napi_callback_info info)
|
|||
int uniformType;
|
||||
|
||||
if (strcmp(key, "glUniform2fv") == 0) {
|
||||
uniformType = 2;
|
||||
uniformType = UNIFORM_TYPE_2FV;
|
||||
}else if (strcmp(key, "glUniform3fv") == 0) {
|
||||
uniformType = 3;
|
||||
uniformType = UNIFORM_TYPE_3FV;
|
||||
}else if (strcmp(key, "glUniform4fv") == 0) {
|
||||
uniformType = 4;
|
||||
uniformType = UNIFORM_TYPE_4FV;
|
||||
}else if (strcmp(key, "glUniform1fv") == 0) {
|
||||
uniformType = 1;
|
||||
uniformType = UNIFORM_TYPE_FV;
|
||||
}else if (strcmp(key, "glUniform2f") == 0) {
|
||||
uniformType = 21;
|
||||
uniformType = UNIFORM_TYPE_2F;
|
||||
}
|
||||
|
||||
EGLRender::GetInstance() -> GlUniformArray(location, value, uniformType);
|
||||
|
@ -261,7 +261,7 @@ napi_value EGLRender::setTypeArrayOfMatrix3f(napi_env env, napi_callback_info in
|
|||
napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
|
||||
|
||||
std::string locationContent;
|
||||
NapiUtil::JsValueToString(env, args[0], 1024, locationContent);
|
||||
NapiUtil::JsValueToString(env, args[0], STR_DEFAULT_SIZE, locationContent);
|
||||
|
||||
char* location = (char*)locationContent.c_str();
|
||||
|
||||
|
@ -276,7 +276,7 @@ napi_value EGLRender::setTypeArrayOfMatrix3f(napi_env env, napi_callback_info in
|
|||
|
||||
float* value = reinterpret_cast<float *>(buffer);
|
||||
|
||||
EGLRender::GetInstance() -> GlUniformMatrix(location, value, 3);
|
||||
EGLRender::GetInstance() -> GlUniformMatrix(location, value, UNIFORM_TYPE_THREE);
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
@ -287,7 +287,7 @@ napi_value EGLRender::setTypeArrayOfMatrix4f(napi_env env, napi_callback_info in
|
|||
napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
|
||||
|
||||
std::string locationContent;
|
||||
NapiUtil::JsValueToString(env, args[0], 1024, locationContent);
|
||||
NapiUtil::JsValueToString(env, args[0], STR_DEFAULT_SIZE, locationContent);
|
||||
|
||||
char* location = (char*)locationContent.c_str();
|
||||
|
||||
|
@ -302,7 +302,7 @@ napi_value EGLRender::setTypeArrayOfMatrix4f(napi_env env, napi_callback_info in
|
|||
|
||||
float* value = reinterpret_cast<float *>(buffer);
|
||||
|
||||
EGLRender::GetInstance() -> GlUniformMatrix(location, value, 4);
|
||||
EGLRender::GetInstance() -> GlUniformMatrix(location, value, UNIFORM_TYPE_FOUR);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
|
@ -313,13 +313,13 @@ napi_value EGLRender::RenderGlUniform1i(napi_env env, napi_callback_info info) {
|
|||
napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
|
||||
|
||||
std::string content;
|
||||
NapiUtil::JsValueToString(env, args[0], 1024, content);
|
||||
NapiUtil::JsValueToString(env, args[0], STR_DEFAULT_SIZE, content);
|
||||
uint32_t value;
|
||||
napi_status status = napi_get_value_uint32(env, args[1], &value);
|
||||
if (status != napi_ok) {
|
||||
return nullptr;
|
||||
}
|
||||
EGLRender::GetInstance() -> GlUniform((char*)content.c_str(), value, 0);
|
||||
EGLRender::GetInstance() -> GlUniform((char*)content.c_str(), value, UNIFORM_TYPE_ZERO);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
|
@ -330,13 +330,13 @@ napi_value EGLRender::RenderGlUniform1f(napi_env env, napi_callback_info info) {
|
|||
napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
|
||||
|
||||
std::string content;
|
||||
NapiUtil::JsValueToString(env, args[0], 1024, content);
|
||||
NapiUtil::JsValueToString(env, args[0], STR_DEFAULT_SIZE, content);
|
||||
double value;
|
||||
napi_status status = napi_get_value_double(env, args[1], &value);
|
||||
if (status != napi_ok) {
|
||||
return nullptr;
|
||||
}
|
||||
EGLRender::GetInstance() -> GlUniform((char*)content.c_str(), value, 1);
|
||||
EGLRender::GetInstance() -> GlUniform((char*)content.c_str(), value, UNIFORM_TYPE_ONE);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
|
@ -347,7 +347,7 @@ napi_value EGLRender::RenderGlUniform2fv(napi_env env, napi_callback_info info)
|
|||
napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
|
||||
|
||||
std::string content;
|
||||
NapiUtil::JsValueToString(env, args[0], 1024, content);
|
||||
NapiUtil::JsValueToString(env, args[0], STR_DEFAULT_SIZE, content);
|
||||
|
||||
double value;
|
||||
napi_status status = napi_get_value_double(env, args[1], &value);
|
||||
|
@ -363,7 +363,7 @@ napi_value EGLRender::RenderGlUniform2fv(napi_env env, napi_callback_info info)
|
|||
float vce2[2];
|
||||
vce2[0] = value;
|
||||
vce2[1] = value2;
|
||||
EGLRender::GetInstance() -> GlUniformArray((char*)content.c_str(), vce2, 10);
|
||||
EGLRender::GetInstance() -> GlUniformArray((char*)content.c_str(), vce2, UNIFORM_TYPE_2FV_SIZE);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
|
@ -418,33 +418,33 @@ void EGLRender::Init() {
|
|||
}
|
||||
|
||||
// Generate VBO Ids and load the VBOs width data
|
||||
glGenBuffers(3, m_VboIds);
|
||||
glBindBuffer(GL_ARRAY_BUFFER, m_VboIds[0]);
|
||||
glGenBuffers(DEFAULT_THREE, m_VboIds);
|
||||
glBindBuffer(GL_ARRAY_BUFFER, m_VboIds[DEFAULT_ZERO]);
|
||||
glBufferData(GL_ARRAY_BUFFER, sizeof(vVertices), vVertices, GL_STATIC_DRAW);
|
||||
|
||||
glBindBuffer(GL_ARRAY_BUFFER, m_VboIds[1]);
|
||||
glBindBuffer(GL_ARRAY_BUFFER, m_VboIds[DEFAULT_ONE]);
|
||||
glBufferData(GL_ARRAY_BUFFER, sizeof(vFboTexCoors), vTexCoors, GL_STATIC_DRAW);
|
||||
|
||||
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_VboIds[2]);
|
||||
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_VboIds[DEFAULT_TWO]);
|
||||
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW);
|
||||
|
||||
// Generate VAO Ids
|
||||
glGenVertexArrays(1, m_VaoIds);
|
||||
glGenVertexArrays(DEFAULT_ONE, m_VaoIds);
|
||||
|
||||
// FBO off screen rendering VAO
|
||||
glBindVertexArray(m_VaoIds[0]);
|
||||
glBindVertexArray(m_VaoIds[DEFAULT_ZERO]);
|
||||
|
||||
glBindBuffer(GL_ARRAY_BUFFER, m_VboIds[0]);
|
||||
glBindBuffer(GL_ARRAY_BUFFER, m_VboIds[DEFAULT_ZERO]);
|
||||
glEnableVertexAttribArray(VERTEX_POS_LOC);
|
||||
glVertexAttribPointer(VERTEX_POS_LOC, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(GLfloat), (const void *)0);
|
||||
glVertexAttribPointer(VERTEX_POS_LOC, DEFAULT_THREE, GL_FLOAT, GL_FALSE, DEFAULT_THREE * sizeof(GLfloat), (const void *)DEFAULT_ZERO);
|
||||
glBindBuffer(GL_ARRAY_BUFFER,GL_NONE);
|
||||
|
||||
glBindBuffer(GL_ARRAY_BUFFER, m_VboIds[1]);
|
||||
glBindBuffer(GL_ARRAY_BUFFER, m_VboIds[DEFAULT_ONE]);
|
||||
glEnableVertexAttribArray(TEXTURE_POS_LOC);
|
||||
glVertexAttribPointer(TEXTURE_POS_LOC, 2, GL_FLOAT, GL_FALSE, 2 * sizeof(GLfloat), (const void *)0);
|
||||
glVertexAttribPointer(TEXTURE_POS_LOC, DEFAULT_TWO, GL_FLOAT, GL_FALSE, DEFAULT_TWO * sizeof(GLfloat), (const void *)DEFAULT_ZERO);
|
||||
glBindBuffer(GL_ARRAY_BUFFER,GL_NONE);
|
||||
|
||||
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_VboIds[2]);
|
||||
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_VboIds[DEFAULT_TWO]);
|
||||
glBindVertexArray(GL_NONE);
|
||||
}
|
||||
|
||||
|
@ -514,6 +514,9 @@ int EGLRender::CreateGlEnv() {
|
|||
case EGL_BAD_MATCH:
|
||||
LOGI("gl-->::CreateGlesEnv Check window and EGLConfig attributes");
|
||||
break;
|
||||
default:
|
||||
LOGI("gl-->::CreateGlesEnv happen default error");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -559,7 +562,7 @@ void EGLRender::SetImageData(uint8_t *pData, int width, int height) {
|
|||
m_RenderImage.height = height;
|
||||
m_RenderImage.format = IMAGE_FORMAT_RGBA;
|
||||
NativeImageUtil::AllocNativeImage(&m_RenderImage);
|
||||
memcpy(m_RenderImage.ppPlane[0], pData, width * height *4);
|
||||
memcpy(m_RenderImage.ppPlane[0], pData, width * height * DEFAULT_FOUR);
|
||||
|
||||
glBindTexture(GL_TEXTURE_2D, m_ImageTextureId);
|
||||
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, m_RenderImage.width, m_RenderImage.height, 0, GL_RGBA, GL_UNSIGNED_BYTE, m_RenderImage.ppPlane[0]);
|
||||
|
@ -601,68 +604,71 @@ void EGLRender::SetIntParams(int paramType, int param) {
|
|||
const char* fShader[1];
|
||||
switch(param)
|
||||
{
|
||||
case 4:
|
||||
case SHADER_TYPE_KUWAHARA:
|
||||
{
|
||||
fShader[0] = fShaderStr3;
|
||||
break;
|
||||
}
|
||||
case 7:
|
||||
case SHADER_TYPE_SWIRL:
|
||||
{
|
||||
fShader[0] = swirlFShaderStr;
|
||||
break;
|
||||
}
|
||||
case 0:
|
||||
case SHADER_TYPE_BRIGHT:
|
||||
{
|
||||
fShader[0] = brightFShaderStr;
|
||||
break;
|
||||
}
|
||||
case 1:
|
||||
case SHADER_TYPE_CONTRAST:
|
||||
{
|
||||
fShader[0] = contrastFShaderStr;
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
case SHADER_TYPE_INVERT:
|
||||
{
|
||||
fShader[0] = invertFShaderStr;
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
case SHADER_TYPE_PIXELATION:
|
||||
{
|
||||
fShader[0] = pixelFShaderStr;
|
||||
break;
|
||||
}
|
||||
case 5:
|
||||
case SHADER_TYPE_SEPIA:
|
||||
{
|
||||
fShader[0] = colorMatrixFShaderStr;
|
||||
break;
|
||||
}
|
||||
case 6:
|
||||
case SHADER_TYPE_SKETCH:
|
||||
{
|
||||
fShader[0] = sketchShaderStr;
|
||||
vShader[0] = v3x3ShaderStr;
|
||||
break;
|
||||
}
|
||||
case 8:
|
||||
case SHADER_TYPE_TOON:
|
||||
{
|
||||
fShader[0] = toonFShaderStr;
|
||||
vShader[0] = v3x3ShaderStr;
|
||||
break;
|
||||
}
|
||||
case 9:
|
||||
case SHADER_TYPE_VIGNETTE:
|
||||
{
|
||||
fShader[0] = vignetteFShaderStr;
|
||||
break;
|
||||
}
|
||||
case 10:
|
||||
case SHADER_TYPE_GRAYSCALE:
|
||||
{
|
||||
fShader[0] = grayScaleShaderStr;
|
||||
break;
|
||||
}
|
||||
case 12:
|
||||
case SHADER_TYPE_BLUR:
|
||||
{
|
||||
fShader[0] = blurShaderStr;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
vShader[0] = vShaderStr;
|
||||
break;
|
||||
}
|
||||
|
||||
m_ProgramObj = GLUtils::CreateProgram(vShader[0], fShader[0], m_VertexShader,
|
||||
|
@ -708,56 +714,62 @@ void EGLRender::UseProgram() {
|
|||
}
|
||||
}
|
||||
|
||||
void EGLRender::GlUniform(char* strLocation, float value, int unType) {
|
||||
GLint location = glGetUniformLocation(m_ProgramObj, strLocation);
|
||||
void EGLRender::GlUniform(char* location, float value, int unType) {
|
||||
GLint ll = glGetUniformLocation(m_ProgramObj, location);
|
||||
switch(unType)
|
||||
{
|
||||
case 0:
|
||||
glUniform1i(location, (int)value);
|
||||
case UNIFORM_TYPE_ZERO:
|
||||
glUniform1i(ll, (int)value);
|
||||
break;
|
||||
case 1:
|
||||
glUniform1f(location, value);
|
||||
case UNIFORM_TYPE_ONE:
|
||||
glUniform1f(ll, value);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void EGLRender::GlUniformArray(char* strLocation, float* value, int unType) {
|
||||
GLint location = glGetUniformLocation(m_ProgramObj, strLocation);
|
||||
void EGLRender::GlUniformArray(char* location, float* value, int unType) {
|
||||
GLint ll = glGetUniformLocation(m_ProgramObj, location);
|
||||
switch(unType)
|
||||
{
|
||||
case 10:
|
||||
case UNIFORM_TYPE_2FV_SIZE:
|
||||
GLfloat vec2[2];
|
||||
vec2[0] = value[0] * m_RenderImage.width;
|
||||
vec2[1] = value[1] * m_RenderImage.height;
|
||||
glUniform2fv(location, 1, vec2);
|
||||
glUniform2fv(ll, 1, vec2);
|
||||
break;
|
||||
case 21:
|
||||
glUniform2f(location, value[0], value[1]);
|
||||
case UNIFORM_TYPE_2F:
|
||||
glUniform2f(ll, value[0], value[1]);
|
||||
break;
|
||||
case 1:
|
||||
glUniform1fv(location, 1, value);
|
||||
case UNIFORM_TYPE_FV:
|
||||
glUniform1fv(ll, 1, value);
|
||||
break;
|
||||
case 2:
|
||||
glUniform2fv(location, 1, value);
|
||||
case UNIFORM_TYPE_2FV:
|
||||
glUniform2fv(ll, 1, value);
|
||||
break;
|
||||
case 3:
|
||||
glUniform3fv(location, 1, value);
|
||||
case UNIFORM_TYPE_3FV:
|
||||
glUniform3fv(ll, 1, value);
|
||||
break;
|
||||
case 4:
|
||||
glUniform4fv(location, 1, value);
|
||||
case UNIFORM_TYPE_4FV:
|
||||
glUniform4fv(ll, 1, value);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void EGLRender::GlUniformMatrix(char* strLocation, float* value, int unType) {
|
||||
GLint location = glGetUniformLocation(m_ProgramObj, strLocation);
|
||||
void EGLRender::GlUniformMatrix(char* location, float* value, int unType) {
|
||||
GLint ll = glGetUniformLocation(m_ProgramObj, location);
|
||||
switch(unType)
|
||||
{
|
||||
case 3:
|
||||
glUniformMatrix3fv(location, 1, false,value);
|
||||
case UNIFORM_TYPE_THREE:
|
||||
glUniformMatrix3fv(ll, 1, false,value);
|
||||
break;
|
||||
case 4:
|
||||
glUniformMatrix4fv(location, 1, false, value);
|
||||
case UNIFORM_TYPE_FOUR:
|
||||
glUniformMatrix4fv(ll, 1, false, value);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -771,28 +783,28 @@ void EGLRender::UnInit() {
|
|||
|
||||
if(m_ImageTextureId)
|
||||
{
|
||||
glDeleteTextures(1, &m_ImageTextureId);
|
||||
glDeleteTextures(DEFAULT_ONE, &m_ImageTextureId);
|
||||
m_ImageTextureId = GL_NONE;
|
||||
}
|
||||
|
||||
if (m_FboTextureId)
|
||||
{
|
||||
glDeleteTextures(1, &m_FboTextureId);
|
||||
glDeleteTextures(DEFAULT_ONE, &m_FboTextureId);
|
||||
m_FboTextureId = GL_NONE;
|
||||
}
|
||||
|
||||
if (m_VboIds[0])
|
||||
if (m_VboIds[DEFAULT_ZERO])
|
||||
{
|
||||
glDeleteBuffers(3, m_VboIds);
|
||||
m_VboIds[0] = GL_NONE;
|
||||
m_VboIds[1] = GL_NONE;
|
||||
m_VboIds[2] = GL_NONE;
|
||||
glDeleteBuffers(DEFAULT_THREE, m_VboIds);
|
||||
m_VboIds[DEFAULT_ZERO] = GL_NONE;
|
||||
m_VboIds[DEFAULT_ONE] = GL_NONE;
|
||||
m_VboIds[DEFAULT_TWO] = GL_NONE;
|
||||
}
|
||||
|
||||
if (m_VaoIds[0])
|
||||
if (m_VaoIds[DEFAULT_ZERO])
|
||||
{
|
||||
glDeleteVertexArrays(1, m_VaoIds);
|
||||
m_VaoIds[0] = GL_NONE;
|
||||
glDeleteVertexArrays(DEFAULT_ONE, m_VaoIds);
|
||||
m_VaoIds[DEFAULT_ZERO] = GL_NONE;
|
||||
}
|
||||
|
||||
if (m_FboId)
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
#include <stdint.h>
|
||||
#include "NativeImage.h"
|
||||
|
||||
#define EGL_FEATURE_NUM 7
|
||||
const int EGL_FEATURE_NUM = 7;
|
||||
|
||||
class EGLRender {
|
||||
|
||||
|
|
|
@ -30,6 +30,7 @@
|
|||
#include <unistd.h>
|
||||
#include "DebugLog.h"
|
||||
#include <string.h>
|
||||
#include "constant/constant_shape.h"
|
||||
|
||||
#define IMAGE_FORMAT_RGBA 0x01
|
||||
#define IMAGE_FORMAT_NV21 0x02
|
||||
|
@ -55,16 +56,16 @@ struct NativeImage
|
|||
int width;
|
||||
int height;
|
||||
int format;
|
||||
uint8_t *ppPlane[3];
|
||||
uint8_t *ppPlane[DEFAULT_THREE];
|
||||
|
||||
NativeImage()
|
||||
{
|
||||
width = 0;
|
||||
height = 0;
|
||||
format = 0;
|
||||
ppPlane[0] = nullptr;
|
||||
ppPlane[1] = nullptr;
|
||||
ppPlane[2] = nullptr;
|
||||
width = DEFAULT_ZERO;
|
||||
height = DEFAULT_ZERO;
|
||||
format = DEFAULT_ZERO;
|
||||
ppPlane[DEFAULT_ZERO] = nullptr;
|
||||
ppPlane[DEFAULT_ONE] = nullptr;
|
||||
ppPlane[DEFAULT_TWO] = nullptr;
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -73,49 +74,49 @@ class NativeImageUtil
|
|||
public:
|
||||
static void AllocNativeImage(NativeImage *pImage)
|
||||
{
|
||||
if (pImage ->height ==0 || pImage ->width == 0) return;
|
||||
if (pImage ->height == DEFAULT_ZERO || pImage ->width == DEFAULT_ZERO) return;
|
||||
switch(pImage -> format)
|
||||
{
|
||||
case IMAGE_FORMAT_RGBA:
|
||||
{
|
||||
pImage->ppPlane[0] = static_cast<uint8_t *>(malloc(pImage->width * pImage ->height * 4));
|
||||
pImage->ppPlane[DEFAULT_ZERO] = static_cast<uint8_t *>(malloc(pImage->width * pImage ->height * DEFAULT_FOUR));
|
||||
}
|
||||
break;
|
||||
break;
|
||||
case IMAGE_FORMAT_YUYV:
|
||||
{
|
||||
pImage->ppPlane[0] = static_cast<uint8_t *>(malloc(pImage->width * pImage ->height * 2));
|
||||
pImage->ppPlane[DEFAULT_ZERO] = static_cast<uint8_t *>(malloc(pImage->width * pImage ->height * DEFAULT_TWO));
|
||||
}
|
||||
break;
|
||||
break;
|
||||
case IMAGE_FORMAT_NV12:
|
||||
case IMAGE_FORMAT_NV21:
|
||||
{
|
||||
pImage->ppPlane[0] = static_cast<uint8_t *>(malloc(pImage->width * pImage ->height * 1.5));
|
||||
pImage->ppPlane[1] = pImage->ppPlane[0] + pImage->width * pImage->height;
|
||||
pImage->ppPlane[DEFAULT_ZERO] = static_cast<uint8_t *>(malloc(pImage->width * pImage ->height * DEFAULT_ONE_HALF));
|
||||
pImage->ppPlane[DEFAULT_ONE] = pImage->ppPlane[DEFAULT_ZERO] + pImage->width * pImage->height;
|
||||
}
|
||||
break;
|
||||
break;
|
||||
case IMAGE_FORMAT_I420:
|
||||
{
|
||||
pImage->ppPlane[0] = static_cast<uint8_t *>(malloc(pImage->width * pImage ->height * 1.5));
|
||||
pImage->ppPlane[1] = pImage->ppPlane[0] + pImage->width * pImage->height;
|
||||
pImage->ppPlane[2] = pImage->ppPlane[1] + pImage->width * (pImage->height >> 2);
|
||||
pImage->ppPlane[DEFAULT_ZERO] = static_cast<uint8_t *>(malloc(pImage->width * pImage ->height * DEFAULT_ONE_HALF));
|
||||
pImage->ppPlane[DEFAULT_ONE] = pImage->ppPlane[DEFAULT_ZERO] + pImage->width * pImage->height;
|
||||
pImage->ppPlane[DEFAULT_TWO] = pImage->ppPlane[DEFAULT_ONE] + pImage->width * (pImage->height >> DEFAULT_TWO);
|
||||
}
|
||||
break;
|
||||
break;
|
||||
case IMAGE_FORMAT_GRAY:
|
||||
{
|
||||
pImage->ppPlane[0] = static_cast<uint8_t *>(malloc(pImage->width * pImage ->height));
|
||||
pImage->ppPlane[DEFAULT_ZERO] = static_cast<uint8_t *>(malloc(pImage->width * pImage ->height));
|
||||
}
|
||||
break;
|
||||
break;
|
||||
case IMAGE_FORMAT_I444:
|
||||
{
|
||||
pImage->ppPlane[0] = static_cast<uint8_t *>(malloc(pImage->width * pImage ->height * 3));
|
||||
pImage->ppPlane[DEFAULT_ZERO] = static_cast<uint8_t *>(malloc(pImage->width * pImage ->height * DEFAULT_THREE));
|
||||
}
|
||||
break;
|
||||
break;
|
||||
case IMAGE_FORMAT_P010:
|
||||
{
|
||||
pImage->ppPlane[0] = static_cast<uint8_t *>(malloc(pImage->width * pImage ->height * 3));
|
||||
pImage->ppPlane[1] = pImage->ppPlane[0] + pImage->width * pImage->height * 2;
|
||||
pImage->ppPlane[DEFAULT_ZERO] = static_cast<uint8_t *>(malloc(pImage->width * pImage ->height * DEFAULT_THREE));
|
||||
pImage->ppPlane[DEFAULT_ONE] = pImage->ppPlane[DEFAULT_ZERO] + pImage->width * pImage->height * DEFAULT_TWO;
|
||||
}
|
||||
break;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -123,22 +124,20 @@ class NativeImageUtil
|
|||
|
||||
static void FreeNativeImage(NativeImage *pImage)
|
||||
{
|
||||
if (pImage == nullptr || pImage->ppPlane[0] == nullptr) return;
|
||||
free(pImage->ppPlane[0]);
|
||||
pImage->ppPlane[0] = nullptr;
|
||||
pImage->ppPlane[1] = nullptr;
|
||||
pImage->ppPlane[2] = nullptr;
|
||||
if (pImage == nullptr || pImage->ppPlane[DEFAULT_ZERO] == nullptr) return;
|
||||
free(pImage->ppPlane[DEFAULT_ZERO]);
|
||||
pImage->ppPlane[DEFAULT_ZERO] = nullptr;
|
||||
pImage->ppPlane[DEFAULT_ONE] = nullptr;
|
||||
pImage->ppPlane[DEFAULT_TWO] = nullptr;
|
||||
}
|
||||
|
||||
static bool CreateArrayBuffer(napi_env env, void* src, size_t srcLen, napi_value *res)
|
||||
{
|
||||
if (src == nullptr || srcLen == 0)
|
||||
{
|
||||
if (src == nullptr || srcLen == DEFAULT_ZERO) {
|
||||
return false;
|
||||
}
|
||||
void *nativePtr = nullptr;
|
||||
if (napi_create_arraybuffer(env, srcLen, &nativePtr, res) != napi_ok || nativePtr == nullptr)
|
||||
{
|
||||
if (napi_create_arraybuffer(env, srcLen, &nativePtr, res) != napi_ok || nativePtr == nullptr) {
|
||||
return false;
|
||||
}
|
||||
memcpy(nativePtr, src, srcLen);
|
||||
|
@ -147,16 +146,16 @@ class NativeImageUtil
|
|||
|
||||
static void flip(uint8_t** buf, int width, int height)
|
||||
{
|
||||
int totalLength = width * height * 4;
|
||||
int oneLineLength = width * 4;
|
||||
int totalLength = width * height * DEFAULT_FOUR;
|
||||
int oneLineLength = width * DEFAULT_FOUR;
|
||||
uint8_t* tmp = (uint8_t*)malloc(totalLength);
|
||||
memcpy(tmp, *buf, totalLength);
|
||||
memset(*buf, 0, sizeof(uint8_t)*totalLength);
|
||||
for(int i = 0; i < height; i++) {
|
||||
memset(*buf, DEFAULT_ZERO, sizeof(uint8_t)*totalLength);
|
||||
for (int i = 0; i < height; i++) {
|
||||
memcpy(*buf + oneLineLength * i, tmp + totalLength - oneLineLength * (i+1), oneLineLength);
|
||||
}
|
||||
free(tmp);
|
||||
}
|
||||
};
|
||||
|
||||
#endif //GPU_ImageETS_NativeImage_H
|
||||
#endif // GPU_ImageETS_NativeImage_H
|
||||
|
|
32
package.json
32
package.json
|
@ -1,19 +1,19 @@
|
|||
{
|
||||
"license": "ISC",
|
||||
"devDependencies": {},
|
||||
"name": "imageknife",
|
||||
"ohos": {
|
||||
"org": "huawei",
|
||||
"directoryLevel": "project",
|
||||
"buildTool": "hvigor"
|
||||
"license":"ISC",
|
||||
"devDependencies":{},
|
||||
"name":"imageknife",
|
||||
"ohos":{
|
||||
"org":"huawei",
|
||||
"directoryLevel":"project",
|
||||
"buildTool":"hvigor"
|
||||
},
|
||||
"description": "example description",
|
||||
"repository": {},
|
||||
"version": "1.0.0",
|
||||
"dependencies": {
|
||||
"@ohos/hypium": "1.0.3",
|
||||
"@ohos/hvigor-ohos-plugin": "1.3.1",
|
||||
"hypium": "^1.0.0",
|
||||
"@ohos/hvigor": "1.3.1"
|
||||
"description":"example description",
|
||||
"repository":{},
|
||||
"version":"1.0.0",
|
||||
"dependencies":{
|
||||
"@ohos/hypium":"1.0.3",
|
||||
"@ohos/hvigor-ohos-plugin":"1.3.1",
|
||||
"hypium":"^1.0.0",
|
||||
"@ohos/hvigor":"1.3.1"
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue