Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 28 additions & 27 deletions app/src/main/java/com/pedro/streamer/utils/FilterMenu.kt
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ import android.view.View
import androidx.annotation.RequiresApi
import com.pedro.encoder.input.gl.SpriteGestureController
import com.pedro.encoder.input.gl.render.filters.AnalogTVFilterRender
import com.pedro.encoder.input.gl.render.filters.AndroidViewFilterRender
import com.pedro.encoder.input.gl.render.filters.ViewFilterRender
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
Expand Down Expand Up @@ -69,10 +69,10 @@ import com.pedro.encoder.input.gl.render.filters.SnowFilterRender
import com.pedro.encoder.input.gl.render.filters.SwirlFilterRender
import com.pedro.encoder.input.gl.render.filters.TemperatureFilterRender
import com.pedro.encoder.input.gl.render.filters.ZebraFilterRender
import com.pedro.encoder.input.gl.render.filters.`object`.GifObjectFilterRender
import com.pedro.encoder.input.gl.render.filters.`object`.ImageObjectFilterRender
import com.pedro.encoder.input.gl.render.filters.`object`.GifFilterRender
import com.pedro.encoder.input.gl.render.filters.`object`.ImageFilterRender
import com.pedro.encoder.input.gl.render.filters.`object`.SurfaceFilterRender
import com.pedro.encoder.input.gl.render.filters.`object`.TextObjectFilterRender
import com.pedro.encoder.input.gl.render.filters.`object`.TextFilterRender
import com.pedro.encoder.utils.gl.TranslateTo
import com.pedro.library.view.GlInterface
import com.pedro.streamer.R
Expand Down Expand Up @@ -113,9 +113,9 @@ class FilterMenu(private val context: Context) {
//Set view size to allow rendering
view.measure(sizeSpecWidth, sizeSpecHeight)
view.layout(0, 0, previewSize.x, previewSize.y)
val androidViewFilterRender = AndroidViewFilterRender()
androidViewFilterRender.view = view
glInterface.setFilter(androidViewFilterRender)
val viewFilterRender = ViewFilterRender()
viewFilterRender.view = view
glInterface.setFilter(viewFilterRender)
return true
}
R.id.basic_deformation -> {
Expand Down Expand Up @@ -207,12 +207,12 @@ class FilterMenu(private val context: Context) {
}
R.id.gif -> {
try {
val gifObjectFilterRender = GifObjectFilterRender()
gifObjectFilterRender.setGif(context.resources.openRawResource(R.raw.banana))
glInterface.setFilter(gifObjectFilterRender)
gifObjectFilterRender.setScale(50f, 50f)
gifObjectFilterRender.setPosition(TranslateTo.BOTTOM)
spriteGestureController.setBaseObjectFilterRender(gifObjectFilterRender) //Optional
val gifFilterRender = GifFilterRender()
gifFilterRender.setGif(context.resources.openRawResource(R.raw.banana))
glInterface.setFilter(gifFilterRender)
gifFilterRender.setScale(50f, 50f)
gifFilterRender.setPosition(TranslateTo.BOTTOM)
spriteGestureController.setSprite(gifFilterRender.sprite) //Optional
} catch (_: IOException) { }
return true
}
Expand All @@ -225,14 +225,14 @@ class FilterMenu(private val context: Context) {
return true
}
R.id.image -> {
val imageObjectFilterRender = ImageObjectFilterRender()
glInterface.setFilter(imageObjectFilterRender)
imageObjectFilterRender.setImage(
val imageFilterRender = ImageFilterRender()
glInterface.setFilter(imageFilterRender)
imageFilterRender.setImage(
BitmapFactory.decodeResource(context.resources, R.mipmap.ic_launcher)
)
imageObjectFilterRender.setScale(50f, 50f)
imageObjectFilterRender.setPosition(TranslateTo.CENTER)
spriteGestureController.setBaseObjectFilterRender(imageObjectFilterRender) //Optional
imageFilterRender.setScale(50f, 50f)
imageFilterRender.setPosition(TranslateTo.CENTER)
spriteGestureController.setSprite(imageFilterRender.sprite) //Optional
spriteGestureController.setPreventMoveOutside(false) //Optional
return true
}
Expand Down Expand Up @@ -306,7 +306,8 @@ class FilterMenu(private val context: Context) {
return true
}
R.id.surface_filter -> {
val surfaceFilterRender = SurfaceFilterRender { surfaceTexture -> //You can render this filter with other api that draw in a surface. for example you can use VLC
//You can render this filter with other api that draw in a surface. for example you can use VLC
val surfaceFilterRender = SurfaceFilterRender { surfaceTexture ->
mediaPlayer = MediaPlayer.create(context, R.raw.big_bunny_240p)
mediaPlayer?.setSurface(Surface(surfaceTexture))
mediaPlayer?.isLooping = true
Expand All @@ -315,20 +316,20 @@ class FilterMenu(private val context: Context) {
glInterface.setFilter(surfaceFilterRender)
//Video is 360x240 so select a percent to keep aspect ratio (50% x 33.3% screen)
surfaceFilterRender.setScale(50f, 33.3f)
spriteGestureController.setBaseObjectFilterRender(surfaceFilterRender) //Optional
spriteGestureController.setSprite(surfaceFilterRender.sprite) //Optional
return true
}
R.id.temperature -> {
glInterface.setFilter(TemperatureFilterRender())
return true
}
R.id.text -> {
val textObjectFilterRender = TextObjectFilterRender()
glInterface.setFilter(textObjectFilterRender)
textObjectFilterRender.setText("Hello world", 22f, Color.RED)
textObjectFilterRender.setScale(50f, 50f)
textObjectFilterRender.setPosition(TranslateTo.CENTER)
spriteGestureController.setBaseObjectFilterRender(textObjectFilterRender) //Optional
val textFilterRender = TextFilterRender()
glInterface.setFilter(textFilterRender)
textFilterRender.setText("Hello world", 22f, Color.RED)
textFilterRender.setScale(50f, 50f)
textFilterRender.setPosition(TranslateTo.CENTER)
spriteGestureController.setSprite(textFilterRender.sprite) //Optional
return true
}
R.id.zebra -> {
Expand Down

This file was deleted.

20 changes: 18 additions & 2 deletions encoder/src/main/java/com/pedro/encoder/input/gl/Sprite.java
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ public class Sprite {
private PointF scale;
private PointF position;
private int rotation;
private volatile boolean dirty = true;

public Sprite() {
reset();
Expand All @@ -62,6 +63,7 @@ public Sprite() {
public void translate(float deltaX, float deltaY) {
position.x = deltaX;
position.y = deltaY;
dirty = true;
}

/**
Expand Down Expand Up @@ -108,6 +110,7 @@ public void translate(TranslateTo translation) {
default:
break;
}
dirty = true;
}

/**
Expand All @@ -120,24 +123,36 @@ public void scale(float deltaX, float deltaY) {
position.y /= deltaY / scale.y;
//set new scale.
scale = new PointF(deltaX, deltaY);
dirty = true;
}

public void setRotation(int angle) {
rotation = angle;
dirty = true;
}

/**
* @return true if the sprite changed since the last call. Used to know if the vertices related
* with this sprite must be calculated again.
*/
public boolean consumeDirty() {
boolean dirty = this.dirty;
this.dirty = false;
return dirty;
}

/**
* @return Scale in percent
*/
public PointF getScale() {
return scale;
return new PointF(scale.x, scale.y);
}

/**
* @return Position in percent
*/
public PointF getTranslation() {
return position;
return new PointF(position.x, position.y);
}

public int getRotation() {
Expand All @@ -148,6 +163,7 @@ public void reset() {
scale = new PointF(100f, 100f);
position = new PointF(0f, 0f);
rotation = 0;
dirty = true;
}

/**
Expand Down
Loading
Loading