@@ -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