diff --git a/app/src/main/java/net/ossrs/sea/SrsEncoder.java b/app/src/main/java/net/ossrs/sea/SrsEncoder.java index 48fe806..1f51fd4 100644 --- a/app/src/main/java/net/ossrs/sea/SrsEncoder.java +++ b/app/src/main/java/net/ossrs/sea/SrsEncoder.java @@ -464,7 +464,7 @@ public class SrsEncoder { String[] types = mci.getSupportedTypes(); for (int j = 0; j < types.length; j++) { if (types[j].equalsIgnoreCase(VCODEC)) { - //Log.i(TAG, String.format("vencoder %s types: %s", mci.getName(), types[j])); + Log.i(TAG, String.format("vencoder %s types: %s", mci.getName(), types[j])); if (name == null) { return mci; } @@ -482,9 +482,9 @@ public class SrsEncoder { // choose the right supported color format. @see below: private int chooseVideoEncoder() { // choose the encoder "video/avc": - // 1. select one when type matched. - // 2. perfer google avc. - // 3. perfer qcom avc. + // 1. select default one when type matched. + // 2. google avc is unusable. + // 3. choose qcom avc. vmci = chooseVideoEncoder(null); //vmci = chooseVideoEncoder("google"); //vmci = chooseVideoEncoder("qcom"); diff --git a/app/src/main/java/net/ossrs/sea/rtmp/io/RtmpDecoder.java b/app/src/main/java/net/ossrs/sea/rtmp/io/RtmpDecoder.java index 671204e..95c6357 100644 --- a/app/src/main/java/net/ossrs/sea/rtmp/io/RtmpDecoder.java +++ b/app/src/main/java/net/ossrs/sea/rtmp/io/RtmpDecoder.java @@ -39,10 +39,10 @@ public class RtmpDecoder { chunkStreamInfo.setPrevHeaderRx(header); - if (header.getPacketLength() > rtmpSessionInfo.getChunkSize()) { + if (header.getPacketLength() > rtmpSessionInfo.getRxChunkSize()) { //Log.d(TAG, "readPacket(): packet size (" + header.getPacketLength() + ") is bigger than chunk size (" + rtmpSessionInfo.getChunkSize() + "); storing chunk data"); // This packet consists of more than one chunk; store the chunks in the chunk stream until everything is read - if (!chunkStreamInfo.storePacketChunk(in, rtmpSessionInfo.getChunkSize())) { + if (!chunkStreamInfo.storePacketChunk(in, rtmpSessionInfo.getRxChunkSize())) { Log.d(TAG, " readPacket(): returning null because of incomplete packet"); return null; // packet is not yet complete } else { @@ -59,7 +59,7 @@ public class RtmpDecoder { SetChunkSize setChunkSize = new SetChunkSize(header); setChunkSize.readBody(in); Log.d(TAG, "readPacket(): Setting chunk size to: " + setChunkSize.getChunkSize()); - rtmpSessionInfo.setChunkSize(setChunkSize.getChunkSize()); + rtmpSessionInfo.setRxChunkSize(setChunkSize.getChunkSize()); return null; } case ABORT: diff --git a/app/src/main/java/net/ossrs/sea/rtmp/io/RtmpSessionInfo.java b/app/src/main/java/net/ossrs/sea/rtmp/io/RtmpSessionInfo.java index 24813b8..927d02a 100644 --- a/app/src/main/java/net/ossrs/sea/rtmp/io/RtmpSessionInfo.java +++ b/app/src/main/java/net/ossrs/sea/rtmp/io/RtmpSessionInfo.java @@ -19,7 +19,8 @@ public class RtmpSessionInfo { private int totalBytesRead = 0; /** Default chunk size is 128 bytes */ - private int chunkSize = 128; + private int rxChunkSize = 128; + private int txChunkSize = 128; private Map chunkChannels = new HashMap(); private Map invokedMethods = new ConcurrentHashMap(); @@ -40,12 +41,20 @@ public class RtmpSessionInfo { return invokedMethods.put(transactionId, commandName); } - public int getChunkSize() { - return chunkSize; + public int getRxChunkSize() { + return rxChunkSize; } - public void setChunkSize(int chunkSize) { - this.chunkSize = chunkSize; + public void setRxChunkSize(int chunkSize) { + this.rxChunkSize = chunkSize; + } + + public int getTxChunkSize() { + return txChunkSize; + } + + public void setTxChunkSize(int chunkSize) { + this.txChunkSize = chunkSize; } public int getAcknowledgementWindowSize() { diff --git a/app/src/main/java/net/ossrs/sea/rtmp/io/WriteThread.java b/app/src/main/java/net/ossrs/sea/rtmp/io/WriteThread.java index de5db3e..b3857fd 100644 --- a/app/src/main/java/net/ossrs/sea/rtmp/io/WriteThread.java +++ b/app/src/main/java/net/ossrs/sea/rtmp/io/WriteThread.java @@ -41,7 +41,7 @@ public class WriteThread extends Thread { RtmpPacket rtmpPacket = writeQueue.poll(); final ChunkStreamInfo chunkStreamInfo = rtmpSessionInfo.getChunkStreamInfo(rtmpPacket.getHeader().getChunkStreamId()); chunkStreamInfo.setPrevHeaderTx(rtmpPacket.getHeader()); - rtmpPacket.writeTo(out, rtmpSessionInfo.getChunkSize(), chunkStreamInfo); + rtmpPacket.writeTo(out, rtmpSessionInfo.getTxChunkSize(), chunkStreamInfo); Log.d(TAG, "WriteThread: wrote packet: " + rtmpPacket + ", size: " + rtmpPacket.getHeader().getPacketLength()); if (rtmpPacket instanceof Command) { rtmpSessionInfo.addInvokedCommand(((Command) rtmpPacket).getTransactionId(), ((Command) rtmpPacket).getCommandName());