package net.minecraft.client.stream;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import java.util.ArrayList;
import java.util.List;
import tv.twitch.AuthToken;
import tv.twitch.ErrorCode;
import tv.twitch.broadcast.ArchivingState;
import tv.twitch.broadcast.AudioParams;
import tv.twitch.broadcast.ChannelInfo;
import tv.twitch.broadcast.EncodingCpuUsage;
import tv.twitch.broadcast.FrameBuffer;
import tv.twitch.broadcast.GameInfoList;
import tv.twitch.broadcast.IStatCallbacks;
import tv.twitch.broadcast.IStreamCallbacks;
import tv.twitch.broadcast.IngestList;
import tv.twitch.broadcast.IngestServer;
import tv.twitch.broadcast.PixelFormat;
import tv.twitch.broadcast.RTMPState;
import tv.twitch.broadcast.StartFlags;
import tv.twitch.broadcast.StatType;
import tv.twitch.broadcast.Stream;
import tv.twitch.broadcast.StreamInfo;
import tv.twitch.broadcast.UserInfo;
import tv.twitch.broadcast.VideoParams;
@SideOnly(Side.CLIENT)
public class IngestServerTester implements IStatCallbacks, IStreamCallbacks
{
protected final boolean field_153043_a = true;
protected IngestServerTester.IngestTestListener field_153044_b = null;
protected Stream field_153045_c = null;
protected IngestList field_153046_d = null;
protected IngestServerTester.IngestTestState field_153047_e;
protected long field_153048_f;
protected long field_153049_g;
protected long field_153050_h;
protected RTMPState field_153051_i;
protected VideoParams field_153052_j;
protected AudioParams field_153053_k;
protected long field_153054_l;
protected List field_153055_m;
protected boolean field_153056_n;
protected IStreamCallbacks field_153057_o;
protected IStatCallbacks field_153058_p;
protected IngestServer field_153059_q;
protected boolean field_153060_r;
protected boolean field_153061_s;
protected int field_153062_t;
protected int field_153063_u;
protected long field_153064_v;
protected float field_153065_w;
protected float field_153066_x;
protected boolean field_153067_y;
private static final String __OBFID = "CL_00001816";
public void func_153042_a(IngestServerTester.IngestTestListener p_153042_1_)
{
this.field_153044_b = p_153042_1_;
}
public IngestServer func_153040_c()
{
return this.field_153059_q;
}
public boolean func_153032_e()
{
return this.field_153047_e == IngestServerTester.IngestTestState.Finished || this.field_153047_e == IngestServerTester.IngestTestState.Cancelled || this.field_153047_e == IngestServerTester.IngestTestState.Failed;
}
public float func_153030_h()
{
return this.field_153066_x;
}
public void requestAuthTokenCallback(ErrorCode p_requestAuthTokenCallback_1_, AuthToken p_requestAuthTokenCallback_2_) {}
public void loginCallback(ErrorCode p_loginCallback_1_, ChannelInfo p_loginCallback_2_) {}
public void getIngestServersCallback(ErrorCode p_getIngestServersCallback_1_, IngestList p_getIngestServersCallback_2_) {}
public void getUserInfoCallback(ErrorCode p_getUserInfoCallback_1_, UserInfo p_getUserInfoCallback_2_) {}
public void getStreamInfoCallback(ErrorCode p_getStreamInfoCallback_1_, StreamInfo p_getStreamInfoCallback_2_) {}
public void getArchivingStateCallback(ErrorCode p_getArchivingStateCallback_1_, ArchivingState p_getArchivingStateCallback_2_) {}
public void runCommercialCallback(ErrorCode p_runCommercialCallback_1_) {}
public void setStreamInfoCallback(ErrorCode p_setStreamInfoCallback_1_) {}
public void getGameNameListCallback(ErrorCode p_getGameNameListCallback_1_, GameInfoList p_getGameNameListCallback_2_) {}
public void bufferUnlockCallback(long p_bufferUnlockCallback_1_) {}
public void startCallback(ErrorCode p_startCallback_1_)
{
this.field_153067_y = false;
if (ErrorCode.succeeded(p_startCallback_1_))
{
this.func_153034_a(IngestServerTester.IngestTestState.ConnectingToServer);
this.field_153054_l = System.currentTimeMillis();
}
else
{
this.field_153056_n = false;
this.func_153034_a(IngestServerTester.IngestTestState.DoneTestingServer);
}
}
public void stopCallback(ErrorCode p_stopCallback_1_)
{
this.field_153067_y = false;
this.func_153034_a(IngestServerTester.IngestTestState.DoneTestingServer);
}
public void sendActionMetaDataCallback(ErrorCode p_sendActionMetaDataCallback_1_) {}
public void sendStartSpanMetaDataCallback(ErrorCode p_sendStartSpanMetaDataCallback_1_) {}
public void sendEndSpanMetaDataCallback(ErrorCode p_sendEndSpanMetaDataCallback_1_) {}
public void statCallback(StatType p_statCallback_1_, long p_statCallback_2_)
{
switch (IngestServerTester.SwitchStatType.field_153026_a[p_statCallback_1_.ordinal()])
{
case 1:
this.field_153051_i = RTMPState.lookupValue((int)p_statCallback_2_);
break;
case 2:
this.field_153050_h = p_statCallback_2_;
}
}
public IngestServerTester(Stream p_i1019_1_, IngestList p_i1019_2_)
{
this.field_153047_e = IngestServerTester.IngestTestState.Uninitalized;
this.field_153048_f = 8000L;
this.field_153049_g = 1000L;
this.field_153050_h = 0L;
this.field_153051_i = RTMPState.Invalid;
this.field_153052_j = null;
this.field_153053_k = null;
this.field_153054_l = 0L;
this.field_153055_m = null;
this.field_153056_n = false;
this.field_153057_o = null;
this.field_153058_p = null;
this.field_153059_q = null;
this.field_153060_r = false;
this.field_153061_s = false;
this.field_153062_t = -1;
this.field_153063_u = 0;
this.field_153064_v = 0L;
this.field_153065_w = 0.0F;
this.field_153066_x = 0.0F;
this.field_153067_y = false;
this.field_153045_c = p_i1019_1_;
this.field_153046_d = p_i1019_2_;
}
protected void finalize() throws Throwable
{
if (this.field_153059_q != null)
{
this.func_153035_b(this.field_153059_q);
}
this.func_153031_o();
super.finalize();
}
public void func_153033_i()
{
if (this.field_153047_e == IngestServerTester.IngestTestState.Uninitalized)
{
this.field_153062_t = 0;
this.field_153060_r = false;
this.field_153061_s = false;
this.field_153058_p = this.field_153045_c.getStatCallbacks();
this.field_153045_c.setStatCallbacks(this);
this.field_153057_o = this.field_153045_c.getStreamCallbacks();
this.field_153045_c.setStreamCallbacks(this);
this.field_153052_j = new VideoParams();
this.field_153052_j.targetFps = 60;
this.field_153052_j.maxKbps = 3500;
this.field_153052_j.outputWidth = 1280;
this.field_153052_j.outputHeight = 720;
this.field_153052_j.pixelFormat = PixelFormat.TTV_PF_BGRA;
this.field_153052_j.encodingCpuUsage = EncodingCpuUsage.TTV_ECU_HIGH;
this.field_153052_j.disableAdaptiveBitrate = true;
this.field_153052_j.verticalFlip = false;
this.field_153045_c.getDefaultParams(this.field_153052_j);
this.field_153053_k = new AudioParams();
this.field_153053_k.audioEnabled = false;
this.field_153055_m = new ArrayList();
byte b0 = 3;
for (int i = 0; i < b0; ++i)
{
FrameBuffer framebuffer = this.field_153045_c.allocateFrameBuffer(this.field_153052_j.outputWidth * this.field_153052_j.outputHeight * 4);
if (!framebuffer.getIsValid())
{
this.func_153031_o();
this.func_153034_a(IngestServerTester.IngestTestState.Failed);
return;
}
this.field_153055_m.add(framebuffer);
this.field_153045_c.randomizeFrameBuffer(framebuffer);
}
this.func_153034_a(IngestServerTester.IngestTestState.Starting);
this.field_153054_l = System.currentTimeMillis();
}
}
public void func_153041_j()
{
if (!this.func_153032_e() && this.field_153047_e != IngestServerTester.IngestTestState.Uninitalized)
{
if (!this.field_153067_y)
{
if (this.field_153060_r)
{
this.func_153034_a(IngestServerTester.IngestTestState.Cancelled);
}
switch (IngestServerTester.SwitchStatType.field_153027_b[this.field_153047_e.ordinal()])
{
case 1:
case 2:
if (this.field_153059_q != null)
{
if (!this.field_153061_s && this.field_153056_n)
{
this.func_153035_b(this.field_153059_q);
}
else
{
this.field_153059_q.bitrateKbps = 0.0F;
this.field_153054_l = 0L;
this.field_153067_y = false;
}
this.field_153059_q = null;
}
else if (!this.field_153067_y && this.func_153037_m() >= this.field_153049_g)
{
this.field_153054_l = 0L;
this.field_153061_s = false;
this.field_153056_n = true;
if (this.field_153047_e != IngestServerTester.IngestTestState.Starting)
{
++this.field_153062_t;
}
if (this.field_153062_t < this.field_153046_d.getServers().length)
{
this.field_153059_q = this.field_153046_d.getServers()[this.field_153062_t];
this.func_153036_a(this.field_153059_q);
}
else
{
this.func_153034_a(IngestServerTester.IngestTestState.Finished);
}
}
break;
case 3:
case 4:
this.func_153029_c(this.field_153059_q);
}
this.func_153038_n();
if (this.field_153047_e == IngestServerTester.IngestTestState.Cancelled || this.field_153047_e == IngestServerTester.IngestTestState.Finished)
{
if (this.field_153059_q != null)
{
if (this.field_153047_e == IngestServerTester.IngestTestState.Cancelled)
{
this.field_153059_q.bitrateKbps = 0.0F;
}
this.func_153035_b(this.field_153059_q);
this.field_153059_q = null;
}
if (this.field_153055_m != null)
{
this.func_153031_o();
}
}
}
}
}
public void func_153039_l()
{
if (!this.func_153032_e())
{
this.field_153060_r = true;
}
}
protected boolean func_153036_a(IngestServer p_153036_1_)
{
this.field_153056_n = true;
this.field_153050_h = 0L;
this.field_153051_i = RTMPState.Idle;
this.field_153059_q = p_153036_1_;
this.func_153034_a(IngestServerTester.IngestTestState.ConnectingToServer);
this.field_153067_y = true;
ErrorCode errorcode = this.field_153045_c.start(this.field_153052_j, this.field_153053_k, p_153036_1_, StartFlags.TTV_Start_BandwidthTest, true);
if (ErrorCode.failed(errorcode))
{
this.field_153056_n = false;
this.func_153034_a(IngestServerTester.IngestTestState.DoneTestingServer);
return false;
}
else
{
this.field_153064_v = this.field_153050_h;
p_153036_1_.bitrateKbps = 0.0F;
this.field_153063_u = 0;
return true;
}
}
protected void func_153035_b(IngestServer p_153035_1_)
{
this.field_153067_y = true;
this.field_153045_c.stop(true);
this.field_153045_c.pollStats();
}
protected long func_153037_m()
{
return System.currentTimeMillis() - this.field_153054_l;
}
protected void func_153038_n()
{
float f = (float)this.func_153037_m();
switch (IngestServerTester.SwitchStatType.field_153027_b[this.field_153047_e.ordinal()])
{
case 1:
case 3:
case 5:
case 6:
case 7:
case 8:
this.field_153066_x = 0.0F;
break;
case 2:
this.field_153066_x = 1.0F;
break;
case 4:
default:
this.field_153066_x = f / (float)this.field_153048_f;
}
switch (IngestServerTester.SwitchStatType.field_153027_b[this.field_153047_e.ordinal()])
{
case 6:
case 7:
case 8:
this.field_153065_w = 1.0F;
break;
default:
this.field_153065_w = (float)this.field_153062_t / (float)this.field_153046_d.getServers().length;
this.field_153065_w += this.field_153066_x / (float)this.field_153046_d.getServers().length;
}
}
protected boolean func_153029_c(IngestServer p_153029_1_)
{
if (!this.field_153061_s && this.func_153037_m() < this.field_153048_f)
{
if (this.field_153067_y)
{
return true;
}
else
{
ErrorCode errorcode = this.field_153045_c.submitVideoFrame((FrameBuffer)this.field_153055_m.get(this.field_153063_u));
if (ErrorCode.failed(errorcode))
{
this.field_153056_n = false;
this.func_153034_a(IngestServerTester.IngestTestState.DoneTestingServer);
return false;
}
else
{
this.field_153063_u = (this.field_153063_u + 1) % this.field_153055_m.size();
this.field_153045_c.pollStats();
if (this.field_153051_i == RTMPState.SendVideo)
{
this.func_153034_a(IngestServerTester.IngestTestState.TestingServer);
long i = this.func_153037_m();
if (i > 0L && this.field_153050_h > this.field_153064_v)
{
p_153029_1_.bitrateKbps = (float)(this.field_153050_h * 8L) / (float)this.func_153037_m();
this.field_153064_v = this.field_153050_h;
}
}
return true;
}
}
}
else
{
this.func_153034_a(IngestServerTester.IngestTestState.DoneTestingServer);
return true;
}
}
protected void func_153031_o()
{
this.field_153059_q = null;
if (this.field_153055_m != null)
{
for (int i = 0; i < this.field_153055_m.size(); ++i)
{
((FrameBuffer)this.field_153055_m.get(i)).free();
}
this.field_153055_m = null;
}
if (this.field_153045_c.getStatCallbacks() == this)
{
this.field_153045_c.setStatCallbacks(this.field_153058_p);
this.field_153058_p = null;
}
if (this.field_153045_c.getStreamCallbacks() == this)
{
this.field_153045_c.setStreamCallbacks(this.field_153057_o);
this.field_153057_o = null;
}
}
protected void func_153034_a(IngestServerTester.IngestTestState p_153034_1_)
{
if (p_153034_1_ != this.field_153047_e)
{
this.field_153047_e = p_153034_1_;
if (this.field_153044_b != null)
{
this.field_153044_b.func_152907_a(this, p_153034_1_);
}
}
}
public int func_153028_p()
{
return this.field_153062_t;
}
@SideOnly(Side.CLIENT)
public interface IngestTestListener
{
void func_152907_a(IngestServerTester p_152907_1_, IngestServerTester.IngestTestState p_152907_2_);
}
@SideOnly(Side.CLIENT)
public static enum IngestTestState
{
Uninitalized,
Starting,
ConnectingToServer,
TestingServer,
DoneTestingServer,
Finished,
Cancelled,
Failed;
private static final String __OBFID = "CL_00001814";
}
@SideOnly(Side.CLIENT)
static final class SwitchStatType
{
static final int[] field_153026_a;
static final int[] field_153027_b = new int[IngestServerTester.IngestTestState.values().length];
private static final String __OBFID = "CL_00001815";
static
{
try
{
field_153027_b[IngestServerTester.IngestTestState.Starting.ordinal()] = 1;
}
catch (NoSuchFieldError var10)
{
;
}
try
{
field_153027_b[IngestServerTester.IngestTestState.DoneTestingServer.ordinal()] = 2;
}
catch (NoSuchFieldError var9)
{
;
}
try
{
field_153027_b[IngestServerTester.IngestTestState.ConnectingToServer.ordinal()] = 3;
}
catch (NoSuchFieldError var8)
{
;
}
try
{
field_153027_b[IngestServerTester.IngestTestState.TestingServer.ordinal()] = 4;
}
catch (NoSuchFieldError var7)
{
;
}
try
{
field_153027_b[IngestServerTester.IngestTestState.Uninitalized.ordinal()] = 5;
}
catch (NoSuchFieldError var6)
{
;
}
try
{
field_153027_b[IngestServerTester.IngestTestState.Finished.ordinal()] = 6;
}
catch (NoSuchFieldError var5)
{
;
}
try
{
field_153027_b[IngestServerTester.IngestTestState.Cancelled.ordinal()] = 7;
}
catch (NoSuchFieldError var4)
{
;
}
try
{
field_153027_b[IngestServerTester.IngestTestState.Failed.ordinal()] = 8;
}
catch (NoSuchFieldError var3)
{
;
}
field_153026_a = new int[StatType.values().length];
try
{
field_153026_a[StatType.TTV_ST_RTMPSTATE.ordinal()] = 1;
}
catch (NoSuchFieldError var2)
{
;
}
try
{
field_153026_a[StatType.TTV_ST_RTMPDATASENT.ordinal()] = 2;
}
catch (NoSuchFieldError var1)
{
;
}
}
}
}