Skip to content

Commit 4358037

Browse files
committed
Fix occasional NullPointerException in QueuedMuxer
1 parent 5b5bfa2 commit 4358037

File tree

1 file changed

+7
-3
lines changed

1 file changed

+7
-3
lines changed

lib/src/main/java/net/ypresto/androidtranscoder/engine/QueuedMuxer.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)