Skip to content

Commit

Permalink
fix for encoders stop and black filter
Browse files Browse the repository at this point in the history
  • Loading branch information
pedro committed Feb 25, 2019
1 parent eb3c1ac commit 664e294
Show file tree
Hide file tree
Showing 14 changed files with 136 additions and 14 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ allprojects {
}
}
dependencies {
compile 'com.github.pedroSG94.rtmp-rtsp-stream-client-java:rtplibrary:1.5.2'
compile 'com.github.pedroSG94.rtmp-rtsp-stream-client-java:rtplibrary:1.5.3'
}
```
Expand Down
4 changes: 2 additions & 2 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ android {
applicationId "com.pedro.rtpstreamer"
minSdkVersion 16
targetSdkVersion 28
versionCode 152
versionName "1.5.2"
versionCode 153
versionName "1.5.3"
}
buildTypes {
release {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import com.pedro.encoder.input.gl.render.filters.AndroidViewFilterRender;
import com.pedro.encoder.input.gl.render.filters.BasicDeformationFilterRender;
import com.pedro.encoder.input.gl.render.filters.BeautyFilterRender;
import com.pedro.encoder.input.gl.render.filters.BlackFilterRender;
import com.pedro.encoder.input.gl.render.filters.BlurFilterRender;
import com.pedro.encoder.input.gl.render.filters.BrightnessFilterRender;
import com.pedro.encoder.input.gl.render.filters.CartoonFilterRender;
Expand Down Expand Up @@ -146,6 +147,9 @@ public boolean onOptionsItemSelected(MenuItem item) {
case R.id.beauty:
rtmpCamera1.getGlInterface().setFilter(new BeautyFilterRender());
return true;
case R.id.black:
rtmpCamera1.getGlInterface().setFilter(new BlackFilterRender());
return true;
case R.id.blur:
rtmpCamera1.getGlInterface().setFilter(new BlurFilterRender());
return true;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import com.pedro.encoder.input.gl.render.filters.AndroidViewFilterRender;
import com.pedro.encoder.input.gl.render.filters.BasicDeformationFilterRender;
import com.pedro.encoder.input.gl.render.filters.BeautyFilterRender;
import com.pedro.encoder.input.gl.render.filters.BlackFilterRender;
import com.pedro.encoder.input.gl.render.filters.BlurFilterRender;
import com.pedro.encoder.input.gl.render.filters.BrightnessFilterRender;
import com.pedro.encoder.input.gl.render.filters.CartoonFilterRender;
Expand Down Expand Up @@ -146,6 +147,9 @@ public boolean onOptionsItemSelected(MenuItem item) {
case R.id.beauty:
rtspCamera1.getGlInterface().setFilter(new BeautyFilterRender());
return true;
case R.id.black:
rtspCamera1.getGlInterface().setFilter(new BlackFilterRender());
return true;
case R.id.blur:
rtspCamera1.getGlInterface().setFilter(new BlurFilterRender());
return true;
Expand Down
4 changes: 4 additions & 0 deletions app/src/main/res/menu/gl_menu.xml
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,10 @@
android:id="@+id/beauty"
android:title="@string/beauty"
/>
<item
android:id="@+id/black"
android:title="@string/black"
/>
<item
android:id="@+id/blur"
android:title="@string/blur"
Expand Down
1 change: 1 addition & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@
<string name="android_view">Android view</string>
<string name="basic_deformation">Basic deformation</string>
<string name="beauty">Beauty</string>
<string name="black">Black</string>
<string name="blur">Blur</string>
<string name="brightness">Brightness</string>
<string name="cartoon">Cartoon</string>
Expand Down
4 changes: 2 additions & 2 deletions encoder/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ android {
defaultConfig {
minSdkVersion 16
targetSdkVersion 28
versionCode 152
versionName "1.5.2"
versionCode 153
versionName "1.5.3"
}
buildTypes {
release {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ public class MicrophoneManager {
private int channel = AudioFormat.CHANNEL_IN_STEREO;
private boolean muted = false;
private AudioPostProcessEffect audioPostProcessEffect;
private Thread thread;

public MicrophoneManager(GetMicrophoneData getMicrophoneData) {
this.getMicrophoneData = getMicrophoneData;
Expand Down Expand Up @@ -63,7 +64,7 @@ public void createMicrophone(int sampleRate, boolean isStereo, boolean echoCance
*/
public void start() {
init();
new Thread(new Runnable() {
thread = new Thread(new Runnable() {
@Override
public void run() {
while (running && !Thread.interrupted()) {
Expand All @@ -75,7 +76,8 @@ public void run() {
}
}
}
}).start();
});
thread.start();
}

private void init() {
Expand Down Expand Up @@ -118,6 +120,15 @@ private DataTaken read() {
public void stop() {
running = false;
created = false;
if (thread != null) {
thread.interrupt();
try {
thread.join(100);
} catch (InterruptedException e) {
thread.interrupt();
}
}
thread = null;
if (audioRecord != null) {
audioRecord.setRecordPositionUpdateListener(null);
audioRecord.stop();
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
package com.pedro.encoder.input.gl.render.filters;

import android.content.Context;
import android.opengl.GLES20;
import android.opengl.Matrix;
import android.os.Build;
import android.support.annotation.RequiresApi;
import com.pedro.encoder.R;
import com.pedro.encoder.utils.gl.GlUtil;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;

/**
* Created by pedro on 29/01/18.
*/

@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR2)
public class BlackFilterRender extends BaseFilterRender {

//rotation matrix
private final float[] squareVertexDataFilter = {
// X, Y, Z, U, V
-1f, -1f, 0f, 0f, 0f, //bottom left
1f, -1f, 0f, 1f, 0f, //bottom right
-1f, 1f, 0f, 0f, 1f, //top left
1f, 1f, 0f, 1f, 1f, //top right
};

private int program = -1;
private int aPositionHandle = -1;
private int aTextureHandle = -1;
private int uMVPMatrixHandle = -1;
private int uSTMatrixHandle = -1;
private int uSamplerHandle = -1;

public BlackFilterRender() {
squareVertex = ByteBuffer.allocateDirect(squareVertexDataFilter.length * FLOAT_SIZE_BYTES)
.order(ByteOrder.nativeOrder())
.asFloatBuffer();
squareVertex.put(squareVertexDataFilter).position(0);
Matrix.setIdentityM(MVPMatrix, 0);
Matrix.setIdentityM(STMatrix, 0);
}

@Override
protected void initGlFilter(Context context) {
String vertexShader = GlUtil.getStringFromRaw(context, R.raw.simple_vertex);
String fragmentShader = GlUtil.getStringFromRaw(context, R.raw.black_fragment);

program = GlUtil.createProgram(vertexShader, fragmentShader);
aPositionHandle = GLES20.glGetAttribLocation(program, "aPosition");
aTextureHandle = GLES20.glGetAttribLocation(program, "aTextureCoord");
uMVPMatrixHandle = GLES20.glGetUniformLocation(program, "uMVPMatrix");
uSTMatrixHandle = GLES20.glGetUniformLocation(program, "uSTMatrix");
uSamplerHandle = GLES20.glGetUniformLocation(program, "uSampler");
}

@Override
protected void drawFilter() {
GLES20.glUseProgram(program);

squareVertex.position(SQUARE_VERTEX_DATA_POS_OFFSET);
GLES20.glVertexAttribPointer(aPositionHandle, 3, GLES20.GL_FLOAT, false,
SQUARE_VERTEX_DATA_STRIDE_BYTES, squareVertex);
GLES20.glEnableVertexAttribArray(aPositionHandle);

squareVertex.position(SQUARE_VERTEX_DATA_UV_OFFSET);
GLES20.glVertexAttribPointer(aTextureHandle, 2, GLES20.GL_FLOAT, false,
SQUARE_VERTEX_DATA_STRIDE_BYTES, squareVertex);
GLES20.glEnableVertexAttribArray(aTextureHandle);

GLES20.glUniformMatrix4fv(uMVPMatrixHandle, 1, false, MVPMatrix, 0);
GLES20.glUniformMatrix4fv(uSTMatrixHandle, 1, false, STMatrix, 0);

GLES20.glUniform1i(uSamplerHandle, 4);
GLES20.glActiveTexture(GLES20.GL_TEXTURE4);
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, previousTexId);
}

@Override
public void release() {
GLES20.glDeleteProgram(program);
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -258,7 +258,7 @@ public void run() {
@Override
public void run() {
YUVUtil.preAllocateBuffers(width * height * 3 / 2);
while (!Thread.interrupted()) {
while (running && !Thread.interrupted()) {
try {
Frame frame = queue.take();
if (fpsLimiter.limitFPS(fps)) continue;
Expand All @@ -275,6 +275,8 @@ public void run() {
: isYV12 ? YUVUtil.YV12toYUV420byColor(buffer, width, height,
formatVideoEncoder)
: YUVUtil.NV21toYUV420byColor(buffer, width, height, formatVideoEncoder);

if (Thread.currentThread().isInterrupted()) return;
if (Build.VERSION.SDK_INT >= 21) {
getDataFromEncoderAPI21(buffer);
} else {
Expand Down
11 changes: 11 additions & 0 deletions encoder/src/main/res/raw/black_fragment.glsl
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
precision mediump float;

uniform sampler2D uSampler;

varying vec2 vTextureCoord;

void main() {
vec4 pixel = texture2D(uSampler, vTextureCoord);
//Ignore color and set black color. I think this is not the best way
gl_FragColor = vec4(0.0, 0.0, 0.0, pixel.a);
}
4 changes: 2 additions & 2 deletions rtmp/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ android {
defaultConfig {
minSdkVersion 16
targetSdkVersion 28
versionCode 152
versionName "1.5.2"
versionCode 153
versionName "1.5.3"
}
buildTypes {
release {
Expand Down
4 changes: 2 additions & 2 deletions rtplibrary/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ android {
defaultConfig {
minSdkVersion 16
targetSdkVersion 28
versionCode 152
versionName "1.5.2"
versionCode 153
versionName "1.5.3"
}
buildTypes {
release {
Expand Down
4 changes: 2 additions & 2 deletions rtsp/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ android {
defaultConfig {
minSdkVersion 16
targetSdkVersion 28
versionCode 152
versionName "1.5.2"
versionCode 153
versionName "1.5.3"
}
buildTypes {
release {
Expand Down

0 comments on commit 664e294

Please sign in to comment.