Skip to content

Commit 7ccc9eb

Browse files
committed
fix timestamp on second record
1 parent 1cd54c2 commit 7ccc9eb

File tree

1 file changed

+17
-9
lines changed

1 file changed

+17
-9
lines changed

library/src/main/java/com/pedro/library/base/recording/AsyncBaseRecordController.kt

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -129,15 +129,18 @@ abstract class AsyncBaseRecordController : RecordController {
129129
}
130130

131131
override fun recordVideo(videoBuffer: ByteBuffer, videoInfo: MediaCodec.BufferInfo) {
132-
val info = videoInfo.toMediaFrameInfo()
133-
val i = updateFormat(info)
134-
muxerChannel?.trySend(MediaFrame(videoBuffer.clone(), i, MediaFrame.Type.VIDEO))
132+
sendFrame(videoBuffer, videoInfo, MediaFrame.Type.VIDEO)
135133
}
136134

137135
override fun recordAudio(audioBuffer: ByteBuffer, audioInfo: MediaCodec.BufferInfo) {
138-
val info = audioInfo.toMediaFrameInfo()
139-
val i = updateFormat(info)
140-
muxerChannel?.trySend(MediaFrame(audioBuffer.clone(), i, MediaFrame.Type.AUDIO))
136+
sendFrame(audioBuffer, audioInfo, MediaFrame.Type.AUDIO)
137+
}
138+
139+
private fun sendFrame(buffer: ByteBuffer, info: MediaCodec.BufferInfo, type: MediaFrame.Type) {
140+
if (recordStatus == RecordController.Status.STOPPED) return
141+
val frameInfo = info.toMediaFrameInfo()
142+
val i = updateFormat(frameInfo)
143+
muxerChannel?.trySend(MediaFrame(buffer.clone(), i, type))
141144
}
142145

143146
override fun startRecord(
@@ -172,6 +175,7 @@ abstract class AsyncBaseRecordController : RecordController {
172175
listener: RecordController.Listener?,
173176
tracks: RecordTracks
174177
) {
178+
clearTimestamp()
175179
muxerChannel = Channel(CAPACITY)
176180
muxerJob = scope.launch {
177181
val channel = muxerChannel ?: return@launch
@@ -194,14 +198,18 @@ abstract class AsyncBaseRecordController : RecordController {
194198
muxerJob?.cancel()
195199
runBlocking { muxerJob?.join() }
196200
recordStatus = RecordController.Status.STOPPED
197-
pauseMoment = 0
198-
pauseTime = 0
199-
startTs = 0
201+
clearTimestamp()
200202
myRequestKeyFrame = null
201203
listener?.onStatusChange(recordStatus)
202204
stopRecordImp()
203205
}
204206

207+
private fun clearTimestamp() {
208+
pauseMoment = 0
209+
pauseTime = 0
210+
startTs = 0
211+
}
212+
205213
abstract fun startRecordImp(fd: FileDescriptor, listener: RecordController.Listener?, tracks: RecordTracks)
206214
abstract fun startRecordImp(path: String, listener: RecordController.Listener?, tracks: RecordTracks)
207215
abstract fun stopRecordImp()

0 commit comments

Comments
 (0)