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
Original file line number Diff line number Diff line change
Expand Up @@ -259,12 +259,11 @@ private void decode() {
long ts = TimeUtils.getCurrentTimeMicro() - startTs;
sleepTime = extractor.getSleepTime(ts);
finished = !extractor.advance();
if (finished) {
if (!loopMode) {
codec.queueInputBuffer(inIndex, 0, 0, 0, MediaCodec.BUFFER_FLAG_END_OF_STREAM);
}
if (finished && !loopMode) {
codec.queueInputBuffer(inIndex, 0, 0, 0, MediaCodec.BUFFER_FLAG_END_OF_STREAM);
} else {
codec.queueInputBuffer(inIndex, 0, sampleSize, ts + sleepTime, 0);
codec.queueInputBuffer(inIndex, 0, Math.max(sampleSize, 0), ts + sleepTime, 0);
if (finished) extractor.seekTo(0);
}
}
int outIndex = codec.dequeueOutputBuffer(bufferInfo, 10000);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,10 @@ import com.pedro.encoder.input.sources.video.VideoSource
import com.pedro.encoder.input.video.Camera2ApiManager.ImageCallback
import com.pedro.encoder.input.video.Camera2ResolutionCalculator.getOptimalResolution
import com.pedro.encoder.input.video.CameraHelper
import java.util.concurrent.CountDownLatch
import java.util.concurrent.ExecutorService
import java.util.concurrent.Executors
import java.util.concurrent.TimeUnit

/**
* Created by pedro on 16/2/24.
Expand All @@ -69,6 +71,7 @@ class CameraXSource(
private var autoWhiteBalanceEnabled = false
private var fingerSpacing = 0f
private var requiredSize: Size? = null
private var surfaceReleased = CountDownLatch(0)

override fun getLifecycle(): Lifecycle = lifecycleRegistry

Expand Down Expand Up @@ -108,6 +111,7 @@ class CameraXSource(
it.provideSurface(surface, executor) {
surface.release()
executor.shutdown()
surfaceReleased.countDown()
}
this.surface = surface
this.executor = executor
Expand All @@ -116,11 +120,15 @@ class CameraXSource(
}

override fun stop() {
val wasRunning = isRunning()
surfaceReleased = CountDownLatch(1)
lifecycleRegistry.handleLifecycleEvent(Lifecycle.Event.ON_STOP)
camera?.let {
cameraProvider.unbindAll()
camera = null
}
preview.surfaceProvider = null
if (wasRunning) surfaceReleased.await(500L, TimeUnit.MILLISECONDS)
surface?.release()
surface = null
executor?.shutdown()
Expand Down
Loading