![]() |
![]() |
wms-stream-live16:54:34.454 INFO jd.cli.Main - Decompiling wms-stream-live.jar package com.wowza.wms.stream.live; import com.wowza.wms.amf.AMFObj; import com.wowza.wms.stream.IMediaStream; import com.wowza.wms.stream.MediaStreamMap; import java.io.OutputStream; public abstract interface ILivePlayer { public static final int FILTER_OUTPUTALL = 7; public static final int FILTER_NODFRAMES = 3; public static final int FILTER_NOPFRAMES = 1; public static final int FILTER_NOKFRAMES = 0; public static final int BEHINDRESET = 60000; public abstract void init(IMediaStream paramIMediaStream, MediaStreamMap paramMediaStreamMap); public abstract int play(IMediaStream paramIMediaStream, OutputStream paramOutputStream, AMFObj paramAMFObj1, AMFObj paramAMFObj2, AMFObj paramAMFObj3, long[] paramArrayOfLong); public abstract int play(OutputStream paramOutputStream, AMFObj paramAMFObj1, AMFObj paramAMFObj2, AMFObj paramAMFObj3, long[] paramArrayOfLong); public abstract boolean play(IMediaStream paramIMediaStream); public abstract boolean play(); public abstract void close(); public abstract void resetNoLookup(); public abstract void reset(boolean paramBoolean); public abstract void pause(int paramInt, long paramLong); public abstract void pauseRaw(int paramInt, long paramLong); public abstract void seek(int paramInt); public abstract void setBufferTime(int paramInt); public abstract void shutdown(); public abstract void setName(String paramString1, String paramString2, String paramString3, String paramString4, double paramDouble1, double paramDouble2, int paramInt); public abstract void switchName(String paramString1, String paramString2, String paramString3, String paramString4, double paramDouble1, double paramDouble2, int paramInt); public abstract void stopName(String paramString1, String paramString2, String paramString3, String paramString4, double paramDouble1, double paramDouble2, int paramInt); public abstract void interruptPlay(); public abstract void startPlay(); public abstract void switchPlay(); public abstract void updateLoggingValues(); public abstract double length(); public abstract long size(); public abstract long getLastTimecodeOffset(); public abstract long getLastSentVideoTC(); public abstract long getLastSentAudioTC(); public abstract long getLastSentDataTC(); public abstract int getLastVideoFilter(); } /* Location: * Qualified Name: com.wowza.wms.stream.live.ILivePlayer * Java Class Version: 6 (50.0) * JD-Core Version: 0.7.1 */ package com.wowza.wms.stream.live; import com.wowza.wms.amf.AMFPacket; import com.wowza.wms.amf.IAMFPacketExtraData; import com.wowza.wms.stream.IMediaStream; import com.wowza.wms.stream.livepacketizer.ILiveStreamPacketizer; import java.util.List; import java.util.Map; public abstract interface ILiveReceiver { public abstract void init(IMediaStream paramIMediaStream); public abstract void resetTimecodes(); public abstract int getVideoMissing(int paramInt); public abstract int getDataMissing(int paramInt); public abstract int getAudioMissing(int paramInt); public abstract void startVideoPacket(); public abstract void addVideoData(byte[] paramArrayOfByte, int paramInt1, int paramInt2, int paramInt3, long paramLong); public abstract void startDataPacket(); public abstract void addDataData(byte[] paramArrayOfByte, int paramInt1, int paramInt2, int paramInt3, long paramLong); public abstract void startAudioPacket(); public abstract void addAudioData(byte[] paramArrayOfByte, int paramInt1, int paramInt2, int paramInt3, long paramLong); public abstract int getPacketCount(); public abstract long getLastPacketTC(); public abstract long getFirstPacketTC(); public abstract AMFPacket getLastPacket(); public abstract List<AMFPacket> getPlayPackets(); public abstract AMFPacket getLastKeyFrame(); public abstract void trim(List<AMFPacket> paramList); public abstract void trim(); public abstract int getMaximumLiveLatency(); public abstract void setMaximumLiveLatency(int paramInt); public abstract int getSrc(); public abstract void setSrc(int paramInt); public abstract void close(); public abstract long getMaxTimecode(); public abstract long getTimecodeOffset(); public abstract void updateLoggingValues(); public abstract long getLastReceivedAudioTC(); public abstract long getLastReceivedVideoTC(); public abstract long getLastReceivedDataTC(); public abstract long getLastSentAudioTC(); public abstract long getLastSentVideoTC(); public abstract long getLastSentDataTC(); public abstract long getLastFlushAudioTC(); public abstract long getLastFlushVideoTC(); public abstract long getLastFlushDataTC(); public abstract long getLastFlushTimecode(); public abstract long getLastFlushRTTimecode(); public abstract long getLastFlushTime(); public abstract void addAudioCodecConfigPacket(long paramLong, AMFPacket paramAMFPacket); public abstract AMFPacket getVideoCodecConfigPacket(long paramLong); public abstract void addVideoCodecConfigPacket(long paramLong, AMFPacket paramAMFPacket); public abstract void onStreamStart(List paramList, long paramLong); public abstract void flush(); public abstract ILiveStreamPacketizer getLiveStreamPacketizer(String paramString); public abstract AMFPacket getAudioCodecConfigPacket(long paramLong); public abstract int getVideoCodecId(); public abstract int getAudioCodecId(); public abstract void setVideoCodecId(int paramInt); public abstract void setAudioCodecId(int paramInt); public abstract boolean isPublishStreamReady(boolean paramBoolean1, boolean paramBoolean2); public abstract void setMaximumPacketsPerSecond(int paramInt); public abstract void shutdown(); public abstract void addAudioExtraData(Map<String, IAMFPacketExtraData> paramMap); public abstract void addVideoExtraData(Map<String, IAMFPacketExtraData> paramMap); public abstract void addDataExtraData(Map<String, IAMFPacketExtraData> paramMap); } /* Location: * Qualified Name: com.wowza.wms.stream.live.ILiveReceiver * Java Class Version: 6 (50.0) * JD-Core Version: 0.7.1 */ package com.wowza.wms.stream.live; import com.wowza.util.Base64; import com.wowza.util.JSON; import com.wowza.wms.amf.AMFData; import com.wowza.wms.amf.AMFDataItem; import com.wowza.wms.amf.AMFDataObj; import com.wowza.wms.amf.AMFObj; import com.wowza.wms.amf.AMFPacket; import com.wowza.wms.application.IApplicationInstance; import com.wowza.wms.application.WMSProperties; import com.wowza.wms.client.Client; import com.wowza.wms.logging.WMSLogger; import com.wowza.wms.logging.WMSLoggerFactory; import com.wowza.wms.module.ModuleCore; import com.wowza.wms.response.ResponseFunction; import com.wowza.wms.stream.IMediaStream; import com.wowza.wms.stream.IMediaStreamPlay; import com.wowza.wms.stream.MediaStream; import com.wowza.wms.stream.MediaStreamMap; import com.wowza.wms.stream.mediacaster.MediaStreamMediaCasterUtils; import com.wowza.wms.util.StreamUtils; import com.wowza.wms.vhost.IVHost; import com.wowza.wms.vhost.StreamItem; import com.wowza.wms.vhost.StreamList; import java.io.OutputStream; import java.util.List; import java.util.concurrent.atomic.AtomicReference; public class LivePlayer implements ILivePlayer { private class PacketTimecodeDebug { long a = -1L; long b = -1L; long c = -1L; int d = 0; long e = -1L; long f = -1L; long g = -1L; int h = 0; long i = -1L; private PacketTimecodeDebug() {} } protected class LiveTracker { public long totalLen = 0L; public long firstTC = -1L; public long lastTC = -1L; public long trackerSeq = 0L; public LiveTracker() { trackerSeq = (++trackerSeqSource); } } protected long trackerSeqSource = 0L; protected IMediaStreamPlay stream = null; protected byte[] workBuffer = null; protected boolean isDebugLog = false; protected long lastSeq = -1L; protected long lastAudioTC = -1L; protected long lastVideoTC = -1L; protected long lastDataTC = -1L; protected long lastTC = -1L; protected long firstPacketTC = -1L; protected boolean isEnhancedSeekCapable = false; protected boolean isBurstCapable = false; protected boolean sendFirstKeyFrame = true; protected boolean checkStreamProperties = true; protected boolean sendFirstVideoFrame = true; protected boolean sendFirstAudioFrame = true; protected boolean sentPlayStart = false; protected boolean sendPlayStop = false; protected boolean sendPlaySwitch = false; protected long lastSendTime = -1L; protected boolean waitForKeyFrame = true; protected long lastTCOffset = 0L; protected int lastTCFilter = 7; protected LiveTracker lastSentLiveTracker = null; protected long trackerBufferTime = 0L; protected long trackerStartSeq = -1L; protected boolean sendStreamNotFound = true; protected boolean waitForBufferFill = true; protected boolean waitForBufferKeyFrame = false; protected long waitForBufferFillStarTime = -1L; protected int maximumLiveLatency = 8000; protected boolean disableLowBandwidthThrottling = false; protected boolean instantOn = false; protected int instantOnBufferTime = 0; protected int behindDropDFrames = 500; protected int behindDropPFrames = 1500; protected int behindDropKFrames = 3000; protected int behindDropAudio = 3000; protected boolean lastReceiveAudio = true; protected boolean lastReceiveVideo = true; protected int lastReceiveVideoFPS = -1; protected double playStart = 0.0D; protected double playLen = -1.0D; protected int playTransition = 0; protected boolean playlistEnd = false; protected boolean bufferEmptyOnce = false; protected Object lock = new Object(); protected AtomicReference<LivePlayerSwitch> liveSwitch = new AtomicReference(null); protected boolean sendOriginalTimecodes = false; protected int packetsSent = 0; protected int startPacketsSent = 0; protected boolean referenceWrite = true; protected int[] avgPacketSizes = new int[8]; protected long avgPacketSizeCount = 0L; protected long avgPacketSizeTotal = 0L; protected int referenceWritePacketSizeThreshold = 500; private boolean a = true; private PacketTimecodeDebug b = null; public LivePlayer(IMediaStreamPlay paramIMediaStreamPlay) { stream = paramIMediaStreamPlay; } public Object getLock() { return lock; } public void setLock(Object paramObject) { lock = paramObject; } /* Error */ protected boolean isEnhancedSeekCapable(IMediaStream arg1) { // Byte code: // 0: aload_1 // 1: invokeinterface 225 1 0 // 6: astore_2 // 7: aload_2 // 8: ifnull +45 -> 53 // 11: goto +4 -> 15 // 14: ireturn // 15: iconst_4 // 16: newarray <illegal type> // 18: dup // 19: iconst_0 // 20: bipush 9 // 22: iastore // 23: dup // 24: iconst_1 // 25: iconst_0 // 26: iastore // 27: dup // 28: iconst_2 // 29: iconst_0 // 30: iastore // 31: dup // 32: iconst_3 // 33: iconst_0 // 34: iastore // 35: astore_3 // 36: aload_2 // 37: aload_3 // 38: invokeinterface 231 2 0 // 43: istore 4 // 45: iload 4 // 47: iflt +8 -> 55 // 50: goto +9 -> 59 // 53: iconst_0 // 54: ireturn // 55: iconst_0 // 56: goto -42 -> 14 // 59: iconst_1 // 60: goto -46 -> 14 // Line number table: // Java source line #133 -> byte code offset #0 // Java source line #134 -> byte code offset #7 // Java source line #138 -> byte code offset #14 // Java source line #136 -> byte code offset #15 // Java source line #137 -> byte code offset #36 // Java source line #138 -> byte code offset #45 // Java source line #140 -> byte code offset #53 // Java source line #138 -> byte code offset #55 } /* Error */ protected boolean isBurstCapable(IMediaStream arg1) { // Byte code: // 0: aload_1 // 1: invokeinterface 225 1 0 // 6: astore_2 // 7: aload_2 // 8: ifnull +6 -> 14 // 11: goto +13 -> 24 // 14: iconst_0 // 15: ireturn // 16: iconst_0 // 17: goto +45 -> 62 // 20: iconst_1 // 21: goto +41 -> 62 // 24: iconst_4 // 25: newarray <illegal type> // 27: dup // 28: iconst_0 // 29: bipush 10 // 31: iastore // 32: dup // 33: iconst_1 // 34: iconst_0 // 35: iastore // 36: dup // 37: iconst_2 // 38: iconst_0 // 39: iastore // 40: dup // 41: iconst_3 // 42: iconst_0 // 43: iastore // 44: astore_3 // 45: aload_2 // 46: aload_3 // 47: invokeinterface 231 2 0 // 52: istore 4 // 54: iload 4 // 56: iflt -40 -> 16 // 59: goto -39 -> 20 // 62: ireturn // Line number table: // Java source line #145 -> byte code offset #0 // Java source line #146 -> byte code offset #7 // Java source line #152 -> byte code offset #14 // Java source line #150 -> byte code offset #16 // Java source line #148 -> byte code offset #24 // Java source line #149 -> byte code offset #45 // Java source line #150 -> byte code offset #54 } /* Error */ protected void sendBurstStart(OutputStream paramOutputStream, IMediaStream paramIMediaStream) { // Byte code: // 0: aload_0 // 1: getfield 116 com/wowza/wms/stream/live/LivePlayer:isBurstCapable Z // 4: ifeq +12 -> 16 // 7: goto +53 -> 60 // 10: astore 4 // 12: goto +4 -> 16 // 15: nop // 16: return // 17: aload_1 // 18: invokestatic 242 com/wowza/util/IFasterByteArrayOutputStream:getProtocol (Ljava/io/OutputStream;)I // 21: istore 4 // 23: iload 4 // 25: iconst_4 // 26: if_icmpne +6 -> 32 // 29: goto +11 -> 40 // 32: aload_1 // 33: aload_3 // 34: invokevirtual 248 java/io/OutputStream:write ([B)V // 37: goto -22 -> 15 // 40: aload_1 // 41: invokestatic 252 com/wowza/util/IFasterByteArrayOutputStream:getWOWZSession (Ljava/io/OutputStream;)Lcom/wowza/wms/protocol/wowz/WOWZSession; // 44: astore 5 // 46: aload 5 // 48: aload_1 // 49: aload_3 // 50: iconst_0 // 51: aload_3 // 52: arraylength // 53: invokevirtual 258 com/wowza/wms/protocol/wowz/WOWZSession:wrapWrite (Ljava/io/OutputStream;[BII)I // 56: pop // 57: goto -42 -> 15 // 60: aload_2 // 61: iconst_1 // 62: invokeinterface 262 2 0 // 67: astore_3 // 68: goto -51 -> 17 // Line number table: // Java source line #158 -> byte code offset #0 // Java source line #179 -> byte code offset #10 // Java source line #181 -> byte code offset #15 // Java source line #196 -> byte code offset #16 // Java source line #164 -> byte code offset #17 // Java source line #166 -> byte code offset #23 // Java source line #175 -> byte code offset #32 // Java source line #168 -> byte code offset #40 // Java source line #169 -> byte code offset #46 // Java source line #170 -> byte code offset #57 // Java source line #160 -> byte code offset #60 // Local variable table: // start length slot name signature // 0 71 0 this LivePlayer // 0 71 1 paramOutputStream OutputStream // 0 71 2 paramIMediaStream IMediaStream // 33 35 3 arrayOfByte byte[] // 10 1 4 localException Exception // 21 6 4 i int // 44 3 5 localWOWZSession com.wowza.wms.protocol.wowz.WOWZSession // Exception table: // from to target type // 17 60 10 java/lang/Exception } /* Error */ protected void sendBurstEnd(OutputStream paramOutputStream, IMediaStream paramIMediaStream) { // Byte code: // 0: aload_0 // 1: getfield 116 com/wowza/wms/stream/live/LivePlayer:isBurstCapable Z // 4: ifeq +7 -> 11 // 7: goto +53 -> 60 // 10: nop // 11: return // 12: astore 4 // 14: goto -3 -> 11 // 17: aload_1 // 18: invokestatic 242 com/wowza/util/IFasterByteArrayOutputStream:getProtocol (Ljava/io/OutputStream;)I // 21: istore 4 // 23: iload 4 // 25: iconst_4 // 26: if_icmpne +6 -> 32 // 29: goto +11 -> 40 // 32: aload_1 // 33: aload_3 // 34: invokevirtual 248 java/io/OutputStream:write ([B)V // 37: goto -27 -> 10 // 40: aload_1 // 41: invokestatic 252 com/wowza/util/IFasterByteArrayOutputStream:getWOWZSession (Ljava/io/OutputStream;)Lcom/wowza/wms/protocol/wowz/WOWZSession; // 44: astore 5 // 46: aload 5 // 48: aload_1 // 49: aload_3 // 50: iconst_0 // 51: aload_3 // 52: arraylength // 53: invokevirtual 258 com/wowza/wms/protocol/wowz/WOWZSession:wrapWrite (Ljava/io/OutputStream;[BII)I // 56: pop // 57: goto -47 -> 10 // 60: aload_2 // 61: iconst_0 // 62: invokeinterface 262 2 0 // 67: astore_3 // 68: goto -51 -> 17 // Line number table: // Java source line #201 -> byte code offset #0 // Java source line #223 -> byte code offset #10 // Java source line #238 -> byte code offset #11 // Java source line #221 -> byte code offset #12 // Java source line #207 -> byte code offset #17 // Java source line #208 -> byte code offset #23 // Java source line #217 -> byte code offset #32 // Java source line #210 -> byte code offset #40 // Java source line #211 -> byte code offset #46 // Java source line #212 -> byte code offset #57 // Java source line #203 -> byte code offset #60 // Local variable table: // start length slot name signature // 0 71 0 this LivePlayer // 0 71 1 paramOutputStream OutputStream // 0 71 2 paramIMediaStream IMediaStream // 33 35 3 arrayOfByte byte[] // 12 1 4 localException Exception // 21 6 4 i int // 44 3 5 localWOWZSession com.wowza.wms.protocol.wowz.WOWZSession // Exception table: // from to target type // 17 60 12 java/lang/Exception } protected int packetOutput(OutputStream paramOutputStream, IMediaStream paramIMediaStream, AMFPacket paramAMFPacket, long paramLong, AMFObj paramAMFObj, byte[] paramArrayOfByte, int paramInt) { if (startPacketsSent != packetsSent) {} for (;; sendBurstStart(paramOutputStream, paramIMediaStream)) { packetsSent += 1; return StreamUtils.packetOutput(paramOutputStream, paramIMediaStream, paramAMFPacket, paramLong, paramAMFObj, paramArrayOfByte, paramInt, referenceWrite); } } protected int doSwitch(IMediaStream paramIMediaStream, OutputStream paramOutputStream, AMFObj paramAMFObj1, AMFObj paramAMFObj2, AMFObj paramAMFObj3, long[] paramArrayOfLong, long paramLong, byte paramByte, AMFPacket paramAMFPacket1, AMFPacket paramAMFPacket2, AMFPacket paramAMFPacket3) { int i = 0; Client localClient = (Client)paramIMediaStream.getClient(); int j = localClient.getSendChunkSize(); checkWorkBuffer(j); AMFPacket localAMFPacket1 = new AMFPacket(8, paramIMediaStream.getSrc(), 0); Object localObject; label165: label219: label422: label448: AMFPacket localAMFPacket2; if (localAMFPacket1 != null) { if ((paramByte & 0xF) == 12) { break label863; byte[] arrayOfByte2 = new byte[5]; int k; arrayOfByte2[0] = ((byte)(16 + (byte)(k & 0xF))); arrayOfByte2[1] = 2; arrayOfByte2[2] = 0; arrayOfByte2[3] = 0; arrayOfByte2[4] = 0; ((AMFPacket)localObject).addData(arrayOfByte2, 0, arrayOfByte2.length); break label702; if ((k & 0xF) != 12) { break label702; } break label422; for (;; localObject == null) { i += packetOutput(paramOutputStream, paramIMediaStream, getEnhanceSeekPacket(paramIMediaStream, k, true), paramLong, paramAMFObj2, workBuffer, j); break; } paramArrayOfLong[0] += 0L; paramArrayOfLong[1] += 1L; i += packetOutput(paramOutputStream, paramIMediaStream, localAMFPacket1, paramLong, paramAMFObj1, workBuffer, j); paramAMFObj1.setNew(true); break label678; ResponseFunction localResponseFunction = null; localObject = null; localResponseFunction = new ResponseFunction(paramIMediaStream.getClient(), paramIMediaStream.getRespAMFDataObj()); localResponseFunction.createSeekMessage(JSON.copyValueOf("99\013-;/).", 57 - -29)); localResponseFunction.setSrc(paramIMediaStream.getSrc()); localResponseFunction.setType(18); localResponseFunction.setTimecode(paramLong); localObject = new AMFDataObj(); ((AMFDataObj)localObject).put(JSON.copyValueOf("\"-'!", -30 - 1), new AMFDataItem(Base64.endsWith(-59 - 48, "[scKmh~}p0[auc-Wqgu|"))); localResponseFunction.addBody((AMFData)localObject); i += localResponseFunction.write(paramOutputStream, true, j); i += packetOutput(paramOutputStream, paramIMediaStream, paramAMFPacket1, paramLong, paramAMFObj3, workBuffer, j); break label694; } for (;;) { paramArrayOfLong[0] += 0L; paramArrayOfLong[1] += 1L; i += packetOutput(paramOutputStream, paramIMediaStream, localAMFPacket1, paramLong, paramAMFObj1, workBuffer, j); paramAMFObj1.setNew(true); break label464; localObject = new AMFPacket(9, paramIMediaStream.getSrc(), 5); if (localObject == null) { break label702; } break; if (localAMFPacket2 != null) { break label794; label456: if (localObject == null) { break label855; } break label712; } label464: label526: label552: label576: do { if (paramAMFPacket1 == null) { break label694; } break label219; paramArrayOfLong[2] += paramAMFPacket3.getSize(); paramArrayOfLong[3] += 1L; i += packetOutput(paramOutputStream, paramIMediaStream, paramAMFPacket3, paramLong, paramAMFObj2, workBuffer, j); if (!isEnhancedSeekCapable) { break label855; } break label456; i += packetOutput(paramOutputStream, paramIMediaStream, paramAMFPacket2, paramLong, paramAMFObj2, workBuffer, j); break label791; int m = (byte)paramAMFPacket3.getFirstByte(); localObject = null; if ((m & 0xF) == 7) { break label422; } break;i += paramIMediaStream.sendPlayStatus(paramOutputStream, paramLong, 1, 0.0D, 0.0D); i += paramIMediaStream.sendPlayStart(paramOutputStream, paramIMediaStream.getName(), true, true, paramLong, null); } while (localAMFPacket1 == null); } } for (;;) { byte[] arrayOfByte1 = new byte[5]; arrayOfByte1[0] = ((byte)(16 + (byte)(paramByte & 0xF))); arrayOfByte1[1] = 2; arrayOfByte1[2] = 0; arrayOfByte1[3] = 0; arrayOfByte1[4] = 0; localAMFPacket2.addData(arrayOfByte1, 0, arrayOfByte1.length); break label448; label678: localAMFPacket2 = null; if ((paramByte & 0xF) != 7) { break; label694: if (paramAMFPacket3 != null) { break label552; label702: if (!isEnhancedSeekCapable) { break label847; } break label165; label712: i += packetOutput(paramOutputStream, paramIMediaStream, getEnhanceSeekPacket(paramIMediaStream, arrayOfByte1, false), paramLong, paramAMFObj2, workBuffer, j); break label855; paramArrayOfLong[2] += ((AMFPacket)localObject).getSize(); paramArrayOfLong[3] += 1L; i += packetOutput(paramOutputStream, paramIMediaStream, (AMFPacket)localObject, paramLong, paramAMFObj2, workBuffer, j); } label791: label794: label847: label855: for (; paramAMFPacket2 == null; goto 744) { return i;paramArrayOfLong[2] += localAMFPacket2.getSize();paramArrayOfLong[3] += 1L;i += packetOutput(paramOutputStream, paramIMediaStream, localAMFPacket2, paramLong, paramAMFObj2, workBuffer, j);paramAMFObj2.setNew(true); break label576; if (localObject == null) { break; } } break label526; } label863: localAMFPacket2 = new AMFPacket(9, paramIMediaStream.getSrc(), 5); if (localAMFPacket2 == null) { break label448; } } } public void init(IMediaStream paramIMediaStream, MediaStreamMap paramMediaStreamMap) { WMSProperties localWMSProperties = stream.getParent().getProperties(); isDebugLog = WMSLoggerFactory.getLogger(LivePlayer.class).isDebugEnabled(); if (localWMSProperties != null) { break label61; } label61: label423: for (;;) { b = new PacketTimecodeDebug(null); for (;;) { if (isDebugLog) { break label423; } return;disableLowBandwidthThrottling = localWMSProperties.getPropertyBoolean(Base64.endsWith('?' / '�', "gmvgedlFd{Ooatf{w`}Bjvnoptpx"), disableLowBandwidthThrottling);instantOn = localWMSProperties.getPropertyBoolean(JSON.copyValueOf("<8$,84/\0233", 35 * 7), instantOn);instantOnBufferTime = localWMSProperties.getPropertyInt(JSON.copyValueOf("kmwqgi|FdIykhjbE{~q", 97 + 33), instantOnBufferTime);waitForBufferFill = localWMSProperties.getPropertyBoolean(Base64.endsWith(119 + -109, "}jeyH`bSgurpdQquv"), waitForBufferFill);waitForBufferKeyFrame = localWMSProperties.getPropertyBoolean(JSON.copyValueOf("qfa}Ld~O{ivt`XqlPeyt", '?' / '�'), waitForBufferKeyFrame);behindDropDFrames = localWMSProperties.getPropertyInt(Base64.endsWith(53 * 51, "muy{}pQdxh]\\i}p{l"), behindDropDFrames);behindDropPFrames = localWMSProperties.getPropertyInt(JSON.copyValueOf("{wiofGvjvWN{kfi~", 57 * 5), behindDropPFrames);behindDropKFrames = localWMSProperties.getPropertyInt(Base64.endsWith(35 * 27, "sw{}{rSjvjPZor%2"), behindDropKFrames);behindDropAudio = behindDropKFrames;behindDropAudio = localWMSProperties.getPropertyInt(JSON.copyValueOf("{susz[2.2\0021!/(", 66 + -9), behindDropAudio);maximumLiveLatency = localWMSProperties.getPropertyInt(Base64.endsWith(-47 - -11, "1<&3)7'\"1!/($(>.\".7"), maximumLiveLatency);sendOriginalTimecodes = localWMSProperties.getPropertyBoolean(JSON.copyValueOf("`q{rXjp}rr|rKilg`kact", 33 - 14), sendOriginalTimecodes);referenceWritePacketSizeThreshold = localWMSProperties.getPropertyInt(Base64.endsWith('?' / 95, "qaccumgin[g{uAsppbDqcOto{lhnng"), referenceWritePacketSizeThreshold);referenceWrite = localWMSProperties.getPropertyBoolean(Base64.endsWith(-65 - -41, ":,,.>( ,5\006 : 0"), referenceWrite);a = localWMSProperties.getPropertyBoolean(Base64.endsWith(-36 - 59, "dlbficCqgkfen]{bts~Ytd|}ki"), a);boolean bool = false;bool = localWMSProperties.getPropertyBoolean(Base64.endsWith(45 * 27, "{%#7$\01302 ' $,\036\031\003\037\0000181!\002>5<)"), bool); if (bool) { break; } } } } /* Error */ protected boolean testVideoFrame(int arg1, int arg2) { // Byte code: // 0: iload_1 // 1: iconst_1 // 2: iload_2 // 3: bipush 48 // 5: iand // 6: iconst_4 // 7: ishr // 8: iconst_1 // 9: isub // 10: ishl // 11: iand // 12: ifeq +7 -> 19 // 15: goto +8 -> 23 // 18: ireturn // 19: iconst_0 // 20: goto -2 -> 18 // 23: iconst_1 // 24: goto -6 -> 18 // Line number table: // Java source line #445 -> byte code offset #0 } protected void checkWorkBuffer(int paramInt) { int i = 0; if (workBuffer == null) { break label47; } for (;;) { if (i != 0) { break label37; for (;; workBuffer.length >= paramInt) { i = 1; break; } } label37: for (;; workBuffer = new byte[paramInt]) { return; } label47: i = 1; } } /* Error */ protected AMFPacket getEnhanceSeekPacket(IMediaStream arg1, int arg2, boolean arg3) { // Byte code: // 0: new 287 com/wowza/wms/amf/AMFPacket // 3: dup // 4: bipush 9 // 6: aload_1 // 7: invokeinterface 290 1 0 // 12: iconst_2 // 13: invokespecial 293 com/wowza/wms/amf/AMFPacket:<init> (III)V // 16: astore 4 // 18: iconst_2 // 19: newarray <illegal type> // 21: astore 5 // 23: aload 5 // 25: iconst_0 // 26: bipush 80 // 28: iload_2 // 29: bipush 15 // 31: iand // 32: i2b // 33: ior // 34: i2b // 35: bastore // 36: aload 5 // 38: iconst_1 // 39: iload_3 // 40: ifeq +23 -> 63 // 43: goto +24 -> 67 // 46: i2b // 47: bastore // 48: aload 4 // 50: aload 5 // 52: iconst_0 // 53: aload 5 // 55: arraylength // 56: invokevirtual 297 com/wowza/wms/amf/AMFPacket:addData ([BII)I // 59: pop // 60: aload 4 // 62: areturn // 63: iconst_1 // 64: goto -18 -> 46 // 67: iconst_0 // 68: goto -22 -> 46 // Line number table: // Java source line #461 -> byte code offset #0 // Java source line #462 -> byte code offset #18 // Java source line #463 -> byte code offset #23 // Java source line #464 -> byte code offset #36 // Java source line #465 -> byte code offset #48 // Java source line #466 -> byte code offset #60 // Java source line #464 -> byte code offset #63 } /* Error */ protected int playKeyFrame(IMediaStream arg1, OutputStream arg2, AMFObj arg3, AMFObj arg4, AMFObj arg5, long[] arg6) { // Byte code: // 0: iconst_0 // 1: istore 7 // 3: aload_0 // 4: getfield 94 com/wowza/wms/stream/live/LivePlayer:stream Lcom/wowza/wms/stream/IMediaStreamPlay; // 7: invokeinterface 396 1 0 // 12: invokeinterface 462 1 0 // 17: ifne +1403 -> 1420 // 20: goto +1410 -> 1430 // 23: aload_0 // 24: aload_2 // 25: aload_0 // 26: getfield 94 com/wowza/wms/stream/live/LivePlayer:stream Lcom/wowza/wms/stream/IMediaStreamPlay; // 29: invokeinterface 396 1 0 // 34: invokevirtual 464 com/wowza/wms/stream/live/LivePlayer:sendBurstEnd (Ljava/io/OutputStream;Lcom/wowza/wms/stream/IMediaStream;)V // 37: goto +1375 -> 1412 // 40: aload_0 // 41: getfield 94 com/wowza/wms/stream/live/LivePlayer:stream Lcom/wowza/wms/stream/IMediaStreamPlay; // 44: invokeinterface 396 1 0 // 49: invokeinterface 225 1 0 // 54: checkcast 277 com/wowza/wms/client/Client // 57: astore 9 // 59: aload 9 // 61: invokevirtual 281 com/wowza/wms/client/Client:getSendChunkSize ()I // 64: istore 10 // 66: aload_0 // 67: iload 10 // 69: invokevirtual 285 com/wowza/wms/stream/live/LivePlayer:checkWorkBuffer (I)V // 72: aload_0 // 73: dup // 74: dup // 75: getfield 94 com/wowza/wms/stream/live/LivePlayer:stream Lcom/wowza/wms/stream/IMediaStreamPlay; // 78: invokeinterface 396 1 0 // 83: invokevirtual 466 com/wowza/wms/stream/live/LivePlayer:isEnhancedSeekCapable (Lcom/wowza/wms/stream/IMediaStream;)Z // 86: putfield 114 com/wowza/wms/stream/live/LivePlayer:isEnhancedSeekCapable Z // 89: aload_0 // 90: getfield 213 com/wowza/wms/stream/live/LivePlayer:a Z // 93: ifeq +329 -> 422 // 96: goto +176 -> 272 // 99: aload 6 // 101: iconst_2 // 102: dup2 // 103: laload // 104: aload 12 // 106: invokevirtual 371 com/wowza/wms/amf/AMFPacket:getSize ()I // 109: i2l // 110: ladd // 111: lastore // 112: aload 6 // 114: iconst_3 // 115: dup2 // 116: laload // 117: lconst_1 // 118: ladd // 119: lastore // 120: iload 7 // 122: aload_0 // 123: aload_2 // 124: aload_0 // 125: getfield 94 com/wowza/wms/stream/live/LivePlayer:stream Lcom/wowza/wms/stream/IMediaStreamPlay; // 128: invokeinterface 396 1 0 // 133: aload 12 // 135: lload 13 // 137: aload 4 // 139: aload_0 // 140: getfield 96 com/wowza/wms/stream/live/LivePlayer:workBuffer [B // 143: iload 10 // 145: invokevirtual 303 com/wowza/wms/stream/live/LivePlayer:packetOutput (Ljava/io/OutputStream;Lcom/wowza/wms/stream/IMediaStream;Lcom/wowza/wms/amf/AMFPacket;JLcom/wowza/wms/amf/AMFObj;[BI)I // 148: iadd // 149: istore 7 // 151: iload 17 // 153: ifeq +1164 -> 1317 // 156: goto +495 -> 651 // 159: aload_0 // 160: getfield 114 com/wowza/wms/stream/live/LivePlayer:isEnhancedSeekCapable Z // 163: ifeq -64 -> 99 // 166: goto +1100 -> 1266 // 169: new 287 com/wowza/wms/amf/AMFPacket // 172: dup // 173: bipush 9 // 175: aload_1 // 176: invokeinterface 290 1 0 // 181: iconst_5 // 182: invokespecial 293 com/wowza/wms/amf/AMFPacket:<init> (III)V // 185: astore 19 // 187: aload 19 // 189: ifnull +576 -> 765 // 192: goto +624 -> 816 // 195: goto +1060 -> 1255 // 198: iload 7 // 200: aload_0 // 201: getfield 94 com/wowza/wms/stream/live/LivePlayer:stream Lcom/wowza/wms/stream/IMediaStreamPlay; // 204: invokeinterface 396 1 0 // 209: aload_2 // 210: lload 13 // 212: iconst_2 // 213: dconst_0 // 214: dconst_0 // 215: invokeinterface 378 9 0 // 220: iadd // 221: istore 7 // 223: iload 7 // 225: aload_0 // 226: getfield 94 com/wowza/wms/stream/live/LivePlayer:stream Lcom/wowza/wms/stream/IMediaStreamPlay; // 229: invokeinterface 396 1 0 // 234: aload_2 // 235: lload 13 // 237: aload_0 // 238: getfield 94 com/wowza/wms/stream/live/LivePlayer:stream Lcom/wowza/wms/stream/IMediaStreamPlay; // 241: invokeinterface 396 1 0 // 246: invokeinterface 382 1 0 // 251: invokeinterface 469 5 0 // 256: iadd // 257: istore 7 // 259: aload_0 // 260: iconst_0 // 261: putfield 128 com/wowza/wms/stream/live/LivePlayer:sendPlayStop Z // 264: aload_0 // 265: iconst_0 // 266: putfield 118 com/wowza/wms/stream/live/LivePlayer:sendFirstKeyFrame Z // 269: goto +29 -> 298 // 272: aload_0 // 273: dup // 274: dup // 275: getfield 94 com/wowza/wms/stream/live/LivePlayer:stream Lcom/wowza/wms/stream/IMediaStreamPlay; // 278: invokeinterface 396 1 0 // 283: invokevirtual 471 com/wowza/wms/stream/live/LivePlayer:isBurstCapable (Lcom/wowza/wms/stream/IMediaStream;)Z // 286: putfield 116 com/wowza/wms/stream/live/LivePlayer:isBurstCapable Z // 289: goto +133 -> 422 // 292: aload 8 // 294: monitorexit // 295: goto +1159 -> 1454 // 298: aload_0 // 299: iconst_1 // 300: putfield 184 com/wowza/wms/stream/live/LivePlayer:playlistEnd Z // 303: goto -11 -> 292 // 306: aload_1 // 307: invokeinterface 475 1 0 // 312: astore 16 // 314: aload 16 // 316: ifnull +436 -> 752 // 319: goto +900 -> 1219 // 322: aload 6 // 324: iconst_0 // 325: dup2 // 326: laload // 327: lconst_0 // 328: ladd // 329: lastore // 330: aload 6 // 332: iconst_1 // 333: dup2 // 334: laload // 335: lconst_1 // 336: ladd // 337: lastore // 338: iload 7 // 340: aload_0 // 341: aload_2 // 342: aload_0 // 343: getfield 94 com/wowza/wms/stream/live/LivePlayer:stream Lcom/wowza/wms/stream/IMediaStreamPlay; // 346: invokeinterface 396 1 0 // 351: aload 18 // 353: lload 13 // 355: aload_3 // 356: aload_0 // 357: getfield 96 com/wowza/wms/stream/live/LivePlayer:workBuffer [B // 360: iload 10 // 362: invokevirtual 303 com/wowza/wms/stream/live/LivePlayer:packetOutput (Ljava/io/OutputStream;Lcom/wowza/wms/stream/IMediaStream;Lcom/wowza/wms/amf/AMFPacket;JLcom/wowza/wms/amf/AMFObj;[BI)I // 365: iadd // 366: istore 7 // 368: aload_3 // 369: iconst_1 // 370: invokevirtual 309 com/wowza/wms/amf/AMFObj:setNew (Z)V // 373: goto +538 -> 911 // 376: aload 22 // 378: invokeinterface 480 1 0 // 383: checkcast 287 com/wowza/wms/amf/AMFPacket // 386: astore 23 // 388: iload 7 // 390: aload_0 // 391: aload_2 // 392: aload_0 // 393: getfield 94 com/wowza/wms/stream/live/LivePlayer:stream Lcom/wowza/wms/stream/IMediaStreamPlay; // 396: invokeinterface 396 1 0 // 401: aload 23 // 403: lload 13 // 405: aload 5 // 407: aload_0 // 408: getfield 96 com/wowza/wms/stream/live/LivePlayer:workBuffer [B // 411: iload 10 // 413: invokevirtual 303 com/wowza/wms/stream/live/LivePlayer:packetOutput (Ljava/io/OutputStream;Lcom/wowza/wms/stream/IMediaStream;Lcom/wowza/wms/amf/AMFPacket;JLcom/wowza/wms/amf/AMFObj;[BI)I // 416: iadd // 417: istore 7 // 419: goto +219 -> 638 // 422: iconst_m1 // 423: istore 11 // 425: aload_0 // 426: aload_1 // 427: invokevirtual 484 com/wowza/wms/stream/live/LivePlayer:getLastKeyFrame (Lcom/wowza/wms/stream/IMediaStream;)Lcom/wowza/wms/amf/AMFPacket; // 430: astore 12 // 432: aload 12 // 434: ifnull -142 -> 292 // 437: goto +916 -> 1353 // 440: iload 7 // 442: aload_0 // 443: getfield 94 com/wowza/wms/stream/live/LivePlayer:stream Lcom/wowza/wms/stream/IMediaStreamPlay; // 446: invokeinterface 396 1 0 // 451: aload_2 // 452: aload_0 // 453: getfield 94 com/wowza/wms/stream/live/LivePlayer:stream Lcom/wowza/wms/stream/IMediaStreamPlay; // 456: invokeinterface 396 1 0 // 461: invokeinterface 382 1 0 // 466: lload 13 // 468: aload_0 // 469: getfield 112 com/wowza/wms/stream/live/LivePlayer:firstPacketTC J // 472: invokeinterface 488 7 0 // 477: iadd // 478: istore 7 // 480: aload_0 // 481: iconst_1 // 482: putfield 126 com/wowza/wms/stream/live/LivePlayer:sentPlayStart Z // 485: aload_0 // 486: iconst_1 // 487: putfield 128 com/wowza/wms/stream/live/LivePlayer:sendPlayStop Z // 490: aload_0 // 491: getfield 94 com/wowza/wms/stream/live/LivePlayer:stream Lcom/wowza/wms/stream/IMediaStreamPlay; // 494: invokeinterface 396 1 0 // 499: iconst_1 // 500: invokeinterface 491 2 0 // 505: sipush 473 // 508: bipush 83 // 510: idiv // 511: ldc_w 493 // 514: invokestatic 355 com/wowza/util/Base64:endsWith (ILjava/lang/String;)Ljava/lang/String; // 517: new 495 java/lang/Long // 520: dup // 521: lconst_0 // 522: invokespecial 497 java/lang/Long:<init> (J)V // 525: invokestatic 501 com/wowza/wms/logging/WMSLoggerFactory:putGlobalLogValue (Ljava/lang/String;Ljava/lang/Object;)V // 528: ldc_w 503 // 531: invok Further reading...For more information on Java 1.5 Tiger, you may find Java 1.5 Tiger, A developer's Notebook by D. Flanagan and B. McLaughlin from O'Reilly of interest.New!JAR listings
|