wms-stream-live

16: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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22

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


Copyright 2006-2019. Infinite Loop Ltd