Skip to content

Commit a4f4ade

Browse files
committed
refactoring
1 parent 20c3de5 commit a4f4ade

File tree

3 files changed

+39
-52
lines changed

3 files changed

+39
-52
lines changed

app/src/main/java/com/pedro/streamer/rotation/CameraFragment.kt

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,9 @@ import com.pedro.library.util.BitrateAdapter
3939
import com.pedro.streamer.R
4040
import com.pedro.streamer.utils.PathUtils
4141
import com.pedro.streamer.utils.toast
42+
import kotlinx.coroutines.CoroutineScope
43+
import kotlinx.coroutines.Dispatchers
44+
import kotlinx.coroutines.launch
4245
import java.text.SimpleDateFormat
4346
import java.util.Date
4447
import java.util.Locale
@@ -156,10 +159,12 @@ class CameraFragment: Fragment(), ConnectChecker {
156159
}
157160
}
158161
bSwitchCamera.setOnClickListener {
159-
when (val source = genericStream.videoSource) {
160-
is Camera1Source -> source.switchCamera()
161-
is Camera2Source -> source.switchCamera()
162-
is CameraXSource -> source.switchCamera()
162+
CoroutineScope(Dispatchers.IO).launch {
163+
genericStream.stopPreview()
164+
// Prepare video and audio with new settings.
165+
genericStream.prepareVideo(1920, 1080, 5000 * 1000, 30)
166+
genericStream.prepareAudio(32000, true, 128 * 1000)
167+
genericStream.startPreview(surfaceView)
163168
}
164169
}
165170
return view

library/src/main/java/com/pedro/library/view/GlStreamInterface.kt

Lines changed: 21 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -136,35 +136,27 @@ class GlStreamInterface(private val context: Context): OnFrameAvailableListener,
136136
}
137137

138138
override fun addMediaCodecSurface(surface: Surface) {
139-
executor?.secureSubmit {
140-
if (surfaceManager.isReady) {
141-
surfaceManagerEncoder.release()
142-
surfaceManagerEncoder.eglSetup(surface, surfaceManager)
143-
}
139+
if (surfaceManager.isReady) {
140+
surfaceManagerEncoder.release()
141+
surfaceManagerEncoder.eglSetup(surface, surfaceManager)
144142
}
145143
}
146144

147145
override fun removeMediaCodecSurface() {
148146
threadQueue.clear()
149-
executor?.secureSubmit {
150-
surfaceManagerEncoder.release()
151-
}
147+
surfaceManagerEncoder.release()
152148
}
153149

154150
override fun addMediaCodecRecordSurface(surface: Surface) {
155-
executor?.secureSubmit {
156-
if (surfaceManager.isReady) {
157-
surfaceManagerEncoderRecord.release()
158-
surfaceManagerEncoderRecord.eglSetup(surface, surfaceManager)
159-
}
151+
if (surfaceManager.isReady) {
152+
surfaceManagerEncoderRecord.release()
153+
surfaceManagerEncoderRecord.eglSetup(surface, surfaceManager)
160154
}
161155
}
162156

163157
override fun removeMediaCodecRecordSurface() {
164158
threadQueue.clear()
165-
executor?.secureSubmit {
166-
surfaceManagerEncoderRecord.release()
167-
}
159+
surfaceManagerEncoderRecord.release()
168160
}
169161

170162
override fun takePhoto(takePhotoCallback: TakePhotoCallback?) {
@@ -174,14 +166,15 @@ class GlStreamInterface(private val context: Context): OnFrameAvailableListener,
174166
override fun start() {
175167
threadQueue.clear()
176168
executor = newSingleThreadExecutor(threadQueue)
169+
surfaceManager.release()
170+
surfaceManager.eglSetup()
171+
surfaceManagerPhoto.release()
172+
surfaceManagerPhoto.eglSetup(encoderWidth, encoderHeight, surfaceManager)
173+
sensorRotationManager.start()
174+
running.set(true)
177175
executor?.secureSubmit {
178-
surfaceManager.release()
179-
surfaceManager.eglSetup()
180176
surfaceManager.makeCurrent()
181177
mainRender.initGl(context, encoderWidth, encoderHeight, encoderWidth, encoderHeight)
182-
surfaceManagerPhoto.release()
183-
surfaceManagerPhoto.eglSetup(encoderWidth, encoderHeight, surfaceManager)
184-
running.set(true)
185178
mainRender.getSurfaceTexture().setOnFrameAvailableListener(this)
186179
forceRender.start {
187180
executor?.execute {
@@ -192,24 +185,21 @@ class GlStreamInterface(private val context: Context): OnFrameAvailableListener,
192185
}
193186
}
194187
}
195-
sensorRotationManager.start()
196188
}
197189
}
198190

199191
override fun stop() {
200192
running.set(false)
201193
threadQueue.clear()
202-
executor?.secureSubmit {
203-
forceRender.stop()
204-
sensorRotationManager.stop()
205-
surfaceManagerPhoto.release()
206-
surfaceManagerEncoder.release()
207-
surfaceManagerEncoderRecord.release()
208-
surfaceManager.release()
209-
mainRender.release()
210-
}
211194
executor?.shutdownNow()
212195
executor = null
196+
forceRender.stop()
197+
sensorRotationManager.stop()
198+
surfaceManagerPhoto.release()
199+
surfaceManagerEncoder.release()
200+
surfaceManagerEncoderRecord.release()
201+
surfaceManager.release()
202+
mainRender.release()
213203
}
214204

215205
private fun draw(forced: Boolean) {

library/src/main/java/com/pedro/library/view/OpenGlView.java

Lines changed: 9 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -316,12 +316,7 @@ public void addMediaCodecSurface(Surface surface) {
316316
@Override
317317
public void removeMediaCodecSurface() {
318318
threadQueue.clear();
319-
ExecutorService executor = this.executor;
320-
if (executor == null) return;
321-
ExtensionsKt.secureSubmit(executor, () -> {
322-
surfaceManagerEncoder.release();
323-
return null;
324-
});
319+
surfaceManagerEncoder.release();
325320
}
326321

327322
@Override
@@ -385,18 +380,15 @@ public void stop() {
385380
running.set(false);
386381
threadQueue.clear();
387382
ExecutorService executor = this.executor;
388-
if (executor == null) return;
389-
ExtensionsKt.secureSubmit(executor, () -> {
390-
forceRenderer.stop();
391-
surfaceManagerPhoto.release();
392-
surfaceManagerEncoder.release();
393-
surfaceManagerEncoderRecord.release();
394-
surfaceManager.release();
395-
mainRender.release();
396-
return null;
397-
});
398-
executor.shutdownNow();
383+
if (executor != null) executor.shutdownNow();
399384
this.executor = null;
385+
forceRenderer.stop();
386+
surfaceManagerPhoto.release();
387+
surfaceManagerEncoder.release();
388+
surfaceManagerEncoderRecord.release();
389+
surfaceManager.release();
390+
mainRender.release();
391+
400392
}
401393

402394
@Override

0 commit comments

Comments
 (0)