@@ -37,7 +37,7 @@ public class QueuedMuxer {
37
37
private int mVideoTrackIndex ;
38
38
private int mAudioTrackIndex ;
39
39
private ByteBuffer mByteBuffer ;
40
- private List <SampleInfo > mSampleInfoList ;
40
+ private final List <SampleInfo > mSampleInfoList ;
41
41
private boolean mStarted ;
42
42
43
43
public QueuedMuxer (MediaMuxer muxer , Listener listener ) {
@@ -69,18 +69,22 @@ private void onSetOutputFormat() {
69
69
mAudioTrackIndex = mMuxer .addTrack (mAudioFormat );
70
70
Log .v (TAG , "Added track #" + mAudioTrackIndex + " with " + mAudioFormat .getString (MediaFormat .KEY_MIME ) + " to muxer" );
71
71
mMuxer .start ();
72
+ mStarted = true ;
73
+
74
+ if (mByteBuffer == null ) {
75
+ mByteBuffer = ByteBuffer .allocate (0 );
76
+ }
72
77
mByteBuffer .flip ();
73
78
Log .v (TAG , "Output format determined, writing " + mSampleInfoList .size () +
74
79
" samples / " + mByteBuffer .limit () + " bytes to muxer." );
75
- mStarted = true ;
76
80
MediaCodec .BufferInfo bufferInfo = new MediaCodec .BufferInfo ();
77
81
int offset = 0 ;
78
82
for (SampleInfo sampleInfo : mSampleInfoList ) {
79
83
sampleInfo .writeToBufferInfo (bufferInfo , offset );
80
84
mMuxer .writeSampleData (getTrackIndexForSampleType (sampleInfo .mSampleType ), mByteBuffer , bufferInfo );
81
85
offset += sampleInfo .mSize ;
82
86
}
83
- mSampleInfoList = null ;
87
+ mSampleInfoList . clear () ;
84
88
mByteBuffer = null ;
85
89
}
86
90
0 commit comments