@@ -37,7 +37,7 @@ public class QueuedMuxer {
3737 private int mVideoTrackIndex ;
3838 private int mAudioTrackIndex ;
3939 private ByteBuffer mByteBuffer ;
40- private List <SampleInfo > mSampleInfoList ;
40+ private final List <SampleInfo > mSampleInfoList ;
4141 private boolean mStarted ;
4242
4343 public QueuedMuxer (MediaMuxer muxer , Listener listener ) {
@@ -69,18 +69,22 @@ private void onSetOutputFormat() {
6969 mAudioTrackIndex = mMuxer .addTrack (mAudioFormat );
7070 Log .v (TAG , "Added track #" + mAudioTrackIndex + " with " + mAudioFormat .getString (MediaFormat .KEY_MIME ) + " to muxer" );
7171 mMuxer .start ();
72+ mStarted = true ;
73+
74+ if (mByteBuffer == null ) {
75+ mByteBuffer = ByteBuffer .allocate (0 );
76+ }
7277 mByteBuffer .flip ();
7378 Log .v (TAG , "Output format determined, writing " + mSampleInfoList .size () +
7479 " samples / " + mByteBuffer .limit () + " bytes to muxer." );
75- mStarted = true ;
7680 MediaCodec .BufferInfo bufferInfo = new MediaCodec .BufferInfo ();
7781 int offset = 0 ;
7882 for (SampleInfo sampleInfo : mSampleInfoList ) {
7983 sampleInfo .writeToBufferInfo (bufferInfo , offset );
8084 mMuxer .writeSampleData (getTrackIndexForSampleType (sampleInfo .mSampleType ), mByteBuffer , bufferInfo );
8185 offset += sampleInfo .mSize ;
8286 }
83- mSampleInfoList = null ;
87+ mSampleInfoList . clear () ;
8488 mByteBuffer = null ;
8589 }
8690
0 commit comments