improve demuxer performance

use buffered io for input and output streams
reuse single bytebuffer instead of creating it for every packet
This commit is contained in:
aliveoutside
2024-02-16 06:32:53 +03:00
parent 60e32df046
commit e0d3f22f16
@@ -4,6 +4,8 @@ import android.util.Log;
import com.vk.dto.music.MusicTrack;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
@@ -17,10 +19,11 @@ public class MpegDemuxer {
int desiredPid = 256;
var buffer = new byte[packetSize];
var packet = ByteBuffer.wrap(buffer).order(ByteOrder.BIG_ENDIAN);
try (var fis = new FileInputStream(in); var fos = new FileOutputStream(out)) {
try (var fis = new BufferedInputStream(new FileInputStream(in)); var fos = new BufferedOutputStream(new FileOutputStream(out))) {
while (fis.read(buffer) != -1) {
var packet = ByteBuffer.wrap(buffer).order(ByteOrder.BIG_ENDIAN);
packet.clear();
int firstByte = packet.get() & 0xFF;
int secondByte = packet.get() & 0xFF;
@@ -65,7 +68,6 @@ public class MpegDemuxer {
}
fos.write(packet.array(), packet.position(), packetSize - packet.position());
packet.clear();
}
}
}