Skip to content

Commit b473da8

Browse files
committed
add TextureRenderer
1 parent f36a10f commit b473da8

18 files changed

Lines changed: 276 additions & 68 deletions

File tree

8.91 KB
Loading

app/src/main/java/io/github/kenneycode/fusion/demo/MainActivity.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import android.widget.Button
1111
import androidx.recyclerview.widget.LinearLayoutManager
1212
import androidx.recyclerview.widget.RecyclerView
1313
import io.github.kenneycode.fusion.demo.SimpleActivity.Companion.KEY_SAMPLE_INDEX
14+
import io.github.kenneycode.fusion.util.BitmapUtil
1415

1516

1617
/**
@@ -28,7 +29,7 @@ class MainActivity : AppCompatActivity() {
2829
override fun onCreate(savedInstanceState: Bundle?) {
2930
super.onCreate(savedInstanceState)
3031
setContentView(R.layout.activity_main)
31-
Util.context = applicationContext
32+
BitmapUtil.context = applicationContext
3233

3334
val samplesList = findViewById<RecyclerView>(R.id.list)
3435
val layoutManager = LinearLayoutManager(this)

app/src/main/java/io/github/kenneycode/fusion/demo/Util.kt

Lines changed: 0 additions & 38 deletions
This file was deleted.

app/src/main/java/io/github/kenneycode/fusion/demo/fragment/SampleBasicUsage.kt

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,14 @@ import android.view.View
66
import android.view.ViewGroup
77
import androidx.fragment.app.Fragment
88
import io.github.kenneycode.fusion.demo.R
9-
import io.github.kenneycode.fusion.demo.Util
9+
import io.github.kenneycode.fusion.util.BitmapUtil
1010
import io.github.kenneycode.fusion.framebuffer.FrameBufferPool
1111

1212
import io.github.kenneycode.fusion.input.FusionImage
1313
import io.github.kenneycode.fusion.process.RenderChain
1414
import io.github.kenneycode.fusion.process.RenderPipeline
1515
import io.github.kenneycode.fusion.program.GLProgramPool
16-
import io.github.kenneycode.fusion.renderer.CropRenderer
17-
import io.github.kenneycode.fusion.renderer.GaussianBlurRenderer
18-
import io.github.kenneycode.fusion.renderer.LUTRenderer
19-
import io.github.kenneycode.fusion.renderer.ScaleRenderer
16+
import io.github.kenneycode.fusion.renderer.*
2017
import io.github.kenneycode.fusion.texture.TexturePool
2118
import kotlinx.android.synthetic.main.fragment_sample_fusion_gl_texture_view.*
2219

@@ -42,14 +39,15 @@ class SampleBasicUsage : Fragment() {
4239

4340
// 创建RenderChain并添加一些renderer
4441
val renderer = RenderChain()
45-
.addRenderer(ScaleRenderer().apply { setFlip(false, true); setScale(0.8f) })
42+
.addRenderer(ScaleRenderer().apply { setScale(0.8f) })
4643
.addRenderer(CropRenderer().apply { setCropRect(0.1f, 0.9f, 0.8f, 0.2f) })
47-
.addRenderer(LUTRenderer().apply { setLUTImage(Util.decodeBitmapFromAssets("test_lut.png")!!); setLUTStrength(0.8f) })
44+
.addRenderer(LUTRenderer().apply { setLUTImage(BitmapUtil.decodeBitmapFromAssets("test_lut.png")!!); setLUTStrength(0.8f) })
4845
.addRenderer(GaussianBlurRenderer().apply { setBlurRadius(10) })
46+
.addRenderer(TextureRenderer().apply { setBitmap(BitmapUtil.decodeBitmapFromAssets("test_image_0.png")!!); setRenderRect(-1f, 1f, -0.5f, 0.8f) })
4947

5048
// 创建RenderPipeline,连接输入、渲染器与输出
5149
renderPipeline = RenderPipeline
52-
.input(FusionImage(Util.decodeBitmapFromAssets("test.png")!!))
50+
.input(FusionImage(BitmapUtil.decodeBitmapFromAssets("test.png")!!))
5351
.renderWith(renderer)
5452
.useContext(fusionView)
5553
.output(fusionView)

app/src/main/java/io/github/kenneycode/fusion/demo/fragment/SampleGLSurfaceViewUsage0.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import android.view.ViewGroup
99
import androidx.fragment.app.Fragment
1010
import io.github.kenneycode.fusion.common.DataKeys
1111
import io.github.kenneycode.fusion.demo.R
12-
import io.github.kenneycode.fusion.demo.Util
12+
import io.github.kenneycode.fusion.util.BitmapUtil
1313
import io.github.kenneycode.fusion.framebuffer.FrameBufferPool
1414
import io.github.kenneycode.fusion.process.RenderGraph
1515
import io.github.kenneycode.fusion.program.GLProgramPool
@@ -84,7 +84,7 @@ class SampleGLSurfaceViewUsage0 : Fragment() {
8484
}
8585

8686
// 创建图片输入源
87-
val bitmap = Util.decodeBitmapFromAssets("test.png")!!
87+
val bitmap = BitmapUtil.decodeBitmapFromAssets("test.png")!!
8888
val buffer = ByteBuffer.allocate(bitmap.width * bitmap.height * 4)
8989
bitmap.copyPixelsToBuffer(buffer)
9090
buffer.position(0)

app/src/main/java/io/github/kenneycode/fusion/demo/fragment/SampleImageOffscreenRender.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import android.view.View
66
import android.view.ViewGroup
77
import androidx.fragment.app.Fragment
88
import io.github.kenneycode.fusion.demo.R
9-
import io.github.kenneycode.fusion.demo.Util
9+
import io.github.kenneycode.fusion.util.BitmapUtil
1010
import io.github.kenneycode.fusion.framebuffer.FrameBufferPool
1111
import io.github.kenneycode.fusion.input.FusionImage
1212
import io.github.kenneycode.fusion.output.FusionBitmap
@@ -51,15 +51,15 @@ class SampleImageOffscreenRender : Fragment() {
5151
val renderer = RenderChain()
5252
.addRenderer(ScaleRenderer().apply { setFlip(false, true); setScale(0.8f) })
5353
.addRenderer(CropRenderer().apply { setCropRect(0.1f, 0.9f, 0.8f, 0.2f) })
54-
.addRenderer(LUTRenderer().apply { setLUTImage(Util.decodeBitmapFromAssets("test_lut.png")!!); setLUTStrength(0.8f) })
54+
.addRenderer(LUTRenderer().apply { setLUTImage(BitmapUtil.decodeBitmapFromAssets("test_lut.png")!!); setLUTStrength(0.8f) })
5555
.addRenderer(GaussianBlurRenderer().apply { setBlurRadius(10) })
5656

5757
// 输出bitmap
5858
val output = FusionBitmap()
5959

6060
// 创建RenderPipeline,连接输入、渲染器与输出
6161
val renderPipeline = RenderPipeline
62-
.input(FusionImage(Util.decodeBitmapFromAssets(sourceImagePath)!!))
62+
.input(FusionImage(BitmapUtil.decodeBitmapFromAssets(sourceImagePath)!!))
6363
.renderWith(renderer)
6464
.output(output)
6565

app/src/main/java/io/github/kenneycode/fusion/demo/fragment/SampleMVPMatrix.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import android.view.ViewGroup
88
import androidx.fragment.app.Fragment
99
import io.github.kenneycode.fusion.common.DataKeys
1010
import io.github.kenneycode.fusion.demo.R
11-
import io.github.kenneycode.fusion.demo.Util
11+
import io.github.kenneycode.fusion.util.BitmapUtil
1212
import io.github.kenneycode.fusion.framebuffer.FrameBufferPool
1313

1414
import io.github.kenneycode.fusion.process.RenderChain
@@ -88,7 +88,7 @@ class SampleMVPMatrix : Fragment() {
8888
}
8989

9090
// 创建图片输入源
91-
val bitmap = Util.decodeBitmapFromAssets("test.png")!!
91+
val bitmap = BitmapUtil.decodeBitmapFromAssets("test.png")!!
9292
val buffer = ByteBuffer.allocate(bitmap.width * bitmap.height * 4)
9393
bitmap.copyPixelsToBuffer(buffer)
9494
buffer.position(0)

app/src/main/java/io/github/kenneycode/fusion/demo/fragment/SampleVideo.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,9 @@ import android.view.View
66
import android.view.ViewGroup
77
import androidx.fragment.app.Fragment
88
import io.github.kenneycode.fusion.demo.R
9-
import io.github.kenneycode.fusion.demo.Util
9+
import io.github.kenneycode.fusion.util.BitmapUtil
1010
import io.github.kenneycode.fusion.framebuffer.FrameBufferPool
1111

12-
import io.github.kenneycode.fusion.input.FusionImage
1312
import io.github.kenneycode.fusion.input.FusionVideo
1413
import io.github.kenneycode.fusion.process.RenderChain
1514
import io.github.kenneycode.fusion.process.RenderPipeline
@@ -41,7 +40,7 @@ class SampleVideo : Fragment() {
4140
// 创建RenderChain并添加一些renderer
4241
val renderer = RenderChain()
4342
.addRenderer(OES2RGBARenderer())
44-
.addRenderer(LUTRenderer().apply { setLUTImage(Util.decodeBitmapFromAssets("test_lut.png")!!); setLUTStrength(0.8f) })
43+
.addRenderer(LUTRenderer().apply { setLUTImage(BitmapUtil.decodeBitmapFromAssets("test_lut.png")!!); setLUTStrength(0.8f) })
4544
.addRenderer(GaussianBlurRenderer().apply { setBlurRadius(10) })
4645

4746
// 创建RenderPipeline,连接输入、渲染器与输出

app/src/main/java/io/github/kenneycode/fusion/demo/fragment/SampleVideoOffscreenRender.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import android.view.View
66
import android.view.ViewGroup
77
import androidx.fragment.app.Fragment
88
import io.github.kenneycode.fusion.demo.R
9-
import io.github.kenneycode.fusion.demo.Util
9+
import io.github.kenneycode.fusion.util.BitmapUtil
1010
import io.github.kenneycode.fusion.framebuffer.FrameBufferPool
1111
import io.github.kenneycode.fusion.input.FusionVideoDecoder
1212
import io.github.kenneycode.fusion.output.FusionVideoEncoder
@@ -48,7 +48,7 @@ class SampleVideoOffscreenRender : Fragment() {
4848
// 创建RenderChain并添加一些renderer
4949
val renderer = RenderChain()
5050
.addRenderer(OES2RGBARenderer())
51-
.addRenderer(LUTRenderer().apply { setLUTImage(Util.decodeBitmapFromAssets("test_lut.png")!!); setLUTStrength(0.8f) })
51+
.addRenderer(LUTRenderer().apply { setLUTImage(BitmapUtil.decodeBitmapFromAssets("test_lut.png")!!); setLUTStrength(0.8f) })
5252
.addRenderer(GaussianBlurRenderer().apply { setBlurRadius(10) })
5353

5454
// 视频解码器

libfusion/src/main/java/io/github/kenneycode/fusion/input/FusionImage.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import io.github.kenneycode.fusion.context.GLContext
66
import io.github.kenneycode.fusion.process.RenderPipeline
77
import io.github.kenneycode.fusion.texture.Texture
88
import io.github.kenneycode.fusion.texture.TexturePool
9+
import io.github.kenneycode.fusion.util.BitmapUtil
910
import java.nio.ByteBuffer
1011

1112
/**
@@ -33,7 +34,7 @@ class FusionImage(private val image: Bitmap) : RenderPipeline.Input, InputReceiv
3334

3435
override fun onInit(glContext: GLContext, data: MutableMap<String, Any>) {
3536
val buffer = ByteBuffer.allocate(image.width * image.height * 4)
36-
image.copyPixelsToBuffer(buffer)
37+
BitmapUtil.flipBitmap(image, false, true).copyPixelsToBuffer(buffer)
3738
buffer.position(0)
3839
imageTexture = TexturePool.obtainTexture(image.width, image.height).apply {
3940
retain = true

0 commit comments

Comments
 (0)