react-native-compressor 1.3.1 → 1.3.5-alpha
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/android/.gradle/6.1.1/executionHistory/executionHistory.lock +0 -0
- package/android/.gradle/6.1.1/fileChanges/last-build.bin +0 -0
- package/android/.gradle/6.1.1/fileHashes/fileHashes.lock +0 -0
- package/android/.gradle/6.1.1/gc.properties +0 -0
- package/android/.gradle/6.9/fileHashes/fileHashes.bin +0 -0
- package/android/.gradle/6.9/fileHashes/fileHashes.lock +0 -0
- package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
- package/android/.gradle/buildOutputCleanup/cache.properties +1 -1
- package/android/.gradle/checksums/checksums.lock +0 -0
- package/android/.gradle/checksums/md5-checksums.bin +0 -0
- package/android/.gradle/checksums/sha1-checksums.bin +0 -0
- package/android/.idea/jarRepositories.xml +10 -0
- package/android/.idea/libraries/Gradle__androidx_annotation_annotation_1_1_0.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_appcompat_appcompat_1_0_2_aar.xml +4 -0
- package/android/.idea/libraries/Gradle__androidx_arch_core_core_runtime_2_0_0_aar.xml +3 -0
- package/android/.idea/libraries/Gradle__androidx_asynclayoutinflater_asynclayoutinflater_1_0_0_aar.xml +3 -0
- package/android/.idea/libraries/Gradle__androidx_autofill_autofill_1_1_0_aar.xml +16 -0
- package/android/.idea/libraries/Gradle__androidx_coordinatorlayout_coordinatorlayout_1_0_0_aar.xml +4 -0
- package/android/.idea/libraries/Gradle__androidx_core_core_1_1_0_aar.xml +16 -0
- package/android/.idea/libraries/Gradle__androidx_cursoradapter_cursoradapter_1_0_0_aar.xml +3 -0
- package/android/.idea/libraries/Gradle__androidx_customview_customview_1_0_0_aar.xml +3 -0
- package/android/.idea/libraries/Gradle__androidx_documentfile_documentfile_1_0_0_aar.xml +3 -0
- package/android/.idea/libraries/Gradle__androidx_drawerlayout_drawerlayout_1_0_0_aar.xml +4 -0
- package/android/.idea/libraries/Gradle__androidx_fragment_fragment_1_0_0_aar.xml +4 -0
- package/android/.idea/libraries/Gradle__androidx_interpolator_interpolator_1_0_0_aar.xml +3 -0
- package/android/.idea/libraries/Gradle__androidx_legacy_legacy_support_core_ui_1_0_0_aar.xml +3 -0
- package/android/.idea/libraries/Gradle__androidx_legacy_legacy_support_core_utils_1_0_0_aar.xml +3 -0
- package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_2_0_0_aar.xml +3 -0
- package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_core_2_0_0_aar.xml +3 -0
- package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_runtime_2_0_0_aar.xml +3 -0
- package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_viewmodel_2_0_0_aar.xml +3 -0
- package/android/.idea/libraries/Gradle__androidx_loader_loader_1_0_0_aar.xml +3 -0
- package/android/.idea/libraries/Gradle__androidx_localbroadcastmanager_localbroadcastmanager_1_0_0_aar.xml +3 -0
- package/android/.idea/libraries/Gradle__androidx_print_print_1_0_0_aar.xml +4 -0
- package/android/.idea/libraries/Gradle__androidx_slidingpanelayout_slidingpanelayout_1_0_0_aar.xml +3 -0
- package/android/.idea/libraries/Gradle__androidx_swiperefreshlayout_swiperefreshlayout_1_0_0_aar.xml +4 -0
- package/android/.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_1_0_1_aar.xml +3 -0
- package/android/.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_animated_1_0_0_aar.xml +3 -0
- package/android/.idea/libraries/Gradle__androidx_versionedparcelable_versionedparcelable_1_1_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_viewpager_viewpager_1_0_0_aar.xml +3 -0
- package/android/.idea/libraries/Gradle__com_facebook_fbjni_fbjni_java_only_0_2_2.xml +13 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_drawee_2_5_0_aar.xml +15 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_fbcore_2_5_0_aar.xml +18 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_fresco_2_5_0_aar.xml +18 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_2_5_0_aar.xml +18 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_base_2_5_0_aar.xml +18 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_native_2_5_0_aar.xml +15 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_okhttp3_2_5_0_aar.xml +15 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_memory_type_ashmem_2_5_0_aar.xml +15 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_memory_type_java_2_5_0_aar.xml +15 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_memory_type_native_2_5_0_aar.xml +15 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_nativeimagefilters_2_5_0_aar.xml +15 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_nativeimagetranscoder_2_5_0_aar.xml +15 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_ui_common_2_5_0_aar.xml +15 -0
- package/android/.idea/libraries/{Gradle__com_facebook_infer_annotation_infer_annotation_0_11_2.xml → Gradle__com_facebook_infer_annotation_infer_annotation_0_18_0.xml} +4 -4
- package/android/.idea/libraries/Gradle__com_facebook_react_react_native_0_66_1_aar.xml +14 -0
- package/android/.idea/libraries/Gradle__com_facebook_soloader_annotation_0_10_1.xml +13 -0
- package/android/.idea/libraries/Gradle__com_facebook_soloader_nativeloader_0_10_1.xml +13 -0
- package/android/.idea/libraries/Gradle__com_facebook_soloader_soloader_0_10_1_aar.xml +15 -0
- package/android/.idea/libraries/Gradle__com_facebook_yoga_proguard_annotations_1_19_0.xml +13 -0
- package/android/.idea/libraries/Gradle__com_squareup_okhttp3_okhttp_4_9_1.xml +13 -0
- package/android/.idea/libraries/Gradle__com_squareup_okhttp3_okhttp_urlconnection_4_9_1.xml +13 -0
- package/android/.idea/libraries/Gradle__com_squareup_okio_okio_2_9_0.xml +13 -0
- package/android/.idea/libraries/Gradle__io_github_lizhangqu_coreprogress_1_0_2_aar.xml +5 -2
- package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_annotations_jvm_1_3_72.xml +13 -0
- package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_1_4_10.xml +13 -0
- package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_common_1_4_10.xml +13 -0
- package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_jdk7_1_4_10.xml +13 -0
- package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_jdk8_1_4_10.xml +13 -0
- package/android/.idea/modules/android.iml +34 -26
- package/android/build.gradle +6 -6
- package/android/src/main/java/com/.DS_Store +0 -0
- package/android/src/main/java/com/reactnativecompressor/.DS_Store +0 -0
- package/android/src/main/java/com/reactnativecompressor/Audio/AudioCompressor.java +3 -5
- package/android/src/main/java/com/reactnativecompressor/CompressorModule.java +1 -38
- package/android/src/main/java/com/reactnativecompressor/Utils/RealPathUtil.java +210 -0
- package/android/src/main/java/com/reactnativecompressor/Utils/Utils.java +9 -10
- package/android/src/main/java/com/reactnativecompressor/Video/.DS_Store +0 -0
- package/android/src/main/java/com/reactnativecompressor/Video/VideoModule.java +23 -8
- package/ios/Video/VideoCompressor.swift +5 -4
- package/lib/commonjs/Audio/index.js.map +1 -1
- package/lib/module/Audio/index.js.map +1 -1
- package/package.json +2 -1
- package/src/Audio/index.tsx +1 -1
- package/android/.idea/libraries/Gradle__androidx_annotation_annotation_1_0_0.xml +0 -13
- package/android/.idea/libraries/Gradle__androidx_core_core_1_0_1_aar.xml +0 -20
- package/android/.idea/libraries/Gradle__androidx_versionedparcelable_versionedparcelable_1_0_0_aar.xml +0 -16
- package/android/.idea/libraries/Gradle__com_facebook_fbjni_fbjni_java_only_0_0_3.xml +0 -13
- package/android/.idea/libraries/Gradle__com_facebook_fresco_drawee_2_0_0_aar.xml +0 -18
- package/android/.idea/libraries/Gradle__com_facebook_fresco_fbcore_2_0_0_aar.xml +0 -22
- package/android/.idea/libraries/Gradle__com_facebook_fresco_fresco_2_0_0_aar.xml +0 -22
- package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_2_0_0_aar.xml +0 -22
- package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_base_2_0_0_aar.xml +0 -22
- package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_okhttp3_2_0_0_aar.xml +0 -18
- package/android/.idea/libraries/Gradle__com_facebook_fresco_nativeimagefilters_2_0_0_aar.xml +0 -18
- package/android/.idea/libraries/Gradle__com_facebook_fresco_nativeimagetranscoder_2_0_0_aar.xml +0 -18
- package/android/.idea/libraries/Gradle__com_facebook_react_react_native_0_63_4_aar.xml +0 -22
- package/android/.idea/libraries/Gradle__com_facebook_soloader_annotation_0_9_0.xml +0 -13
- package/android/.idea/libraries/Gradle__com_facebook_soloader_nativeloader_0_9_0.xml +0 -13
- package/android/.idea/libraries/Gradle__com_facebook_soloader_soloader_0_9_0_aar.xml +0 -18
- package/android/.idea/libraries/Gradle__com_facebook_yoga_proguard_annotations_1_14_1.xml +0 -13
- package/android/.idea/libraries/Gradle__com_squareup_okhttp3_okhttp_3_12_12.xml +0 -13
- package/android/.idea/libraries/Gradle__com_squareup_okhttp3_okhttp_urlconnection_3_12_12.xml +0 -13
- package/android/.idea/libraries/Gradle__com_squareup_okio_okio_1_15_0.xml +0 -13
- package/android/.idea/libraries/Gradle__com_zolad_videoslimmer_1_0_0_aar.xml +0 -15
- package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_1_4_0.xml +0 -13
- package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_common_1_4_0.xml +0 -13
- package/android/src/main/java/com/reactnativecompressor/Video/videoslimmer/VideoSlimEncoder.java +0 -629
- package/android/src/main/java/com/reactnativecompressor/Video/videoslimmer/VideoSlimTask.java +0 -59
- package/android/src/main/java/com/reactnativecompressor/Video/videoslimmer/VideoSlimmer.java +0 -20
- package/android/src/main/java/com/reactnativecompressor/Video/videoslimmer/listner/SlimProgressListener.java +0 -6
- package/android/src/main/java/com/reactnativecompressor/Video/videoslimmer/muxer/CodecInputSurface.java +0 -202
- package/android/src/main/java/com/reactnativecompressor/Video/videoslimmer/render/TextureRenderer.java +0 -196
package/android/src/main/java/com/reactnativecompressor/Video/videoslimmer/VideoSlimmer.java
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
package com.reactnativecompressor.Video.videoslimmer;
|
|
2
|
-
|
|
3
|
-
public class VideoSlimmer {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
public static VideoSlimTask convertVideo(String srcPath, String destPath, int outputWidth, int outputHeight, int bitrate, ProgressListener listener) {
|
|
7
|
-
VideoSlimTask task = new VideoSlimTask(listener);
|
|
8
|
-
task.execute(srcPath, destPath, outputWidth, outputHeight, bitrate);
|
|
9
|
-
return task;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
public static interface ProgressListener {
|
|
13
|
-
|
|
14
|
-
void onStart();
|
|
15
|
-
void onFinish(boolean result);
|
|
16
|
-
void onProgress(float progress);
|
|
17
|
-
void onError(String errorMessage);
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
}
|
|
@@ -1,202 +0,0 @@
|
|
|
1
|
-
package com.reactnativecompressor.Video.videoslimmer.muxer;
|
|
2
|
-
|
|
3
|
-
import android.graphics.SurfaceTexture;
|
|
4
|
-
import android.opengl.EGL14;
|
|
5
|
-
import android.opengl.EGLConfig;
|
|
6
|
-
import android.opengl.EGLContext;
|
|
7
|
-
import android.opengl.EGLDisplay;
|
|
8
|
-
import android.opengl.EGLExt;
|
|
9
|
-
import android.opengl.EGLSurface;
|
|
10
|
-
import android.view.Surface;
|
|
11
|
-
|
|
12
|
-
import com.reactnativecompressor.Video.videoslimmer.render.TextureRenderer;
|
|
13
|
-
|
|
14
|
-
import java.nio.ByteBuffer;
|
|
15
|
-
|
|
16
|
-
public class CodecInputSurface implements SurfaceTexture.OnFrameAvailableListener {
|
|
17
|
-
private static final int EGL_RECORDABLE_ANDROID = 0x3142;
|
|
18
|
-
|
|
19
|
-
private EGLDisplay mEGLDisplay = EGL14.EGL_NO_DISPLAY;
|
|
20
|
-
private EGLContext mEGLContext = EGL14.EGL_NO_CONTEXT;
|
|
21
|
-
private EGLSurface mEGLSurface = EGL14.EGL_NO_SURFACE;
|
|
22
|
-
private SurfaceTexture mSurfaceTexture;
|
|
23
|
-
private Surface mSurface;
|
|
24
|
-
private Surface mDrawSurface;
|
|
25
|
-
private final Object mFrameSyncObject = new Object();
|
|
26
|
-
private boolean mFrameAvailable;
|
|
27
|
-
private ByteBuffer mPixelBuf;
|
|
28
|
-
private TextureRenderer mTextureRender;
|
|
29
|
-
/**
|
|
30
|
-
* Creates a CodecInputSurface from a Surface.
|
|
31
|
-
*/
|
|
32
|
-
public CodecInputSurface(Surface surface) {
|
|
33
|
-
if (surface == null) {
|
|
34
|
-
throw new NullPointerException();
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
mSurface = surface;
|
|
38
|
-
eglSetup();
|
|
39
|
-
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
public void createRender() {
|
|
43
|
-
mTextureRender = new TextureRenderer();
|
|
44
|
-
mTextureRender.surfaceCreated();
|
|
45
|
-
mSurfaceTexture = new SurfaceTexture(mTextureRender.getTextureId());
|
|
46
|
-
mSurfaceTexture.setOnFrameAvailableListener(this);
|
|
47
|
-
mDrawSurface = new Surface(mSurfaceTexture);
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
/**
|
|
51
|
-
* Prepares EGL. We want a GLES 2.0 context and a surface that supports recording.
|
|
52
|
-
*/
|
|
53
|
-
private void eglSetup() {
|
|
54
|
-
mEGLDisplay = EGL14.eglGetDisplay(EGL14.EGL_DEFAULT_DISPLAY);
|
|
55
|
-
if (mEGLDisplay == EGL14.EGL_NO_DISPLAY) {
|
|
56
|
-
throw new RuntimeException("unable to get EGL14 display");
|
|
57
|
-
}
|
|
58
|
-
int[] version = new int[2];
|
|
59
|
-
if (!EGL14.eglInitialize(mEGLDisplay, version, 0, version, 1)) {
|
|
60
|
-
throw new RuntimeException("unable to initialize EGL14");
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
// Configure EGL for recording and OpenGL ES 2.0.
|
|
64
|
-
int[] attribList = {
|
|
65
|
-
EGL14.EGL_RED_SIZE, 8,
|
|
66
|
-
EGL14.EGL_GREEN_SIZE, 8,
|
|
67
|
-
EGL14.EGL_BLUE_SIZE, 8,
|
|
68
|
-
EGL14.EGL_ALPHA_SIZE, 8,
|
|
69
|
-
EGL14.EGL_RENDERABLE_TYPE, EGL14.EGL_OPENGL_ES2_BIT,
|
|
70
|
-
EGL_RECORDABLE_ANDROID, 1,
|
|
71
|
-
EGL14.EGL_NONE
|
|
72
|
-
};
|
|
73
|
-
EGLConfig[] configs = new EGLConfig[1];
|
|
74
|
-
int[] numConfigs = new int[1];
|
|
75
|
-
EGL14.eglChooseConfig(mEGLDisplay, attribList, 0, configs, 0, configs.length,
|
|
76
|
-
numConfigs, 0);
|
|
77
|
-
checkEglError("eglCreateContext RGB888+recordable ES2");
|
|
78
|
-
|
|
79
|
-
// Configure context for OpenGL ES 2.0.
|
|
80
|
-
int[] attrib_list = {
|
|
81
|
-
EGL14.EGL_CONTEXT_CLIENT_VERSION, 2,
|
|
82
|
-
EGL14.EGL_NONE
|
|
83
|
-
};
|
|
84
|
-
mEGLContext = EGL14.eglCreateContext(mEGLDisplay, configs[0], EGL14.EGL_NO_CONTEXT,
|
|
85
|
-
attrib_list, 0);
|
|
86
|
-
checkEglError("eglCreateContext");
|
|
87
|
-
|
|
88
|
-
// Create a window surface, and attach it to the Surface we received.
|
|
89
|
-
int[] surfaceAttribs = {
|
|
90
|
-
EGL14.EGL_NONE
|
|
91
|
-
};
|
|
92
|
-
mEGLSurface = EGL14.eglCreateWindowSurface(mEGLDisplay, configs[0], mSurface,
|
|
93
|
-
surfaceAttribs, 0);
|
|
94
|
-
checkEglError("eglCreateWindowSurface");
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
public SurfaceTexture getSurfaceTexture() {
|
|
98
|
-
return mSurfaceTexture;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
public void changeFragmentShader(String fragmentShader) {
|
|
102
|
-
mTextureRender.changeFragmentShader(fragmentShader);
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
public void awaitNewImage() {
|
|
108
|
-
final int TIMEOUT_MS = 5000;
|
|
109
|
-
synchronized (mFrameSyncObject) {
|
|
110
|
-
while (!mFrameAvailable) {
|
|
111
|
-
try {
|
|
112
|
-
mFrameSyncObject.wait(TIMEOUT_MS);
|
|
113
|
-
if (!mFrameAvailable) {
|
|
114
|
-
throw new RuntimeException("Surface frame wait timed out");
|
|
115
|
-
}
|
|
116
|
-
} catch (InterruptedException ie) {
|
|
117
|
-
throw new RuntimeException(ie);
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
mFrameAvailable = false;
|
|
121
|
-
}
|
|
122
|
-
mTextureRender.checkGlError("before updateTexImage");
|
|
123
|
-
mSurfaceTexture.updateTexImage();
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
public void drawImage() {
|
|
127
|
-
mTextureRender.drawFrame(mSurfaceTexture);
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
@Override
|
|
131
|
-
public void onFrameAvailable(SurfaceTexture st) {
|
|
132
|
-
synchronized (mFrameSyncObject) {
|
|
133
|
-
if (mFrameAvailable) {
|
|
134
|
-
throw new RuntimeException("mFrameAvailable already set, frame could be dropped");
|
|
135
|
-
}
|
|
136
|
-
mFrameAvailable = true;
|
|
137
|
-
mFrameSyncObject.notifyAll();
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
public Surface getSurface() {
|
|
142
|
-
return mDrawSurface;
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
/**
|
|
146
|
-
* Discards all resources held by this class, notably the EGL context. Also releases the
|
|
147
|
-
* Surface that was passed to our constructor.
|
|
148
|
-
*/
|
|
149
|
-
public void release() {
|
|
150
|
-
if (mEGLDisplay != EGL14.EGL_NO_DISPLAY) {
|
|
151
|
-
EGL14.eglMakeCurrent(mEGLDisplay, EGL14.EGL_NO_SURFACE, EGL14.EGL_NO_SURFACE,
|
|
152
|
-
EGL14.EGL_NO_CONTEXT);
|
|
153
|
-
EGL14.eglDestroySurface(mEGLDisplay, mEGLSurface);
|
|
154
|
-
EGL14.eglDestroyContext(mEGLDisplay, mEGLContext);
|
|
155
|
-
EGL14.eglReleaseThread();
|
|
156
|
-
EGL14.eglTerminate(mEGLDisplay);
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
mSurface.release();
|
|
160
|
-
|
|
161
|
-
mEGLDisplay = EGL14.EGL_NO_DISPLAY;
|
|
162
|
-
mEGLContext = EGL14.EGL_NO_CONTEXT;
|
|
163
|
-
mEGLSurface = EGL14.EGL_NO_SURFACE;
|
|
164
|
-
|
|
165
|
-
mSurface = null;
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
/**
|
|
169
|
-
* Makes our EGL context and surface current.
|
|
170
|
-
*/
|
|
171
|
-
public void makeCurrent() {
|
|
172
|
-
EGL14.eglMakeCurrent(mEGLDisplay, mEGLSurface, mEGLSurface, mEGLContext);
|
|
173
|
-
checkEglError("eglMakeCurrent");
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
/**
|
|
177
|
-
* Calls eglSwapBuffers. Use this to "publish" the current frame.
|
|
178
|
-
*/
|
|
179
|
-
public boolean swapBuffers() {
|
|
180
|
-
boolean result = EGL14.eglSwapBuffers(mEGLDisplay, mEGLSurface);
|
|
181
|
-
checkEglError("eglSwapBuffers");
|
|
182
|
-
return result;
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
/**
|
|
186
|
-
* Sends the presentation time stamp to EGL. Time is expressed in nanoseconds.
|
|
187
|
-
*/
|
|
188
|
-
public void setPresentationTime(long nsecs) {
|
|
189
|
-
EGLExt.eglPresentationTimeANDROID(mEGLDisplay, mEGLSurface, nsecs);
|
|
190
|
-
checkEglError("eglPresentationTimeANDROID");
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
/**
|
|
194
|
-
* Checks for EGL errors. Throws an exception if one is found.
|
|
195
|
-
*/
|
|
196
|
-
private void checkEglError(String msg) {
|
|
197
|
-
int error;
|
|
198
|
-
if ((error = EGL14.eglGetError()) != EGL14.EGL_SUCCESS) {
|
|
199
|
-
throw new RuntimeException(msg + ": EGL error: 0x" + Integer.toHexString(error));
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
}
|
|
@@ -1,196 +0,0 @@
|
|
|
1
|
-
package com.reactnativecompressor.Video.videoslimmer.render;
|
|
2
|
-
|
|
3
|
-
import android.graphics.SurfaceTexture;
|
|
4
|
-
import android.opengl.GLES11Ext;
|
|
5
|
-
import android.opengl.GLES20;
|
|
6
|
-
import android.opengl.Matrix;
|
|
7
|
-
|
|
8
|
-
import java.nio.ByteBuffer;
|
|
9
|
-
import java.nio.ByteOrder;
|
|
10
|
-
import java.nio.FloatBuffer;
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
public class TextureRenderer {
|
|
14
|
-
|
|
15
|
-
private static final int FLOAT_SIZE_BYTES = 4;
|
|
16
|
-
private static final int TRIANGLE_VERTICES_DATA_STRIDE_BYTES = 5 * FLOAT_SIZE_BYTES;
|
|
17
|
-
private static final int TRIANGLE_VERTICES_DATA_POS_OFFSET = 0;
|
|
18
|
-
private static final int TRIANGLE_VERTICES_DATA_UV_OFFSET = 3;
|
|
19
|
-
private static final float[] mTriangleVerticesData = {
|
|
20
|
-
-1.0f, -1.0f, 0, 0.f, 0.f,
|
|
21
|
-
1.0f, -1.0f, 0, 1.f, 0.f,
|
|
22
|
-
-1.0f, 1.0f, 0, 0.f, 1.f,
|
|
23
|
-
1.0f, 1.0f, 0, 1.f, 1.f,
|
|
24
|
-
};
|
|
25
|
-
private FloatBuffer mTriangleVertices;
|
|
26
|
-
|
|
27
|
-
private static final String VERTEX_SHADER =
|
|
28
|
-
"uniform mat4 uMVPMatrix;\n" +
|
|
29
|
-
"uniform mat4 uSTMatrix;\n" +
|
|
30
|
-
"attribute vec4 aPosition;\n" +
|
|
31
|
-
"attribute vec4 aTextureCoord;\n" +
|
|
32
|
-
"varying vec2 vTextureCoord;\n" +
|
|
33
|
-
"void main() {\n" +
|
|
34
|
-
" gl_Position = uMVPMatrix * aPosition;\n" +
|
|
35
|
-
" vTextureCoord = (uSTMatrix * aTextureCoord).xy;\n" +
|
|
36
|
-
"}\n";
|
|
37
|
-
|
|
38
|
-
private static final String FRAGMENT_SHADER =
|
|
39
|
-
"#extension GL_OES_EGL_image_external : require\n" +
|
|
40
|
-
"precision mediump float;\n" +
|
|
41
|
-
"varying vec2 vTextureCoord;\n" +
|
|
42
|
-
"uniform samplerExternalOES sTexture;\n" +
|
|
43
|
-
"void main() {\n" +
|
|
44
|
-
" gl_FragColor = texture2D(sTexture, vTextureCoord);\n" +
|
|
45
|
-
"}\n";
|
|
46
|
-
|
|
47
|
-
private float[] mMVPMatrix = new float[16];
|
|
48
|
-
private float[] mSTMatrix = new float[16];
|
|
49
|
-
private int mProgram;
|
|
50
|
-
private int mTextureID = -1234567;
|
|
51
|
-
private int muMVPMatrixHandle;
|
|
52
|
-
private int muSTMatrixHandle;
|
|
53
|
-
private int maPositionHandle;
|
|
54
|
-
private int maTextureHandle;
|
|
55
|
-
private int rotationAngle = 0;
|
|
56
|
-
|
|
57
|
-
public TextureRenderer() {
|
|
58
|
-
|
|
59
|
-
mTriangleVertices = ByteBuffer.allocateDirect(mTriangleVerticesData.length * FLOAT_SIZE_BYTES).order(ByteOrder.nativeOrder()).asFloatBuffer();
|
|
60
|
-
mTriangleVertices.put(mTriangleVerticesData).position(0);
|
|
61
|
-
Matrix.setIdentityM(mSTMatrix, 0);
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
public int getTextureId() {
|
|
65
|
-
return mTextureID;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
public void drawFrame(SurfaceTexture st) {
|
|
69
|
-
checkGlError("onDrawFrame start");
|
|
70
|
-
st.getTransformMatrix(mSTMatrix);
|
|
71
|
-
|
|
72
|
-
// if (invert) {
|
|
73
|
-
// mSTMatrix[5] = -mSTMatrix[5];
|
|
74
|
-
// mSTMatrix[13] = 1.0f - mSTMatrix[13];
|
|
75
|
-
// }
|
|
76
|
-
|
|
77
|
-
GLES20.glUseProgram(mProgram);
|
|
78
|
-
checkGlError("glUseProgram");
|
|
79
|
-
GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
|
|
80
|
-
GLES20.glBindTexture(GLES11Ext.GL_TEXTURE_EXTERNAL_OES, mTextureID);
|
|
81
|
-
mTriangleVertices.position(TRIANGLE_VERTICES_DATA_POS_OFFSET);
|
|
82
|
-
GLES20.glVertexAttribPointer(maPositionHandle, 3, GLES20.GL_FLOAT, false, TRIANGLE_VERTICES_DATA_STRIDE_BYTES, mTriangleVertices);
|
|
83
|
-
checkGlError("glVertexAttribPointer maPosition");
|
|
84
|
-
GLES20.glEnableVertexAttribArray(maPositionHandle);
|
|
85
|
-
checkGlError("glEnableVertexAttribArray maPositionHandle");
|
|
86
|
-
mTriangleVertices.position(TRIANGLE_VERTICES_DATA_UV_OFFSET);
|
|
87
|
-
GLES20.glVertexAttribPointer(maTextureHandle, 2, GLES20.GL_FLOAT, false, TRIANGLE_VERTICES_DATA_STRIDE_BYTES, mTriangleVertices);
|
|
88
|
-
checkGlError("glVertexAttribPointer maTextureHandle");
|
|
89
|
-
GLES20.glEnableVertexAttribArray(maTextureHandle);
|
|
90
|
-
checkGlError("glEnableVertexAttribArray maTextureHandle");
|
|
91
|
-
GLES20.glUniformMatrix4fv(muSTMatrixHandle, 1, false, mSTMatrix, 0);
|
|
92
|
-
GLES20.glUniformMatrix4fv(muMVPMatrixHandle, 1, false, mMVPMatrix, 0);
|
|
93
|
-
GLES20.glDrawArrays(GLES20.GL_TRIANGLE_STRIP, 0, 4);
|
|
94
|
-
checkGlError("glDrawArrays");
|
|
95
|
-
GLES20.glFinish();
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
public void surfaceCreated() {
|
|
99
|
-
mProgram = createProgram(VERTEX_SHADER, FRAGMENT_SHADER);
|
|
100
|
-
if (mProgram == 0) {
|
|
101
|
-
throw new RuntimeException("failed creating program");
|
|
102
|
-
}
|
|
103
|
-
maPositionHandle = GLES20.glGetAttribLocation(mProgram, "aPosition");
|
|
104
|
-
checkGlError("glGetAttribLocation aPosition");
|
|
105
|
-
if (maPositionHandle == -1) {
|
|
106
|
-
throw new RuntimeException("Could not get attrib location for aPosition");
|
|
107
|
-
}
|
|
108
|
-
maTextureHandle = GLES20.glGetAttribLocation(mProgram, "aTextureCoord");
|
|
109
|
-
checkGlError("glGetAttribLocation aTextureCoord");
|
|
110
|
-
if (maTextureHandle == -1) {
|
|
111
|
-
throw new RuntimeException("Could not get attrib location for aTextureCoord");
|
|
112
|
-
}
|
|
113
|
-
muMVPMatrixHandle = GLES20.glGetUniformLocation(mProgram, "uMVPMatrix");
|
|
114
|
-
checkGlError("glGetUniformLocation uMVPMatrix");
|
|
115
|
-
if (muMVPMatrixHandle == -1) {
|
|
116
|
-
throw new RuntimeException("Could not get attrib location for uMVPMatrix");
|
|
117
|
-
}
|
|
118
|
-
muSTMatrixHandle = GLES20.glGetUniformLocation(mProgram, "uSTMatrix");
|
|
119
|
-
checkGlError("glGetUniformLocation uSTMatrix");
|
|
120
|
-
if (muSTMatrixHandle == -1) {
|
|
121
|
-
throw new RuntimeException("Could not get attrib location for uSTMatrix");
|
|
122
|
-
}
|
|
123
|
-
int[] textures = new int[1];
|
|
124
|
-
GLES20.glGenTextures(1, textures, 0);
|
|
125
|
-
mTextureID = textures[0];
|
|
126
|
-
GLES20.glBindTexture(GLES11Ext.GL_TEXTURE_EXTERNAL_OES, mTextureID);
|
|
127
|
-
checkGlError("glBindTexture mTextureID");
|
|
128
|
-
GLES20.glTexParameterf(GLES11Ext.GL_TEXTURE_EXTERNAL_OES, GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_NEAREST);
|
|
129
|
-
GLES20.glTexParameterf(GLES11Ext.GL_TEXTURE_EXTERNAL_OES, GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_LINEAR);
|
|
130
|
-
GLES20.glTexParameteri(GLES11Ext.GL_TEXTURE_EXTERNAL_OES, GLES20.GL_TEXTURE_WRAP_S, GLES20.GL_CLAMP_TO_EDGE);
|
|
131
|
-
GLES20.glTexParameteri(GLES11Ext.GL_TEXTURE_EXTERNAL_OES, GLES20.GL_TEXTURE_WRAP_T, GLES20.GL_CLAMP_TO_EDGE);
|
|
132
|
-
checkGlError("glTexParameter");
|
|
133
|
-
|
|
134
|
-
Matrix.setIdentityM(mMVPMatrix, 0);
|
|
135
|
-
if (rotationAngle != 0) {
|
|
136
|
-
Matrix.rotateM(mMVPMatrix, 0, rotationAngle, 0, 0, 1);
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
public void changeFragmentShader(String fragmentShader) {
|
|
141
|
-
GLES20.glDeleteProgram(mProgram);
|
|
142
|
-
mProgram = createProgram(VERTEX_SHADER, fragmentShader);
|
|
143
|
-
if (mProgram == 0) {
|
|
144
|
-
throw new RuntimeException("failed creating program");
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
private int loadShader(int shaderType, String source) {
|
|
149
|
-
int shader = GLES20.glCreateShader(shaderType);
|
|
150
|
-
checkGlError("glCreateShader type=" + shaderType);
|
|
151
|
-
GLES20.glShaderSource(shader, source);
|
|
152
|
-
GLES20.glCompileShader(shader);
|
|
153
|
-
int[] compiled = new int[1];
|
|
154
|
-
GLES20.glGetShaderiv(shader, GLES20.GL_COMPILE_STATUS, compiled, 0);
|
|
155
|
-
if (compiled[0] == 0) {
|
|
156
|
-
GLES20.glDeleteShader(shader);
|
|
157
|
-
shader = 0;
|
|
158
|
-
}
|
|
159
|
-
return shader;
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
private int createProgram(String vertexSource, String fragmentSource) {
|
|
163
|
-
int vertexShader = loadShader(GLES20.GL_VERTEX_SHADER, vertexSource);
|
|
164
|
-
if (vertexShader == 0) {
|
|
165
|
-
return 0;
|
|
166
|
-
}
|
|
167
|
-
int pixelShader = loadShader(GLES20.GL_FRAGMENT_SHADER, fragmentSource);
|
|
168
|
-
if (pixelShader == 0) {
|
|
169
|
-
return 0;
|
|
170
|
-
}
|
|
171
|
-
int program = GLES20.glCreateProgram();
|
|
172
|
-
checkGlError("glCreateProgram");
|
|
173
|
-
if (program == 0) {
|
|
174
|
-
return 0;
|
|
175
|
-
}
|
|
176
|
-
GLES20.glAttachShader(program, vertexShader);
|
|
177
|
-
checkGlError("glAttachShader");
|
|
178
|
-
GLES20.glAttachShader(program, pixelShader);
|
|
179
|
-
checkGlError("glAttachShader");
|
|
180
|
-
GLES20.glLinkProgram(program);
|
|
181
|
-
int[] linkStatus = new int[1];
|
|
182
|
-
GLES20.glGetProgramiv(program, GLES20.GL_LINK_STATUS, linkStatus, 0);
|
|
183
|
-
if (linkStatus[0] != GLES20.GL_TRUE) {
|
|
184
|
-
GLES20.glDeleteProgram(program);
|
|
185
|
-
program = 0;
|
|
186
|
-
}
|
|
187
|
-
return program;
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
public void checkGlError(String op) {
|
|
191
|
-
int error;
|
|
192
|
-
if ((error = GLES20.glGetError()) != GLES20.GL_NO_ERROR) {
|
|
193
|
-
throw new RuntimeException(op + ": glError " + error);
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
}
|