Skip to content

Commit 1952254

Browse files
committed
Care about byte order
1 parent d59b009 commit 1952254

File tree

3 files changed

+9
-3
lines changed

3 files changed

+9
-3
lines changed

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import android.media.MediaFormat;
2222

2323
import java.nio.ByteBuffer;
24+
import java.nio.ByteOrder;
2425

2526
public class PassThroughTrackTranscoder implements TrackTranscoder {
2627
private final MediaExtractor mExtractor;
@@ -44,7 +45,7 @@ public PassThroughTrackTranscoder(MediaExtractor extractor, int trackIndex,
4445
mActualOutputFormat = mExtractor.getTrackFormat(mTrackIndex);
4546
mMuxer.setOutputFormat(mSampleType, mActualOutputFormat);
4647
mBufferSize = mActualOutputFormat.getInteger(MediaFormat.KEY_MAX_INPUT_SIZE);
47-
mBuffer = ByteBuffer.allocateDirect(mBufferSize);
48+
mBuffer = ByteBuffer.allocateDirect(mBufferSize).order(ByteOrder.nativeOrder());
4849
}
4950

5051
@Override

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import android.util.Log;
2222

2323
import java.nio.ByteBuffer;
24+
import java.nio.ByteOrder;
2425
import java.util.ArrayList;
2526
import java.util.List;
2627

@@ -96,7 +97,7 @@ public void writeSampleData(SampleType sampleType, ByteBuffer byteBuf, MediaCode
9697
byteBuf.limit(bufferInfo.offset + bufferInfo.size);
9798
byteBuf.position(bufferInfo.offset);
9899
if (mByteBuffer == null) {
99-
mByteBuffer = ByteBuffer.allocateDirect(BUFFER_SIZE).order(byteBuf.order());
100+
mByteBuffer = ByteBuffer.allocateDirect(BUFFER_SIZE).order(ByteOrder.nativeOrder());
100101
}
101102
mByteBuffer.put(byteBuf);
102103
mSampleInfoList.add(new SampleInfo(sampleType, bufferInfo.size, bufferInfo));

lib/src/main/java/net/ypresto/androidtranscoder/utils/AvcCsdUtils.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,11 @@ public class AvcCsdUtils {
3131
private static final byte AVC_SPS_NAL = 103; // 0<<7 + 3<<5 + 7<<0
3232

3333
public static ByteBuffer getSpsBuffer(MediaFormat format) {
34-
ByteBuffer prefixedSpsBuffer = format.getByteBuffer(MediaFormatExtraConstants.KEY_AVC_SPS).asReadOnlyBuffer();
34+
ByteBuffer sourceBuffer = format.getByteBuffer(MediaFormatExtraConstants.KEY_AVC_SPS).asReadOnlyBuffer(); // might be direct buffer
35+
ByteBuffer prefixedSpsBuffer = ByteBuffer.allocate(sourceBuffer.limit()).order(sourceBuffer.order());
36+
prefixedSpsBuffer.put(sourceBuffer);
37+
prefixedSpsBuffer.flip();
38+
3539
skipStartCode(prefixedSpsBuffer);
3640
if (prefixedSpsBuffer.get() != AVC_SPS_NAL) {
3741
throw new IllegalStateException("Got non SPS NAL data.");

0 commit comments

Comments
 (0)