@supraio/client-daemon-js 0.0.1 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -5619,7 +5619,7 @@ $packages["internal/race"] = (function() {
5619
5619
  return $pkg;
5620
5620
  })();
5621
5621
  $packages["sync/atomic"] = (function() {
5622
- var $pkg = {}, $init, js, Value, ptrType$5, CompareAndSwapInt32, CompareAndSwapUint32, CompareAndSwapUint64, CompareAndSwapPointer, AddInt32, LoadInt32, LoadUint32, LoadUint64, LoadPointer, StoreInt32, StoreUint32, StoreUint64, StorePointer, sameType;
5622
+ var $pkg = {}, $init, js, Value, Bool, noCopy, ptrType, ptrType$5, ptrType$6, ptrType$12, b32, SwapUint32, CompareAndSwapInt32, CompareAndSwapUint32, CompareAndSwapUint64, CompareAndSwapPointer, AddInt32, LoadInt32, LoadUint32, LoadUint64, LoadPointer, StoreInt32, StoreUint32, StoreUint64, StorePointer, sameType;
5623
5623
  js = $packages["github.com/gopherjs/gopherjs/js"];
5624
5624
  Value = $pkg.Value = $newType(0, $kindStruct, "atomic.Value", true, "sync/atomic", true, function(v_) {
5625
5625
  this.$val = this;
@@ -5629,7 +5629,74 @@ $packages["sync/atomic"] = (function() {
5629
5629
  }
5630
5630
  this.v = v_;
5631
5631
  });
5632
+ Bool = $pkg.Bool = $newType(0, $kindStruct, "atomic.Bool", true, "sync/atomic", true, function(_$0_, v_) {
5633
+ this.$val = this;
5634
+ if (arguments.length === 0) {
5635
+ this._$0 = new noCopy.ptr();
5636
+ this.v = 0;
5637
+ return;
5638
+ }
5639
+ this._$0 = _$0_;
5640
+ this.v = v_;
5641
+ });
5642
+ noCopy = $pkg.noCopy = $newType(0, $kindStruct, "atomic.noCopy", true, "sync/atomic", false, function() {
5643
+ this.$val = this;
5644
+ if (arguments.length === 0) {
5645
+ return;
5646
+ }
5647
+ });
5648
+ ptrType = $ptrType($Uint32);
5632
5649
  ptrType$5 = $ptrType(Value);
5650
+ ptrType$6 = $ptrType(Bool);
5651
+ ptrType$12 = $ptrType(noCopy);
5652
+ Bool.ptr.prototype.Load = function() {
5653
+ var x;
5654
+ x = this;
5655
+ return !((LoadUint32((x.$ptr_v || (x.$ptr_v = new ptrType(function() { return this.$target.v; }, function($v) { this.$target.v = $v; }, x)))) === 0));
5656
+ };
5657
+ Bool.prototype.Load = function() { return this.$val.Load(); };
5658
+ Bool.ptr.prototype.Store = function(val) {
5659
+ var val, x;
5660
+ x = this;
5661
+ StoreUint32((x.$ptr_v || (x.$ptr_v = new ptrType(function() { return this.$target.v; }, function($v) { this.$target.v = $v; }, x))), b32(val));
5662
+ };
5663
+ Bool.prototype.Store = function(val) { return this.$val.Store(val); };
5664
+ Bool.ptr.prototype.Swap = function(new$1) {
5665
+ var new$1, old, x;
5666
+ old = false;
5667
+ x = this;
5668
+ old = !((SwapUint32((x.$ptr_v || (x.$ptr_v = new ptrType(function() { return this.$target.v; }, function($v) { this.$target.v = $v; }, x))), b32(new$1)) === 0));
5669
+ return old;
5670
+ };
5671
+ Bool.prototype.Swap = function(new$1) { return this.$val.Swap(new$1); };
5672
+ Bool.ptr.prototype.CompareAndSwap = function(old, new$1) {
5673
+ var new$1, old, swapped, x;
5674
+ swapped = false;
5675
+ x = this;
5676
+ swapped = CompareAndSwapUint32((x.$ptr_v || (x.$ptr_v = new ptrType(function() { return this.$target.v; }, function($v) { this.$target.v = $v; }, x))), b32(old), b32(new$1));
5677
+ return swapped;
5678
+ };
5679
+ Bool.prototype.CompareAndSwap = function(old, new$1) { return this.$val.CompareAndSwap(old, new$1); };
5680
+ b32 = function(b) {
5681
+ var b;
5682
+ if (b) {
5683
+ return 1;
5684
+ }
5685
+ return 0;
5686
+ };
5687
+ noCopy.ptr.prototype.Lock = function() {
5688
+ };
5689
+ noCopy.prototype.Lock = function() { return this.$val.Lock(); };
5690
+ noCopy.ptr.prototype.Unlock = function() {
5691
+ };
5692
+ noCopy.prototype.Unlock = function() { return this.$val.Unlock(); };
5693
+ SwapUint32 = function(addr, new$1) {
5694
+ var addr, new$1, old;
5695
+ old = addr.$get();
5696
+ addr.$set(new$1);
5697
+ return old;
5698
+ };
5699
+ $pkg.SwapUint32 = SwapUint32;
5633
5700
  CompareAndSwapInt32 = function(addr, old, new$1) {
5634
5701
  var addr, new$1, old;
5635
5702
  if (addr.$get() === old) {
@@ -5774,7 +5841,11 @@ $packages["sync/atomic"] = (function() {
5774
5841
  return x.constructor === y.constructor;
5775
5842
  };
5776
5843
  ptrType$5.methods = [{prop: "Load", name: "Load", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "Store", name: "Store", pkg: "", typ: $funcType([$emptyInterface], [], false)}, {prop: "Swap", name: "Swap", pkg: "", typ: $funcType([$emptyInterface], [$emptyInterface], false)}, {prop: "CompareAndSwap", name: "CompareAndSwap", pkg: "", typ: $funcType([$emptyInterface, $emptyInterface], [$Bool], false)}, {prop: "checkNew", name: "checkNew", pkg: "sync/atomic", typ: $funcType([$String, $emptyInterface], [], false)}];
5844
+ ptrType$6.methods = [{prop: "Load", name: "Load", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Store", name: "Store", pkg: "", typ: $funcType([$Bool], [], false)}, {prop: "Swap", name: "Swap", pkg: "", typ: $funcType([$Bool], [$Bool], false)}, {prop: "CompareAndSwap", name: "CompareAndSwap", pkg: "", typ: $funcType([$Bool, $Bool], [$Bool], false)}];
5845
+ ptrType$12.methods = [{prop: "Lock", name: "Lock", pkg: "", typ: $funcType([], [], false)}, {prop: "Unlock", name: "Unlock", pkg: "", typ: $funcType([], [], false)}];
5777
5846
  Value.init("sync/atomic", [{prop: "v", name: "v", embedded: false, exported: false, typ: $emptyInterface, tag: ""}]);
5847
+ Bool.init("sync/atomic", [{prop: "_$0", name: "_", embedded: false, exported: false, typ: noCopy, tag: ""}, {prop: "v", name: "v", embedded: false, exported: false, typ: $Uint32, tag: ""}]);
5848
+ noCopy.init("", []);
5778
5849
  $init = function() {
5779
5850
  $pkg.$init = function() {};
5780
5851
  /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
@@ -180043,7 +180114,7 @@ $packages["github.com/supraio/client-daemon/pkg/netsamsungwasmtcp"] = (function(
180043
180114
  return $pkg;
180044
180115
  })();
180045
180116
  $packages["github.com/supraio/client-daemon/pkg/netpacket"] = (function() {
180046
- var $pkg = {}, $init, context, websocket, errs, jshelper, netnacltcp, netsamsungwasmtcp, js, time, SamsungWasmTCPConn, NaClTCPConn, JsWebsocketConn, JsWebsocketWorkerConn, ReaderWriterCloser, Driver, sliceType, ptrType, mapType, funcType, arrayType, sliceType$1, sliceType$2, ptrType$1, ptrType$2, ptrType$3, ptrType$4, ptrType$5, connects, maxPacketSizes, init, ConnectSamsungWasmTCP, init$1, ConnectNaClTCP, init$2, ConnectJsWebsocket, Create, GetMaxPacketSize;
180117
+ var $pkg = {}, $init, context, websocket, errs, jshelper, netnacltcp, netsamsungwasmtcp, js, time, SamsungWasmTCPConn, NaClTCPConn, JsWebsocketConn, JsWebsocketWorkerConn, ReaderWriterCloser, Driver, sliceType, ptrType, mapType, funcType, arrayType, sliceType$1, sliceType$2, ptrType$1, ptrType$2, ptrType$3, ptrType$4, ptrType$5, connects, maxPacketSizes, init, ConnectSamsungWasmTCP, init$1, ConnectNaClTCP, init$2, getPerformanceTimestamp, ConnectJsWebsocket, Create, GetMaxPacketSize;
180047
180118
  context = $packages["context"];
180048
180119
  websocket = $packages["github.com/coder/websocket"];
180049
180120
  errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
@@ -180439,7 +180510,7 @@ $packages["github.com/supraio/client-daemon/pkg/netpacket"] = (function() {
180439
180510
  };
180440
180511
  JsWebsocketWorkerConn.prototype.Close = function() { return this.$val.Close(); };
180441
180512
  JsWebsocketWorkerConn.ptr.prototype.CollectFrame = function() {
180442
- var {$24r, _r, _r$1, _r$2, _tuple, c, err, frame, $s, $r, $c} = $restore(this, {});
180513
+ var {$24r, $24r$1, $24r$2, _r, _r$1, _r$2, _r$3, _r$4, _tuple, c, err, frame, $s, $r, $c} = $restore(this, {});
180443
180514
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
180444
180515
  c = this;
180445
180516
  _r = $clone(c.conn, js.Value).Call("collectFrame", sliceType.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
@@ -180451,13 +180522,56 @@ $packages["github.com/supraio/client-daemon/pkg/netpacket"] = (function() {
180451
180522
  /* */ $s = 4; continue;
180452
180523
  /* if (!(err === ptrType.nil)) { */ case 3:
180453
180524
  _r$2 = jshelper.GetError(err); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
180454
- $24r = [ptrType.nil, _r$2];
180525
+ $24r = [ptrType.nil, 0, _r$2];
180455
180526
  $s = 6; case 6: return $24r;
180456
180527
  /* } */ case 4:
180457
- $s = -1; return [frame, $ifaceNil];
180458
- /* */ } return; } var $f = {$blk: JsWebsocketWorkerConn.ptr.prototype.CollectFrame, $c: true, $r, $24r, _r, _r$1, _r$2, _tuple, c, err, frame, $s};return $f;
180528
+ /* */ if (frame === ptrType.nil || $clone(frame, js.Value).IsUndefined() || $clone(frame, js.Value).IsNull()) { $s = 7; continue; }
180529
+ /* */ $s = 8; continue;
180530
+ /* if (frame === ptrType.nil || $clone(frame, js.Value).IsUndefined() || $clone(frame, js.Value).IsNull()) { */ case 7:
180531
+ _r$3 = errs.Errorf("Worker frame collection returned no frame", sliceType.nil); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
180532
+ $24r$1 = [ptrType.nil, 0, _r$3];
180533
+ $s = 10; case 10: return $24r$1;
180534
+ /* } */ case 8:
180535
+ _r$4 = getPerformanceTimestamp(); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
180536
+ $24r$2 = [frame, _r$4, $ifaceNil];
180537
+ $s = 12; case 12: return $24r$2;
180538
+ /* */ } return; } var $f = {$blk: JsWebsocketWorkerConn.ptr.prototype.CollectFrame, $c: true, $r, $24r, $24r$1, $24r$2, _r, _r$1, _r$2, _r$3, _r$4, _tuple, c, err, frame, $s};return $f;
180459
180539
  };
180460
180540
  JsWebsocketWorkerConn.prototype.CollectFrame = function() { return this.$val.CollectFrame(); };
180541
+ getPerformanceTimestamp = function() {
180542
+ var {$24r, $24r$1, $24r$2, _r, _r$1, _r$2, _r$3, _r$4, _r$5, date, global, now, performance, timeOrigin, $s, $r, $c} = $restore(this, {});
180543
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
180544
+ global = $clone(js.Global(), js.Value);
180545
+ performance = $clone($clone(global, js.Value).Get("performance"), js.Value);
180546
+ /* */ if (!$clone(performance, js.Value).IsUndefined() && !$clone(performance, js.Value).IsNull()) { $s = 1; continue; }
180547
+ /* */ $s = 2; continue;
180548
+ /* if (!$clone(performance, js.Value).IsUndefined() && !$clone(performance, js.Value).IsNull()) { */ case 1:
180549
+ timeOrigin = $clone($clone(performance, js.Value).Get("timeOrigin"), js.Value);
180550
+ now = $clone($clone(performance, js.Value).Get("now"), js.Value);
180551
+ /* */ if (($clone(timeOrigin, js.Value).Type() === 3) && ($clone(now, js.Value).Type() === 7)) { $s = 3; continue; }
180552
+ /* */ $s = 4; continue;
180553
+ /* if (($clone(timeOrigin, js.Value).Type() === 3) && ($clone(now, js.Value).Type() === 7)) { */ case 3:
180554
+ _r = $clone(performance, js.Value).Call("now", sliceType.nil); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
180555
+ _r$1 = $clone(_r, js.Value).Float(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
180556
+ $24r = $clone(timeOrigin, js.Value).Float() + _r$1;
180557
+ $s = 7; case 7: return $24r;
180558
+ /* } */ case 4:
180559
+ /* } */ case 2:
180560
+ date = $clone($clone(global, js.Value).Get("Date"), js.Value);
180561
+ /* */ if (!$clone(date, js.Value).IsUndefined() && !$clone(date, js.Value).IsNull() && ($clone($clone(date, js.Value).Get("now"), js.Value).Type() === 7)) { $s = 8; continue; }
180562
+ /* */ $s = 9; continue;
180563
+ /* if (!$clone(date, js.Value).IsUndefined() && !$clone(date, js.Value).IsNull() && ($clone($clone(date, js.Value).Get("now"), js.Value).Type() === 7)) { */ case 8:
180564
+ _r$2 = $clone(date, js.Value).Call("now", sliceType.nil); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
180565
+ _r$3 = $clone(_r$2, js.Value).Float(); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
180566
+ $24r$1 = _r$3;
180567
+ $s = 12; case 12: return $24r$1;
180568
+ /* } */ case 9:
180569
+ _r$4 = time.Now(); /* */ $s = 13; case 13: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
180570
+ _r$5 = $clone(_r$4, time.Time).UnixNano(); /* */ $s = 14; case 14: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
180571
+ $24r$2 = ($flatten64(_r$5)) / 1e+06;
180572
+ $s = 15; case 15: return $24r$2;
180573
+ /* */ } return; } var $f = {$blk: getPerformanceTimestamp, $c: true, $r, $24r, $24r$1, $24r$2, _r, _r$1, _r$2, _r$3, _r$4, _r$5, date, global, now, performance, timeOrigin, $s};return $f;
180574
+ };
180461
180575
  ConnectJsWebsocket = function(host, timeout, secure) {
180462
180576
  var {$24r, $24r$1, $24r$2, _r, _r$1, _tuple, _tuple$1, cancel, conn, ctx, err, host, protocol, secure, timeout, url, workerFactory, $s, $deferred, $r, $c} = $restore(this, {host, timeout, secure});
180463
180577
  /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
@@ -180516,7 +180630,7 @@ $packages["github.com/supraio/client-daemon/pkg/netpacket"] = (function() {
180516
180630
  ptrType$1.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "GetJSConnection", name: "GetJSConnection", pkg: "", typ: $funcType([], [ptrType], false)}];
180517
180631
  ptrType$2.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "GetJSConnection", name: "GetJSConnection", pkg: "", typ: $funcType([], [ptrType], false)}];
180518
180632
  ptrType$4.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}];
180519
- ptrType$5.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "CollectFrame", name: "CollectFrame", pkg: "", typ: $funcType([], [ptrType, $error], false)}];
180633
+ ptrType$5.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "CollectFrame", name: "CollectFrame", pkg: "", typ: $funcType([], [ptrType, $Float64, $error], false)}];
180520
180634
  SamsungWasmTCPConn.init("github.com/supraio/client-daemon/pkg/netpacket", [{prop: "conn", name: "conn", embedded: false, exported: false, typ: ptrType, tag: ""}]);
180521
180635
  NaClTCPConn.init("github.com/supraio/client-daemon/pkg/netpacket", [{prop: "conn", name: "conn", embedded: false, exported: false, typ: ptrType, tag: ""}]);
180522
180636
  JsWebsocketConn.init("github.com/supraio/client-daemon/pkg/netpacket", [{prop: "conn", name: "conn", embedded: false, exported: false, typ: ptrType$3, tag: ""}]);
@@ -184680,8 +184794,21 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/nacldecoder/nacldriver"]
184680
184794
  return $pkg;
184681
184795
  })();
184682
184796
  $packages["github.com/supraio/client-daemon/pkg/render/frame"] = (function() {
184683
- var $pkg = {}, $init, time, FrameType, FrameInterface, Frame, sliceType, ptrType, NewFrame;
184797
+ var $pkg = {}, $init, js, time, JSFrame, FrameType, FrameInterface, Frame, funcType, arrayType, sliceType, ptrType, ptrType$1, NewJSFrame, NewFrame;
184798
+ js = $packages["syscall/js"];
184684
184799
  time = $packages["time"];
184800
+ JSFrame = $pkg.JSFrame = $newType(0, $kindStruct, "frame.JSFrame", true, "github.com/supraio/client-daemon/pkg/render/frame", true, function(frameType_, buffer_, timestamp_) {
184801
+ this.$val = this;
184802
+ if (arguments.length === 0) {
184803
+ this.frameType = 0;
184804
+ this.buffer = new js.Value.ptr(null, false, arrayType.zero());
184805
+ this.timestamp = new $Uint64(0, 0);
184806
+ return;
184807
+ }
184808
+ this.frameType = frameType_;
184809
+ this.buffer = buffer_;
184810
+ this.timestamp = timestamp_;
184811
+ });
184685
184812
  FrameType = $pkg.FrameType = $newType(1, $kindUint8, "frame.FrameType", true, "github.com/supraio/client-daemon/pkg/render/frame", true, null);
184686
184813
  FrameInterface = $pkg.FrameInterface = $newType(8, $kindInterface, "frame.FrameInterface", true, "github.com/supraio/client-daemon/pkg/render/frame", true, null);
184687
184814
  Frame = $pkg.Frame = $newType(0, $kindStruct, "frame.Frame", true, "github.com/supraio/client-daemon/pkg/render/frame", true, function(frameType_, buffer_, timestamp_) {
@@ -184696,8 +184823,46 @@ $packages["github.com/supraio/client-daemon/pkg/render/frame"] = (function() {
184696
184823
  this.buffer = buffer_;
184697
184824
  this.timestamp = timestamp_;
184698
184825
  });
184826
+ funcType = $funcType([], [], false);
184827
+ arrayType = $arrayType(funcType, 0);
184699
184828
  sliceType = $sliceType($Uint8);
184700
- ptrType = $ptrType(Frame);
184829
+ ptrType = $ptrType(JSFrame);
184830
+ ptrType$1 = $ptrType(Frame);
184831
+ NewJSFrame = function(frameType, buffer, timestamp) {
184832
+ var buffer, frameType, timestamp;
184833
+ return new JSFrame.ptr(frameType, $clone(buffer, js.Value), timestamp);
184834
+ };
184835
+ $pkg.NewJSFrame = NewJSFrame;
184836
+ JSFrame.ptr.prototype.FrameType = function() {
184837
+ var f;
184838
+ f = this;
184839
+ return f.frameType;
184840
+ };
184841
+ JSFrame.prototype.FrameType = function() { return this.$val.FrameType(); };
184842
+ JSFrame.ptr.prototype.Buffer = function() {
184843
+ var f;
184844
+ f = this;
184845
+ return sliceType.nil;
184846
+ };
184847
+ JSFrame.prototype.Buffer = function() { return this.$val.Buffer(); };
184848
+ JSFrame.ptr.prototype.JSBuffer = function() {
184849
+ var f;
184850
+ f = this;
184851
+ return f.buffer;
184852
+ };
184853
+ JSFrame.prototype.JSBuffer = function() { return this.$val.JSBuffer(); };
184854
+ JSFrame.ptr.prototype.ByteLength = function() {
184855
+ var f;
184856
+ f = this;
184857
+ return $clone($clone(f.buffer, js.Value).Get("byteLength"), js.Value).Int();
184858
+ };
184859
+ JSFrame.prototype.ByteLength = function() { return this.$val.ByteLength(); };
184860
+ JSFrame.ptr.prototype.GetTimestamp = function() {
184861
+ var f, x;
184862
+ f = this;
184863
+ return time.Unix(new $Int64(0, 0), ((x = f.timestamp, new $Int64(x.$high, x.$low))));
184864
+ };
184865
+ JSFrame.prototype.GetTimestamp = function() { return this.$val.GetTimestamp(); };
184701
184866
  NewFrame = function(frameType, buffer, timestamp) {
184702
184867
  var buffer, frameType, timestamp;
184703
184868
  return new Frame.ptr(frameType, buffer, timestamp);
@@ -184721,24 +184886,28 @@ $packages["github.com/supraio/client-daemon/pkg/render/frame"] = (function() {
184721
184886
  return time.Unix(new $Int64(0, 0), ((x = f.timestamp, new $Int64(x.$high, x.$low))));
184722
184887
  };
184723
184888
  Frame.prototype.GetTimestamp = function() { return this.$val.GetTimestamp(); };
184724
- ptrType.methods = [{prop: "FrameType", name: "FrameType", pkg: "", typ: $funcType([], [FrameType], false)}, {prop: "Buffer", name: "Buffer", pkg: "", typ: $funcType([], [sliceType], false)}, {prop: "GetTimestamp", name: "GetTimestamp", pkg: "", typ: $funcType([], [time.Time], false)}];
184889
+ ptrType.methods = [{prop: "FrameType", name: "FrameType", pkg: "", typ: $funcType([], [FrameType], false)}, {prop: "Buffer", name: "Buffer", pkg: "", typ: $funcType([], [sliceType], false)}, {prop: "JSBuffer", name: "JSBuffer", pkg: "", typ: $funcType([], [js.Value], false)}, {prop: "ByteLength", name: "ByteLength", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "GetTimestamp", name: "GetTimestamp", pkg: "", typ: $funcType([], [time.Time], false)}];
184890
+ ptrType$1.methods = [{prop: "FrameType", name: "FrameType", pkg: "", typ: $funcType([], [FrameType], false)}, {prop: "Buffer", name: "Buffer", pkg: "", typ: $funcType([], [sliceType], false)}, {prop: "GetTimestamp", name: "GetTimestamp", pkg: "", typ: $funcType([], [time.Time], false)}];
184891
+ JSFrame.init("github.com/supraio/client-daemon/pkg/render/frame", [{prop: "frameType", name: "frameType", embedded: false, exported: false, typ: FrameType, tag: ""}, {prop: "buffer", name: "buffer", embedded: false, exported: false, typ: js.Value, tag: ""}, {prop: "timestamp", name: "timestamp", embedded: false, exported: false, typ: $Uint64, tag: ""}]);
184725
184892
  FrameInterface.init([{prop: "Buffer", name: "Buffer", pkg: "", typ: $funcType([], [sliceType], false)}, {prop: "FrameType", name: "FrameType", pkg: "", typ: $funcType([], [FrameType], false)}, {prop: "GetTimestamp", name: "GetTimestamp", pkg: "", typ: $funcType([], [time.Time], false)}]);
184726
184893
  Frame.init("github.com/supraio/client-daemon/pkg/render/frame", [{prop: "frameType", name: "frameType", embedded: false, exported: false, typ: FrameType, tag: ""}, {prop: "buffer", name: "buffer", embedded: false, exported: false, typ: sliceType, tag: ""}, {prop: "timestamp", name: "timestamp", embedded: false, exported: false, typ: $Uint64, tag: ""}]);
184727
184894
  $init = function() {
184728
184895
  $pkg.$init = function() {};
184729
184896
  /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
184730
- $r = time.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
184897
+ $r = js.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
184898
+ $r = time.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
184731
184899
  /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
184732
184900
  };
184733
184901
  $pkg.$init = $init;
184734
184902
  return $pkg;
184735
184903
  })();
184736
184904
  $packages["github.com/supraio/client-daemon/pkg/render/netframe"] = (function() {
184737
- var $pkg = {}, $init, binary, errs, netpacket, frame, GenericFrameCollector, FrameMapItem, FrameCollectorInterface, sliceType, ptrType, sliceType$1, funcType, ptrType$1, mapType, frameCollectorFactories, NewGenericFrameCollector, NewFrameCollector, RegisterFrameCollector;
184905
+ var $pkg = {}, $init, binary, errs, netpacket, frame, time, GenericFrameCollector, FrameMapItem, FrameCollectionDurationCallback, FrameCollectorInterface, sliceType, ptrType, sliceType$1, funcType, ptrType$1, mapType, frameCollectorFactories, NewGenericFrameCollector, NewFrameCollector, RegisterFrameCollector;
184738
184906
  binary = $packages["encoding/binary"];
184739
184907
  errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
184740
184908
  netpacket = $packages["github.com/supraio/client-daemon/pkg/netpacket"];
184741
184909
  frame = $packages["github.com/supraio/client-daemon/pkg/render/frame"];
184910
+ time = $packages["time"];
184742
184911
  GenericFrameCollector = $pkg.GenericFrameCollector = $newType(0, $kindStruct, "netframe.GenericFrameCollector", true, "github.com/supraio/client-daemon/pkg/render/netframe", true, function(conn_, framesMap_, maxPacketSize_, packetBuffer_) {
184743
184912
  this.$val = this;
184744
184913
  if (arguments.length === 0) {
@@ -184771,6 +184940,7 @@ $packages["github.com/supraio/client-daemon/pkg/render/netframe"] = (function()
184771
184940
  this.total = total_;
184772
184941
  this.received = received_;
184773
184942
  });
184943
+ FrameCollectionDurationCallback = $pkg.FrameCollectionDurationCallback = $newType(4, $kindFunc, "netframe.FrameCollectionDurationCallback", true, "github.com/supraio/client-daemon/pkg/render/netframe", true, null);
184774
184944
  FrameCollectorInterface = $pkg.FrameCollectorInterface = $newType(8, $kindInterface, "netframe.FrameCollectorInterface", true, "github.com/supraio/client-daemon/pkg/render/netframe", true, null);
184775
184945
  sliceType = $sliceType($Uint8);
184776
184946
  ptrType = $ptrType(FrameMapItem);
@@ -184783,8 +184953,8 @@ $packages["github.com/supraio/client-daemon/pkg/render/netframe"] = (function()
184783
184953
  return new GenericFrameCollector.ptr(screenConn, $makeMap($Uint16.keyFor, []), maxPacketSize, $makeSlice(sliceType, maxPacketSize));
184784
184954
  };
184785
184955
  $pkg.NewGenericFrameCollector = NewGenericFrameCollector;
184786
- GenericFrameCollector.ptr.prototype.CollectFrame = function(startCb, endCb) {
184787
- var {$24r, _entry, _key, _r, _r$1, _tuple, _tuple$1, buffer, bufferLength, bufferSize, c, dataEndsAt, dataPartSize, dataStartsAt, endCb, err, frameExists, frameID, frameMapItem, headerSize, packetBuffer, received, seq, startCb, total, $s, $r, $c} = $restore(this, {startCb, endCb});
184956
+ GenericFrameCollector.ptr.prototype.CollectFrame = function(startCb, endCb, param) {
184957
+ var {$24r, _entry, _key, _r, _r$1, _tuple, _tuple$1, buffer, bufferLength, bufferSize, c, dataEndsAt, dataPartSize, dataStartsAt, endCb, err, frameExists, frameID, frameMapItem, headerSize, packetBuffer, param, received, seq, startCb, total, $s, $r, $c} = $restore(this, {startCb, endCb, param});
184788
184958
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
184789
184959
  c = this;
184790
184960
  packetBuffer = c.packetBuffer;
@@ -184846,9 +185016,9 @@ $packages["github.com/supraio/client-daemon/pkg/render/netframe"] = (function()
184846
185016
  $s = 1; continue;
184847
185017
  case 2:
184848
185018
  $s = -1; return [$ifaceNil, $ifaceNil];
184849
- /* */ } return; } var $f = {$blk: GenericFrameCollector.ptr.prototype.CollectFrame, $c: true, $r, $24r, _entry, _key, _r, _r$1, _tuple, _tuple$1, buffer, bufferLength, bufferSize, c, dataEndsAt, dataPartSize, dataStartsAt, endCb, err, frameExists, frameID, frameMapItem, headerSize, packetBuffer, received, seq, startCb, total, $s};return $f;
185019
+ /* */ } return; } var $f = {$blk: GenericFrameCollector.ptr.prototype.CollectFrame, $c: true, $r, $24r, _entry, _key, _r, _r$1, _tuple, _tuple$1, buffer, bufferLength, bufferSize, c, dataEndsAt, dataPartSize, dataStartsAt, endCb, err, frameExists, frameID, frameMapItem, headerSize, packetBuffer, param, received, seq, startCb, total, $s};return $f;
184850
185020
  };
184851
- GenericFrameCollector.prototype.CollectFrame = function(startCb, endCb) { return this.$val.CollectFrame(startCb, endCb); };
185021
+ GenericFrameCollector.prototype.CollectFrame = function(startCb, endCb, param) { return this.$val.CollectFrame(startCb, endCb, param); };
184852
185022
  NewFrameCollector = function(screenConn, maxPacketSize) {
184853
185023
  var {_entry, _i, _key, _keys, _r, _ref, _size, factory, frameCollector, maxPacketSize, screenConn, $s, $r, $c} = $restore(this, {screenConn, maxPacketSize});
184854
185024
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
@@ -184882,10 +185052,11 @@ $packages["github.com/supraio/client-daemon/pkg/render/netframe"] = (function()
184882
185052
  _key = name; (frameCollectorFactories || $throwRuntimeError("assignment to entry in nil map")).set($String.keyFor(_key), { k: _key, v: factory });
184883
185053
  };
184884
185054
  $pkg.RegisterFrameCollector = RegisterFrameCollector;
184885
- ptrType$1.methods = [{prop: "CollectFrame", name: "CollectFrame", pkg: "", typ: $funcType([funcType, funcType], [frame.FrameInterface, $error], false)}];
185055
+ ptrType$1.methods = [{prop: "CollectFrame", name: "CollectFrame", pkg: "", typ: $funcType([funcType, funcType, FrameCollectionDurationCallback], [frame.FrameInterface, $error], false)}];
184886
185056
  GenericFrameCollector.init("github.com/supraio/client-daemon/pkg/render/netframe", [{prop: "conn", name: "conn", embedded: false, exported: false, typ: netpacket.ReaderWriterCloser, tag: ""}, {prop: "framesMap", name: "framesMap", embedded: false, exported: false, typ: mapType, tag: ""}, {prop: "maxPacketSize", name: "maxPacketSize", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "packetBuffer", name: "packetBuffer", embedded: false, exported: false, typ: sliceType, tag: ""}]);
184887
185057
  FrameMapItem.init("github.com/supraio/client-daemon/pkg/render/netframe", [{prop: "buffer", name: "buffer", embedded: false, exported: false, typ: sliceType, tag: ""}, {prop: "frameType", name: "frameType", embedded: false, exported: false, typ: frame.FrameType, tag: ""}, {prop: "timestamp", name: "timestamp", embedded: false, exported: false, typ: $Uint64, tag: ""}, {prop: "frameID", name: "frameID", embedded: false, exported: false, typ: $Uint16, tag: ""}, {prop: "total", name: "total", embedded: false, exported: false, typ: $Uint16, tag: ""}, {prop: "received", name: "received", embedded: false, exported: false, typ: $Uint16, tag: ""}]);
184888
- FrameCollectorInterface.init([{prop: "CollectFrame", name: "CollectFrame", pkg: "", typ: $funcType([funcType, funcType], [frame.FrameInterface, $error], false)}]);
185058
+ FrameCollectionDurationCallback.init([time.Duration], [], false);
185059
+ FrameCollectorInterface.init([{prop: "CollectFrame", name: "CollectFrame", pkg: "", typ: $funcType([funcType, funcType, FrameCollectionDurationCallback], [frame.FrameInterface, $error], false)}]);
184889
185060
  $init = function() {
184890
185061
  $pkg.$init = function() {};
184891
185062
  /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
@@ -184893,6 +185064,7 @@ $packages["github.com/supraio/client-daemon/pkg/render/netframe"] = (function()
184893
185064
  $r = errs.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
184894
185065
  $r = netpacket.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
184895
185066
  $r = frame.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185067
+ $r = time.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
184896
185068
  frameCollectorFactories = new $global.Map();
184897
185069
  /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
184898
185070
  };
@@ -184961,8 +185133,8 @@ $packages["github.com/supraio/client-daemon/pkg/render/netframe/nacltcp"] = (fun
184961
185133
  /* */ } return; } var $f = {$blk: NewNaClTCPFrameCollector, $c: true, $r, _ref, maxPacketSize, screenConn, screenConnTyped, screenConnTyped$1, $s};return $f;
184962
185134
  };
184963
185135
  $pkg.NewNaClTCPFrameCollector = NewNaClTCPFrameCollector;
184964
- NTFrameCollector.ptr.prototype.CollectFrame = function(startCb, endCb) {
184965
- var {$24r, $24r$1, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, c, collectPromise, collectedFrame, endCb, err, frame$1, jsConn, onEnd, onStart, opts, startCb, timestampHi, timestampLo, x, $s, $deferred, $r, $c} = $restore(this, {startCb, endCb});
185136
+ NTFrameCollector.ptr.prototype.CollectFrame = function(startCb, endCb, param) {
185137
+ var {$24r, $24r$1, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, c, collectPromise, collectedFrame, endCb, err, frame$1, jsConn, onEnd, onStart, opts, param, startCb, timestampHi, timestampLo, x, $s, $deferred, $r, $c} = $restore(this, {startCb, endCb, param});
184966
185138
  /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
184967
185139
  endCb = [endCb];
184968
185140
  startCb = [startCb];
@@ -185009,9 +185181,9 @@ $packages["github.com/supraio/client-daemon/pkg/render/netframe/nacltcp"] = (fun
185009
185181
  frame$1 = new NTFrame.ptr((($clone($clone(collectedFrame, js.Value).Get("frameType"), js.Value).Int() << 24 >>> 24)), (x = $shiftLeft64(timestampHi, 32), new $Uint64(timestampLo.$high | x.$high, (timestampLo.$low | x.$low) >>> 0)), (($clone($clone(collectedFrame, js.Value).Get("dataRef"), js.Value).Int() >>> 0)));
185010
185182
  $24r$1 = [frame$1, $ifaceNil];
185011
185183
  $s = 10; case 10: return $24r$1;
185012
- /* */ } return; } } catch(err) { $err = err; $s = -1; return [$ifaceNil, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: NTFrameCollector.ptr.prototype.CollectFrame, $c: true, $r, $24r, $24r$1, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, c, collectPromise, collectedFrame, endCb, err, frame$1, jsConn, onEnd, onStart, opts, startCb, timestampHi, timestampLo, x, $s, $deferred};return $f; } }
185184
+ /* */ } return; } } catch(err) { $err = err; $s = -1; return [$ifaceNil, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: NTFrameCollector.ptr.prototype.CollectFrame, $c: true, $r, $24r, $24r$1, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, c, collectPromise, collectedFrame, endCb, err, frame$1, jsConn, onEnd, onStart, opts, param, startCb, timestampHi, timestampLo, x, $s, $deferred};return $f; } }
185013
185185
  };
185014
- NTFrameCollector.prototype.CollectFrame = function(startCb, endCb) { return this.$val.CollectFrame(startCb, endCb); };
185186
+ NTFrameCollector.prototype.CollectFrame = function(startCb, endCb, param) { return this.$val.CollectFrame(startCb, endCb, param); };
185015
185187
  NTFrame.ptr.prototype.FrameType = function() {
185016
185188
  var f;
185017
185189
  f = this;
@@ -185039,7 +185211,7 @@ $packages["github.com/supraio/client-daemon/pkg/render/netframe/nacltcp"] = (fun
185039
185211
  return f.dataRef;
185040
185212
  };
185041
185213
  NTFrame.prototype.DataRef = function() { return this.$val.DataRef(); };
185042
- ptrType$2.methods = [{prop: "CollectFrame", name: "CollectFrame", pkg: "", typ: $funcType([funcType, funcType], [frame.FrameInterface, $error], false)}];
185214
+ ptrType$2.methods = [{prop: "CollectFrame", name: "CollectFrame", pkg: "", typ: $funcType([funcType, funcType, netframe.FrameCollectionDurationCallback], [frame.FrameInterface, $error], false)}];
185043
185215
  ptrType$3.methods = [{prop: "FrameType", name: "FrameType", pkg: "", typ: $funcType([], [frame.FrameType], false)}, {prop: "Buffer", name: "Buffer", pkg: "", typ: $funcType([], [sliceType$1], false)}, {prop: "GetTimestamp", name: "GetTimestamp", pkg: "", typ: $funcType([], [time.Time], false)}, {prop: "DataRef", name: "DataRef", pkg: "", typ: $funcType([], [$Uint32], false)}];
185044
185216
  NTFrameCollector.init("github.com/supraio/client-daemon/pkg/render/netframe/nacltcp", [{prop: "conn", name: "conn", embedded: false, exported: false, typ: netpacket.NaClTCPConn, tag: ""}]);
185045
185217
  NTFrame.init("github.com/supraio/client-daemon/pkg/render/netframe/nacltcp", [{prop: "frameType", name: "frameType", embedded: false, exported: false, typ: frame.FrameType, tag: ""}, {prop: "timestamp", name: "timestamp", embedded: false, exported: false, typ: $Uint64, tag: ""}, {prop: "dataRef", name: "dataRef", embedded: false, exported: false, typ: $Uint32, tag: ""}]);
@@ -185062,7 +185234,7 @@ $packages["github.com/supraio/client-daemon/pkg/render/netframe/nacltcp"] = (fun
185062
185234
  return $pkg;
185063
185235
  })();
185064
185236
  $packages["github.com/supraio/client-daemon/pkg/decoder/nacldecoder"] = (function() {
185065
- var $pkg = {}, $init, general, jsdecoder, nacldriver, errs, jshelper, frame, nacltcp, sync, js, NaClDecoder, sliceType, ptrType, ptrType$1, ptrType$2, sliceType$1, ptrType$3, ptrType$4, IsAvailable, NewDecoder;
185237
+ var $pkg = {}, $init, general, jsdecoder, nacldriver, errs, jshelper, frame, nacltcp, sync, atomic, js, NaClDecoder, sliceType, ptrType, ptrType$1, ptrType$2, ptrType$3, sliceType$1, ptrType$4, ptrType$5, IsAvailable, NewDecoder;
185066
185238
  general = $packages["github.com/supraio/client-daemon/pkg/decoder/general"];
185067
185239
  jsdecoder = $packages["github.com/supraio/client-daemon/pkg/decoder/nacldecoder/jsdecoder"];
185068
185240
  nacldriver = $packages["github.com/supraio/client-daemon/pkg/decoder/nacldecoder/nacldriver"];
@@ -185071,12 +185243,13 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/nacldecoder"] = (functio
185071
185243
  frame = $packages["github.com/supraio/client-daemon/pkg/render/frame"];
185072
185244
  nacltcp = $packages["github.com/supraio/client-daemon/pkg/render/netframe/nacltcp"];
185073
185245
  sync = $packages["sync"];
185246
+ atomic = $packages["sync/atomic"];
185074
185247
  js = $packages["syscall/js"];
185075
185248
  NaClDecoder = $pkg.NaClDecoder = $newType(0, $kindStruct, "nacldecoder.NaClDecoder", true, "github.com/supraio/client-daemon/pkg/decoder/nacldecoder", true, function(initialized_, renderedDirect_, mutexDecode_, mutexGetPicture_) {
185076
185249
  this.$val = this;
185077
185250
  if (arguments.length === 0) {
185078
185251
  this.initialized = false;
185079
- this.renderedDirect = false;
185252
+ this.renderedDirect = new atomic.Bool.ptr(new atomic.noCopy.ptr(), 0);
185080
185253
  this.mutexDecode = new sync.Mutex.ptr(0, 0);
185081
185254
  this.mutexGetPicture = new sync.Mutex.ptr(0, 0);
185082
185255
  return;
@@ -185089,17 +185262,18 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/nacldecoder"] = (functio
185089
185262
  sliceType = $sliceType($emptyInterface);
185090
185263
  ptrType = $ptrType(js.Value);
185091
185264
  ptrType$1 = $ptrType(frame.Frame);
185092
- ptrType$2 = $ptrType(nacltcp.NTFrame);
185265
+ ptrType$2 = $ptrType(frame.JSFrame);
185266
+ ptrType$3 = $ptrType(nacltcp.NTFrame);
185093
185267
  sliceType$1 = $sliceType($Uint8);
185094
- ptrType$3 = $ptrType(nacldriver.BufferImpl);
185095
- ptrType$4 = $ptrType(NaClDecoder);
185268
+ ptrType$4 = $ptrType(nacldriver.BufferImpl);
185269
+ ptrType$5 = $ptrType(NaClDecoder);
185096
185270
  IsAvailable = function() {
185097
185271
  return jsdecoder.IsAvailable();
185098
185272
  };
185099
185273
  $pkg.IsAvailable = IsAvailable;
185100
185274
  NewDecoder = function(header) {
185101
185275
  var header;
185102
- return [new NaClDecoder.ptr(false, false, $clone(new sync.Mutex.ptr(0, 0), sync.Mutex), $clone(new sync.Mutex.ptr(0, 0), sync.Mutex)), $ifaceNil];
185276
+ return [new NaClDecoder.ptr(false, new atomic.Bool.ptr(new atomic.noCopy.ptr(), 0), $clone(new sync.Mutex.ptr(0, 0), sync.Mutex), $clone(new sync.Mutex.ptr(0, 0), sync.Mutex)), $ifaceNil];
185103
185277
  };
185104
185278
  $pkg.NewDecoder = NewDecoder;
185105
185279
  NaClDecoder.ptr.prototype.initialize = function(param) {
@@ -185196,7 +185370,7 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/nacldecoder"] = (functio
185196
185370
  };
185197
185371
  NaClDecoder.prototype.destroy = function() { return this.$val.destroy(); };
185198
185372
  NaClDecoder.ptr.prototype.Write = function(someFrame) {
185199
- var {$24r, $24r$1, $24r$2, $24r$3, _arg, _arg$1, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tuple, _tuple$1, decodeArgs, decodePromise, decodePromise$1, decodeResult, decodeResult$1, err, err$1, err$2, err$3, err$4, frame$1, frame$2, jsNaClDecoder, m, nal, pictureBuffer, pictureUint8Array, someFrame, $s, $r, $c} = $restore(this, {someFrame});
185373
+ var {$24r, $24r$1, $24r$2, $24r$3, _arg, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tuple, currentFrame, currentFrame$1, currentFrame$2, decodePromise, decodeResult, err, err$1, err$2, err$3, err$4, jsNaClDecoder, m, nal, pictureBuffer, pictureUint8Array, someFrame, $s, $r, $c} = $restore(this, {someFrame});
185200
185374
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
185201
185375
  m = this;
185202
185376
  /* */ if (jsdecoder.ShouldResetOnNextDecode()) { $s = 1; continue; }
@@ -185230,105 +185404,165 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/nacldecoder"] = (functio
185230
185404
  _ref = someFrame;
185231
185405
  /* */ if ($assertType(_ref, ptrType$1, true)[1]) { $s = 14; continue; }
185232
185406
  /* */ if ($assertType(_ref, ptrType$2, true)[1]) { $s = 15; continue; }
185233
- /* */ $s = 16; continue;
185407
+ /* */ if ($assertType(_ref, ptrType$3, true)[1]) { $s = 16; continue; }
185408
+ /* */ $s = 17; continue;
185234
185409
  /* if ($assertType(_ref, ptrType$1, true)[1]) { */ case 14:
185235
- frame$1 = _ref.$val;
185236
- nal = frame$1.Buffer();
185237
- /* */ if (!m.initialized) { $s = 17; continue; }
185238
- /* */ $s = 18; continue;
185239
- /* if (!m.initialized) { */ case 17:
185240
- _r$3 = m.initialize(nal); /* */ $s = 19; case 19: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
185410
+ currentFrame = _ref.$val;
185411
+ m.renderedDirect.Store(false);
185412
+ nal = currentFrame.Buffer();
185413
+ /* */ if (!m.initialized) { $s = 18; continue; }
185414
+ /* */ $s = 19; continue;
185415
+ /* if (!m.initialized) { */ case 18:
185416
+ _r$3 = m.initialize(nal); /* */ $s = 20; case 20: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
185241
185417
  err$1 = _r$3;
185242
185418
  if (!($interfaceIsEqual(err$1, $ifaceNil))) {
185243
185419
  $s = -1; return err$1;
185244
185420
  }
185245
185421
  m.initialized = true;
185246
- /* } */ case 18:
185247
- _r$4 = $clone($clone(js.Global(), js.Value).Get("ArrayBuffer"), js.Value).New(new sliceType([new $Int(nal.$length)])); /* */ $s = 20; case 20: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
185422
+ /* } */ case 19:
185423
+ _r$4 = $clone($clone(js.Global(), js.Value).Get("ArrayBuffer"), js.Value).New(new sliceType([new $Int(nal.$length)])); /* */ $s = 21; case 21: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
185248
185424
  pictureBuffer = $clone(_r$4, js.Value);
185249
- _r$5 = $clone($clone(js.Global(), js.Value).Get("Uint8Array"), js.Value).New(new sliceType([new pictureBuffer.constructor.elem(pictureBuffer)])); /* */ $s = 21; case 21: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
185425
+ _r$5 = $clone($clone(js.Global(), js.Value).Get("Uint8Array"), js.Value).New(new sliceType([new pictureBuffer.constructor.elem(pictureBuffer)])); /* */ $s = 22; case 22: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
185250
185426
  pictureUint8Array = $clone(_r$5, js.Value);
185251
185427
  js.CopyBytesToJS($clone(pictureUint8Array, js.Value), nal);
185252
- _r$6 = $clone($clone(js.Global(), js.Value).Get("Object"), js.Value).New(sliceType.nil); /* */ $s = 22; case 22: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
185253
- decodeArgs = $clone(_r$6, js.Value);
185254
- $clone(decodeArgs, js.Value).Set("decodeId", new $Int(0));
185255
- $clone(decodeArgs, js.Value).Set("data", new pictureBuffer.constructor.elem(pictureBuffer));
185256
- $r = m.mutexDecode.Lock(); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185257
- _r$7 = $clone(jsNaClDecoder, js.Value).Call("decode", new sliceType([new decodeArgs.constructor.elem(decodeArgs)])); /* */ $s = 24; case 24: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
185258
- decodePromise = $clone(_r$7, js.Value);
185259
- _r$8 = jshelper.Await($clone(decodePromise, js.Value)); /* */ $s = 25; case 25: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
185260
- _tuple = _r$8;
185261
- decodeResult = _tuple[0];
185262
- err$2 = _tuple[1];
185263
- $r = m.mutexDecode.Unlock(); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185264
- /* */ if (!(err$2 === ptrType.nil)) { $s = 27; continue; }
185265
- /* */ $s = 28; continue;
185266
- /* if (!(err$2 === ptrType.nil)) { */ case 27:
185267
- _r$9 = jshelper.GetError(err$2); /* */ $s = 29; case 29: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
185268
- _r$10 = _r$9.Error(); /* */ $s = 30; case 30: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
185269
- _arg = new $String(_r$10);
185270
- _r$11 = errs.Errorf("Failed to decode frame: %s", new sliceType([_arg])); /* */ $s = 31; case 31: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
185271
- $24r = _r$11;
185272
- $s = 32; case 32: return $24r;
185273
- /* } */ case 28:
185274
- /* */ if (!(($clone(decodeResult, js.Value).Float() === 0))) { $s = 33; continue; }
185275
- /* */ $s = 34; continue;
185276
- /* if (!(($clone(decodeResult, js.Value).Float() === 0))) { */ case 33:
185277
- _r$12 = errs.Errorf("Failed to decode frame with code: %f", new sliceType([new $Float64($clone(decodeResult, js.Value).Float())])); /* */ $s = 35; case 35: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
185278
- $24r$1 = _r$12;
185279
- $s = 36; case 36: return $24r$1;
185280
- /* } */ case 34:
185281
- m.renderedDirect = false;
185282
- $s = 16; continue;
185428
+ _r$6 = m.decodeBuffer(jsNaClDecoder, $clone(pictureBuffer, js.Value)); /* */ $s = 23; case 23: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
185429
+ $24r = _r$6;
185430
+ $s = 24; case 24: return $24r;
185283
185431
  /* } else if ($assertType(_ref, ptrType$2, true)[1]) { */ case 15:
185284
- frame$2 = _ref.$val;
185285
- /* */ if (!m.initialized) { $s = 37; continue; }
185286
- /* */ $s = 38; continue;
185287
- /* if (!m.initialized) { */ case 37:
185288
- _r$13 = m.initialize(sliceType$1.nil); /* */ $s = 39; case 39: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
185289
- err$3 = _r$13;
185432
+ currentFrame$1 = _ref.$val;
185433
+ m.renderedDirect.Store(true);
185434
+ /* */ if (!m.initialized) { $s = 25; continue; }
185435
+ /* */ $s = 26; continue;
185436
+ /* if (!m.initialized) { */ case 25:
185437
+ _r$7 = m.initialize(sliceType$1.nil); /* */ $s = 27; case 27: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
185438
+ err$2 = _r$7;
185439
+ if (!($interfaceIsEqual(err$2, $ifaceNil))) {
185440
+ $s = -1; return err$2;
185441
+ }
185442
+ m.initialized = true;
185443
+ /* } */ case 26:
185444
+ _r$8 = m.decodeAndRenderBuffer(jsNaClDecoder, $clone(currentFrame$1.JSBuffer(), js.Value)); /* */ $s = 28; case 28: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
185445
+ $24r$1 = _r$8;
185446
+ $s = 29; case 29: return $24r$1;
185447
+ /* } else if ($assertType(_ref, ptrType$3, true)[1]) { */ case 16:
185448
+ currentFrame$2 = _ref.$val;
185449
+ m.renderedDirect.Store(true);
185450
+ /* */ if (!m.initialized) { $s = 30; continue; }
185451
+ /* */ $s = 31; continue;
185452
+ /* if (!m.initialized) { */ case 30:
185453
+ _r$9 = m.initialize(sliceType$1.nil); /* */ $s = 32; case 32: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
185454
+ err$3 = _r$9;
185290
185455
  if (!($interfaceIsEqual(err$3, $ifaceNil))) {
185291
185456
  $s = -1; return err$3;
185292
185457
  }
185293
185458
  m.initialized = true;
185459
+ /* } */ case 31:
185460
+ $r = m.mutexDecode.Lock(); /* */ $s = 33; case 33: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185461
+ _r$10 = $clone(jsNaClDecoder, js.Value).Call("decodeAndRenderRef", new sliceType([new $Uint32(currentFrame$2.DataRef())])); /* */ $s = 34; case 34: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
185462
+ decodePromise = $clone(_r$10, js.Value);
185463
+ _r$11 = jshelper.Await($clone(decodePromise, js.Value)); /* */ $s = 35; case 35: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
185464
+ _tuple = _r$11;
185465
+ decodeResult = _tuple[0];
185466
+ err$4 = _tuple[1];
185467
+ $r = m.mutexDecode.Unlock(); /* */ $s = 36; case 36: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185468
+ /* */ if (!(err$4 === ptrType.nil)) { $s = 37; continue; }
185469
+ /* */ $s = 38; continue;
185470
+ /* if (!(err$4 === ptrType.nil)) { */ case 37:
185471
+ _r$12 = jshelper.GetError(err$4); /* */ $s = 39; case 39: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
185472
+ _r$13 = _r$12.Error(); /* */ $s = 40; case 40: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
185473
+ _arg = new $String(_r$13);
185474
+ _r$14 = errs.Errorf("Failed to decode frame: %s", new sliceType([_arg])); /* */ $s = 41; case 41: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
185475
+ $24r$2 = _r$14;
185476
+ $s = 42; case 42: return $24r$2;
185294
185477
  /* } */ case 38:
185295
- $r = m.mutexDecode.Lock(); /* */ $s = 40; case 40: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185296
- _r$14 = $clone(jsNaClDecoder, js.Value).Call("decodeAndRenderRef", new sliceType([new $Uint32(frame$2.DataRef())])); /* */ $s = 41; case 41: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
185297
- decodePromise$1 = $clone(_r$14, js.Value);
185298
- _r$15 = jshelper.Await($clone(decodePromise$1, js.Value)); /* */ $s = 42; case 42: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
185299
- _tuple$1 = _r$15;
185300
- decodeResult$1 = _tuple$1[0];
185301
- err$4 = _tuple$1[1];
185302
- $r = m.mutexDecode.Unlock(); /* */ $s = 43; case 43: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185303
- /* */ if (!(err$4 === ptrType.nil)) { $s = 44; continue; }
185304
- /* */ $s = 45; continue;
185305
- /* if (!(err$4 === ptrType.nil)) { */ case 44:
185306
- _r$16 = jshelper.GetError(err$4); /* */ $s = 46; case 46: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
185307
- _r$17 = _r$16.Error(); /* */ $s = 47; case 47: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; }
185308
- _arg$1 = new $String(_r$17);
185309
- _r$18 = errs.Errorf("Failed to decode frame: %s", new sliceType([_arg$1])); /* */ $s = 48; case 48: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; }
185310
- $24r$2 = _r$18;
185311
- $s = 49; case 49: return $24r$2;
185312
- /* } */ case 45:
185313
- /* */ if (!(($clone(decodeResult$1, js.Value).Float() === 0))) { $s = 50; continue; }
185314
- /* */ $s = 51; continue;
185315
- /* if (!(($clone(decodeResult$1, js.Value).Float() === 0))) { */ case 50:
185316
- _r$19 = errs.Errorf("Failed to decode frame with code: %f", new sliceType([new $Float64($clone(decodeResult$1, js.Value).Float())])); /* */ $s = 52; case 52: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; }
185317
- $24r$3 = _r$19;
185318
- $s = 53; case 53: return $24r$3;
185319
- /* } */ case 51:
185320
- m.renderedDirect = true;
185321
- /* } */ case 16:
185478
+ /* */ if (!(($clone(decodeResult, js.Value).Float() === 0))) { $s = 43; continue; }
185479
+ /* */ $s = 44; continue;
185480
+ /* if (!(($clone(decodeResult, js.Value).Float() === 0))) { */ case 43:
185481
+ _r$15 = errs.Errorf("Failed to decode frame with code: %f", new sliceType([new $Float64($clone(decodeResult, js.Value).Float())])); /* */ $s = 45; case 45: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
185482
+ $24r$3 = _r$15;
185483
+ $s = 46; case 46: return $24r$3;
185484
+ /* } */ case 44:
185485
+ /* } */ case 17:
185322
185486
  $s = -1; return $ifaceNil;
185323
- /* */ } return; } var $f = {$blk: NaClDecoder.ptr.prototype.Write, $c: true, $r, $24r, $24r$1, $24r$2, $24r$3, _arg, _arg$1, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tuple, _tuple$1, decodeArgs, decodePromise, decodePromise$1, decodeResult, decodeResult$1, err, err$1, err$2, err$3, err$4, frame$1, frame$2, jsNaClDecoder, m, nal, pictureBuffer, pictureUint8Array, someFrame, $s};return $f;
185487
+ /* */ } return; } var $f = {$blk: NaClDecoder.ptr.prototype.Write, $c: true, $r, $24r, $24r$1, $24r$2, $24r$3, _arg, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tuple, currentFrame, currentFrame$1, currentFrame$2, decodePromise, decodeResult, err, err$1, err$2, err$3, err$4, jsNaClDecoder, m, nal, pictureBuffer, pictureUint8Array, someFrame, $s};return $f;
185324
185488
  };
185325
185489
  NaClDecoder.prototype.Write = function(someFrame) { return this.$val.Write(someFrame); };
185490
+ NaClDecoder.ptr.prototype.decodeBuffer = function(jsNaClDecoder, pictureBuffer) {
185491
+ var {$24r, $24r$1, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _tuple, decodeArgs, decodePromise, decodeResult, err, jsNaClDecoder, m, pictureBuffer, $s, $r, $c} = $restore(this, {jsNaClDecoder, pictureBuffer});
185492
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
185493
+ m = this;
185494
+ _r = $clone($clone(js.Global(), js.Value).Get("Object"), js.Value).New(sliceType.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
185495
+ decodeArgs = $clone(_r, js.Value);
185496
+ $clone(decodeArgs, js.Value).Set("decodeId", new $Int(0));
185497
+ $clone(decodeArgs, js.Value).Set("data", new pictureBuffer.constructor.elem(pictureBuffer));
185498
+ $r = m.mutexDecode.Lock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185499
+ _r$1 = $clone(jsNaClDecoder, js.Value).Call("decode", new sliceType([new decodeArgs.constructor.elem(decodeArgs)])); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
185500
+ decodePromise = $clone(_r$1, js.Value);
185501
+ _r$2 = jshelper.Await($clone(decodePromise, js.Value)); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
185502
+ _tuple = _r$2;
185503
+ decodeResult = _tuple[0];
185504
+ err = _tuple[1];
185505
+ $r = m.mutexDecode.Unlock(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185506
+ /* */ if (!(err === ptrType.nil)) { $s = 6; continue; }
185507
+ /* */ $s = 7; continue;
185508
+ /* if (!(err === ptrType.nil)) { */ case 6:
185509
+ _r$3 = jshelper.GetError(err); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
185510
+ _r$4 = _r$3.Error(); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
185511
+ _arg = new $String(_r$4);
185512
+ _r$5 = errs.Errorf("Failed to decode frame: %s", new sliceType([_arg])); /* */ $s = 10; case 10: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
185513
+ $24r = _r$5;
185514
+ $s = 11; case 11: return $24r;
185515
+ /* } */ case 7:
185516
+ /* */ if (!(($clone(decodeResult, js.Value).Float() === 0))) { $s = 12; continue; }
185517
+ /* */ $s = 13; continue;
185518
+ /* if (!(($clone(decodeResult, js.Value).Float() === 0))) { */ case 12:
185519
+ _r$6 = errs.Errorf("Failed to decode frame with code: %f", new sliceType([new $Float64($clone(decodeResult, js.Value).Float())])); /* */ $s = 14; case 14: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
185520
+ $24r$1 = _r$6;
185521
+ $s = 15; case 15: return $24r$1;
185522
+ /* } */ case 13:
185523
+ $s = -1; return $ifaceNil;
185524
+ /* */ } return; } var $f = {$blk: NaClDecoder.ptr.prototype.decodeBuffer, $c: true, $r, $24r, $24r$1, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _tuple, decodeArgs, decodePromise, decodeResult, err, jsNaClDecoder, m, pictureBuffer, $s};return $f;
185525
+ };
185526
+ NaClDecoder.prototype.decodeBuffer = function(jsNaClDecoder, pictureBuffer) { return this.$val.decodeBuffer(jsNaClDecoder, pictureBuffer); };
185527
+ NaClDecoder.ptr.prototype.decodeAndRenderBuffer = function(jsNaClDecoder, pictureBuffer) {
185528
+ var {$24r, $24r$1, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, decodePromise, decodeResult, err, jsNaClDecoder, m, pictureBuffer, $s, $r, $c} = $restore(this, {jsNaClDecoder, pictureBuffer});
185529
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
185530
+ m = this;
185531
+ $r = m.mutexDecode.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185532
+ _r = $clone(jsNaClDecoder, js.Value).Call("decodeAndRender", new sliceType([new pictureBuffer.constructor.elem(pictureBuffer)])); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
185533
+ decodePromise = $clone(_r, js.Value);
185534
+ _r$1 = jshelper.Await($clone(decodePromise, js.Value)); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
185535
+ _tuple = _r$1;
185536
+ decodeResult = _tuple[0];
185537
+ err = _tuple[1];
185538
+ $r = m.mutexDecode.Unlock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185539
+ /* */ if (!(err === ptrType.nil)) { $s = 5; continue; }
185540
+ /* */ $s = 6; continue;
185541
+ /* if (!(err === ptrType.nil)) { */ case 5:
185542
+ _r$2 = jshelper.GetError(err); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
185543
+ _r$3 = _r$2.Error(); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
185544
+ _arg = new $String(_r$3);
185545
+ _r$4 = errs.Errorf("Failed to decode and render frame: %s", new sliceType([_arg])); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
185546
+ $24r = _r$4;
185547
+ $s = 10; case 10: return $24r;
185548
+ /* } */ case 6:
185549
+ /* */ if (!(($clone(decodeResult, js.Value).Float() === 0))) { $s = 11; continue; }
185550
+ /* */ $s = 12; continue;
185551
+ /* if (!(($clone(decodeResult, js.Value).Float() === 0))) { */ case 11:
185552
+ _r$5 = errs.Errorf("Failed to decode and render frame with code: %f", new sliceType([new $Float64($clone(decodeResult, js.Value).Float())])); /* */ $s = 13; case 13: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
185553
+ $24r$1 = _r$5;
185554
+ $s = 14; case 14: return $24r$1;
185555
+ /* } */ case 12:
185556
+ $s = -1; return $ifaceNil;
185557
+ /* */ } return; } var $f = {$blk: NaClDecoder.ptr.prototype.decodeAndRenderBuffer, $c: true, $r, $24r, $24r$1, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, decodePromise, decodeResult, err, jsNaClDecoder, m, pictureBuffer, $s};return $f;
185558
+ };
185559
+ NaClDecoder.prototype.decodeAndRenderBuffer = function(jsNaClDecoder, pictureBuffer) { return this.$val.decodeAndRenderBuffer(jsNaClDecoder, pictureBuffer); };
185326
185560
  NaClDecoder.ptr.prototype.NextOutput = function(outputBuffer) {
185327
185561
  var {$24r, $24r$1, $24r$2, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _tuple, err, jsNaClDecoder, m, outputBuffer, picture, picturePromise, $s, $r, $c} = $restore(this, {outputBuffer});
185328
185562
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
185329
185563
  m = this;
185330
- if (m.renderedDirect) {
185331
- $assertType(outputBuffer, ptrType$3).Picture = ptrType.nil;
185564
+ if (m.renderedDirect.Load()) {
185565
+ $assertType(outputBuffer, ptrType$4).Picture = ptrType.nil;
185332
185566
  $s = -1; return $ifaceNil;
185333
185567
  }
185334
185568
  /* */ if (!m.initialized) { $s = 1; continue; }
@@ -185365,7 +185599,7 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/nacldecoder"] = (functio
185365
185599
  $24r$2 = _r$6;
185366
185600
  $s = 18; case 18: return $24r$2;
185367
185601
  /* } */ case 14:
185368
- $assertType(outputBuffer, ptrType$3).Picture = picture;
185602
+ $assertType(outputBuffer, ptrType$4).Picture = picture;
185369
185603
  $s = -1; return $ifaceNil;
185370
185604
  /* */ } return; } var $f = {$blk: NaClDecoder.ptr.prototype.NextOutput, $c: true, $r, $24r, $24r$1, $24r$2, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _tuple, err, jsNaClDecoder, m, outputBuffer, picture, picturePromise, $s};return $f;
185371
185605
  };
@@ -185374,28 +185608,23 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/nacldecoder"] = (functio
185374
185608
  var {_r, jsNaClDecoder, m, outputBuffer, picture, x, $s, $r, $c} = $restore(this, {outputBuffer});
185375
185609
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
185376
185610
  m = this;
185377
- if (m.renderedDirect) {
185378
- m.renderedDirect = false;
185611
+ picture = $assertType(outputBuffer, ptrType$4).Picture;
185612
+ if (picture === ptrType.nil) {
185379
185613
  $s = -1; return;
185380
185614
  }
185381
185615
  jsNaClDecoder = jsdecoder.GetJsNaClDecoder();
185382
185616
  /* */ if (!(jsNaClDecoder === ptrType.nil)) { $s = 1; continue; }
185383
185617
  /* */ $s = 2; continue;
185384
185618
  /* if (!(jsNaClDecoder === ptrType.nil)) { */ case 1:
185385
- picture = $assertType(outputBuffer, ptrType$3).Picture;
185386
- /* */ if (!(picture === ptrType.nil)) { $s = 3; continue; }
185387
- /* */ $s = 4; continue;
185388
- /* if (!(picture === ptrType.nil)) { */ case 3:
185389
- _r = $clone(jsNaClDecoder, js.Value).Call("recyclePicture", new sliceType([(x = picture, new x.constructor.elem(x))])); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
185390
- _r;
185391
- /* } */ case 4:
185619
+ _r = $clone(jsNaClDecoder, js.Value).Call("recyclePicture", new sliceType([(x = picture, new x.constructor.elem(x))])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
185620
+ _r;
185392
185621
  /* } */ case 2:
185393
185622
  $s = -1; return;
185394
185623
  /* */ } return; } var $f = {$blk: NaClDecoder.ptr.prototype.Release, $c: true, $r, _r, jsNaClDecoder, m, outputBuffer, picture, x, $s};return $f;
185395
185624
  };
185396
185625
  NaClDecoder.prototype.Release = function(outputBuffer) { return this.$val.Release(outputBuffer); };
185397
- ptrType$4.methods = [{prop: "initialize", name: "initialize", pkg: "github.com/supraio/client-daemon/pkg/decoder/nacldecoder", typ: $funcType([sliceType$1], [$error], false)}, {prop: "reset", name: "reset", pkg: "github.com/supraio/client-daemon/pkg/decoder/nacldecoder", typ: $funcType([], [$error], false)}, {prop: "destroy", name: "destroy", pkg: "github.com/supraio/client-daemon/pkg/decoder/nacldecoder", typ: $funcType([], [$error], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([frame.FrameInterface], [$error], false)}, {prop: "NextOutput", name: "NextOutput", pkg: "", typ: $funcType([general.OutputBuffer], [$error], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([general.OutputBuffer], [], false)}];
185398
- NaClDecoder.init("github.com/supraio/client-daemon/pkg/decoder/nacldecoder", [{prop: "initialized", name: "initialized", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "renderedDirect", name: "renderedDirect", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "mutexDecode", name: "mutexDecode", embedded: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "mutexGetPicture", name: "mutexGetPicture", embedded: false, exported: false, typ: sync.Mutex, tag: ""}]);
185626
+ ptrType$5.methods = [{prop: "initialize", name: "initialize", pkg: "github.com/supraio/client-daemon/pkg/decoder/nacldecoder", typ: $funcType([sliceType$1], [$error], false)}, {prop: "reset", name: "reset", pkg: "github.com/supraio/client-daemon/pkg/decoder/nacldecoder", typ: $funcType([], [$error], false)}, {prop: "destroy", name: "destroy", pkg: "github.com/supraio/client-daemon/pkg/decoder/nacldecoder", typ: $funcType([], [$error], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([frame.FrameInterface], [$error], false)}, {prop: "decodeBuffer", name: "decodeBuffer", pkg: "github.com/supraio/client-daemon/pkg/decoder/nacldecoder", typ: $funcType([ptrType, js.Value], [$error], false)}, {prop: "decodeAndRenderBuffer", name: "decodeAndRenderBuffer", pkg: "github.com/supraio/client-daemon/pkg/decoder/nacldecoder", typ: $funcType([ptrType, js.Value], [$error], false)}, {prop: "NextOutput", name: "NextOutput", pkg: "", typ: $funcType([general.OutputBuffer], [$error], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([general.OutputBuffer], [], false)}];
185627
+ NaClDecoder.init("github.com/supraio/client-daemon/pkg/decoder/nacldecoder", [{prop: "initialized", name: "initialized", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "renderedDirect", name: "renderedDirect", embedded: false, exported: false, typ: atomic.Bool, tag: ""}, {prop: "mutexDecode", name: "mutexDecode", embedded: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "mutexGetPicture", name: "mutexGetPicture", embedded: false, exported: false, typ: sync.Mutex, tag: ""}]);
185399
185628
  $init = function() {
185400
185629
  $pkg.$init = function() {};
185401
185630
  /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
@@ -185407,7 +185636,8 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/nacldecoder"] = (functio
185407
185636
  $r = frame.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185408
185637
  $r = nacltcp.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185409
185638
  $r = sync.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185410
- $r = js.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185639
+ $r = atomic.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185640
+ $r = js.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185411
185641
  /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
185412
185642
  };
185413
185643
  $pkg.$init = $init;
@@ -185507,8 +185737,8 @@ $packages["github.com/supraio/client-daemon/pkg/render/netframe/samsungwasmtcp"]
185507
185737
  /* */ } return; } var $f = {$blk: NewSamsungWasmTCPFrameCollector, $c: true, $r, _ref, maxPacketSize, screenConn, screenConnTyped, screenConnTyped$1, $s};return $f;
185508
185738
  };
185509
185739
  $pkg.NewSamsungWasmTCPFrameCollector = NewSamsungWasmTCPFrameCollector;
185510
- SWTFrameCollector.ptr.prototype.CollectFrame = function(startCb, endCb) {
185511
- var {$24r, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, c, collectPromise, collectedFrame, endCb, err, frame$1, jsConn, opts, startCb, timestampHi, timestampLo, x, x$1, x$2, $s, $r, $c} = $restore(this, {startCb, endCb});
185740
+ SWTFrameCollector.ptr.prototype.CollectFrame = function(startCb, endCb, param) {
185741
+ var {$24r, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, c, collectPromise, collectedFrame, endCb, err, frame$1, jsConn, opts, param, startCb, timestampHi, timestampLo, x, x$1, x$2, $s, $r, $c} = $restore(this, {startCb, endCb, param});
185512
185742
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
185513
185743
  endCb = [endCb];
185514
185744
  startCb = [startCb];
@@ -185548,9 +185778,9 @@ $packages["github.com/supraio/client-daemon/pkg/render/netframe/samsungwasmtcp"]
185548
185778
  timestampHi = (new $Uint64(0, (($clone($clone($clone(collectedFrame, js.Value).Get("timestamp"), js.Value).Get("hi"), js.Value).Int() >>> 0))));
185549
185779
  frame$1 = new SWTFrame.ptr((($clone($clone(collectedFrame, js.Value).Get("frameType"), js.Value).Int() << 24 >>> 24)), (x$2 = $shiftLeft64(timestampHi, 32), new $Uint64(timestampLo.$high | x$2.$high, (timestampLo.$low | x$2.$low) >>> 0)), (($clone($clone(collectedFrame, js.Value).Get("dataRef"), js.Value).Int() >>> 0)));
185550
185780
  $s = -1; return [frame$1, $ifaceNil];
185551
- /* */ } return; } var $f = {$blk: SWTFrameCollector.ptr.prototype.CollectFrame, $c: true, $r, $24r, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, c, collectPromise, collectedFrame, endCb, err, frame$1, jsConn, opts, startCb, timestampHi, timestampLo, x, x$1, x$2, $s};return $f;
185781
+ /* */ } return; } var $f = {$blk: SWTFrameCollector.ptr.prototype.CollectFrame, $c: true, $r, $24r, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, c, collectPromise, collectedFrame, endCb, err, frame$1, jsConn, opts, param, startCb, timestampHi, timestampLo, x, x$1, x$2, $s};return $f;
185552
185782
  };
185553
- SWTFrameCollector.prototype.CollectFrame = function(startCb, endCb) { return this.$val.CollectFrame(startCb, endCb); };
185783
+ SWTFrameCollector.prototype.CollectFrame = function(startCb, endCb, param) { return this.$val.CollectFrame(startCb, endCb, param); };
185554
185784
  SWTFrame.ptr.prototype.FrameType = function() {
185555
185785
  var f;
185556
185786
  f = this;
@@ -185578,7 +185808,7 @@ $packages["github.com/supraio/client-daemon/pkg/render/netframe/samsungwasmtcp"]
185578
185808
  return f.dataRef;
185579
185809
  };
185580
185810
  SWTFrame.prototype.DataRef = function() { return this.$val.DataRef(); };
185581
- ptrType$2.methods = [{prop: "CollectFrame", name: "CollectFrame", pkg: "", typ: $funcType([funcType, funcType], [frame.FrameInterface, $error], false)}];
185811
+ ptrType$2.methods = [{prop: "CollectFrame", name: "CollectFrame", pkg: "", typ: $funcType([funcType, funcType, netframe.FrameCollectionDurationCallback], [frame.FrameInterface, $error], false)}];
185582
185812
  ptrType$3.methods = [{prop: "FrameType", name: "FrameType", pkg: "", typ: $funcType([], [frame.FrameType], false)}, {prop: "Buffer", name: "Buffer", pkg: "", typ: $funcType([], [sliceType$1], false)}, {prop: "GetTimestamp", name: "GetTimestamp", pkg: "", typ: $funcType([], [time.Time], false)}, {prop: "DataRef", name: "DataRef", pkg: "", typ: $funcType([], [$Uint32], false)}];
185583
185813
  SWTFrameCollector.init("github.com/supraio/client-daemon/pkg/render/netframe/samsungwasmtcp", [{prop: "conn", name: "conn", embedded: false, exported: false, typ: netpacket.SamsungWasmTCPConn, tag: ""}]);
185584
185814
  SWTFrame.init("github.com/supraio/client-daemon/pkg/render/netframe/samsungwasmtcp", [{prop: "frameType", name: "frameType", embedded: false, exported: false, typ: frame.FrameType, tag: ""}, {prop: "timestamp", name: "timestamp", embedded: false, exported: false, typ: $Uint64, tag: ""}, {prop: "dataRef", name: "dataRef", embedded: false, exported: false, typ: $Uint32, tag: ""}]);
@@ -185601,7 +185831,7 @@ $packages["github.com/supraio/client-daemon/pkg/render/netframe/samsungwasmtcp"]
185601
185831
  return $pkg;
185602
185832
  })();
185603
185833
  $packages["github.com/supraio/client-daemon/pkg/decoder/samsungwasmdecoder"] = (function() {
185604
- var $pkg = {}, $init, general, jsdecoder, errs, jshelper, frame, samsungwasmtcp, sync, js, SamsungWasmDecoder, sliceType, ptrType, ptrType$1, ptrType$2, ptrType$3, IsAvailable, NewDecoder;
185834
+ var $pkg = {}, $init, general, jsdecoder, errs, jshelper, frame, samsungwasmtcp, sync, js, SamsungWasmDecoder, sliceType, ptrType, ptrType$1, ptrType$2, ptrType$3, ptrType$4, IsAvailable, NewDecoder;
185605
185835
  general = $packages["github.com/supraio/client-daemon/pkg/decoder/general"];
185606
185836
  jsdecoder = $packages["github.com/supraio/client-daemon/pkg/decoder/samsungwasmdecoder/jsdecoder"];
185607
185837
  errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
@@ -185623,8 +185853,9 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/samsungwasmdecoder"] = (
185623
185853
  sliceType = $sliceType($emptyInterface);
185624
185854
  ptrType = $ptrType(js.Value);
185625
185855
  ptrType$1 = $ptrType(frame.Frame);
185626
- ptrType$2 = $ptrType(samsungwasmtcp.SWTFrame);
185627
- ptrType$3 = $ptrType(SamsungWasmDecoder);
185856
+ ptrType$2 = $ptrType(frame.JSFrame);
185857
+ ptrType$3 = $ptrType(samsungwasmtcp.SWTFrame);
185858
+ ptrType$4 = $ptrType(SamsungWasmDecoder);
185628
185859
  IsAvailable = function() {
185629
185860
  return jsdecoder.IsAvailable();
185630
185861
  };
@@ -185635,7 +185866,7 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/samsungwasmdecoder"] = (
185635
185866
  };
185636
185867
  $pkg.NewDecoder = NewDecoder;
185637
185868
  SamsungWasmDecoder.ptr.prototype.Write = function(someFrame) {
185638
- var {$24r, $24r$1, $24r$2, $24r$3, _arg, _arg$1, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tuple, _tuple$1, decodePromise, decodePromise$1, decodeResult, decodeResult$1, err, err$1, frame$1, frame$2, jsSamsungWasmDecoder, m, nal, pictureBuffer, pictureUint8Array, someFrame, $s, $r, $c} = $restore(this, {someFrame});
185869
+ var {$24r, $24r$1, $24r$2, $24r$3, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tuple, currentFrame, currentFrame$1, currentFrame$2, decodePromise, decodeResult, err, jsSamsungWasmDecoder, m, nal, pictureBuffer, pictureUint8Array, someFrame, $s, $r, $c} = $restore(this, {someFrame});
185639
185870
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
185640
185871
  m = this;
185641
185872
  jsSamsungWasmDecoder = jsdecoder.GetJsSamsungWasmDecoder();
@@ -185645,73 +185876,89 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/samsungwasmdecoder"] = (
185645
185876
  _ref = someFrame;
185646
185877
  /* */ if ($assertType(_ref, ptrType$1, true)[1]) { $s = 1; continue; }
185647
185878
  /* */ if ($assertType(_ref, ptrType$2, true)[1]) { $s = 2; continue; }
185648
- /* */ $s = 3; continue;
185879
+ /* */ if ($assertType(_ref, ptrType$3, true)[1]) { $s = 3; continue; }
185880
+ /* */ $s = 4; continue;
185649
185881
  /* if ($assertType(_ref, ptrType$1, true)[1]) { */ case 1:
185650
- frame$1 = _ref.$val;
185651
- nal = frame$1.Buffer();
185652
- _r = $clone($clone(js.Global(), js.Value).Get("ArrayBuffer"), js.Value).New(new sliceType([new $Int(nal.$length)])); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
185882
+ currentFrame = _ref.$val;
185883
+ nal = currentFrame.Buffer();
185884
+ _r = $clone($clone(js.Global(), js.Value).Get("ArrayBuffer"), js.Value).New(new sliceType([new $Int(nal.$length)])); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
185653
185885
  pictureBuffer = $clone(_r, js.Value);
185654
- _r$1 = $clone($clone(js.Global(), js.Value).Get("Uint8Array"), js.Value).New(new sliceType([new pictureBuffer.constructor.elem(pictureBuffer)])); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
185886
+ _r$1 = $clone($clone(js.Global(), js.Value).Get("Uint8Array"), js.Value).New(new sliceType([new pictureBuffer.constructor.elem(pictureBuffer)])); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
185655
185887
  pictureUint8Array = $clone(_r$1, js.Value);
185656
185888
  js.CopyBytesToJS($clone(pictureUint8Array, js.Value), nal);
185657
- $r = m.mutexDecode.Lock(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185658
- _r$2 = $clone(jsSamsungWasmDecoder, js.Value).Call("decodeAndRender", new sliceType([new pictureBuffer.constructor.elem(pictureBuffer)])); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
185659
- decodePromise = $clone(_r$2, js.Value);
185660
- _r$3 = jshelper.Await($clone(decodePromise, js.Value)); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
185661
- _tuple = _r$3;
185889
+ _r$2 = m.decodeBuffer(jsSamsungWasmDecoder, $clone(pictureBuffer, js.Value)); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
185890
+ $24r = _r$2;
185891
+ $s = 8; case 8: return $24r;
185892
+ /* } else if ($assertType(_ref, ptrType$2, true)[1]) { */ case 2:
185893
+ currentFrame$1 = _ref.$val;
185894
+ _r$3 = m.decodeBuffer(jsSamsungWasmDecoder, $clone(currentFrame$1.JSBuffer(), js.Value)); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
185895
+ $24r$1 = _r$3;
185896
+ $s = 10; case 10: return $24r$1;
185897
+ /* } else if ($assertType(_ref, ptrType$3, true)[1]) { */ case 3:
185898
+ currentFrame$2 = _ref.$val;
185899
+ $r = m.mutexDecode.Lock(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185900
+ _r$4 = $clone(jsSamsungWasmDecoder, js.Value).Call("decodeAndRenderRef", new sliceType([new $Uint32(currentFrame$2.DataRef())])); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
185901
+ decodePromise = $clone(_r$4, js.Value);
185902
+ _r$5 = jshelper.Await($clone(decodePromise, js.Value)); /* */ $s = 13; case 13: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
185903
+ _tuple = _r$5;
185662
185904
  decodeResult = _tuple[0];
185663
185905
  err = _tuple[1];
185664
- $r = m.mutexDecode.Unlock(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185665
- /* */ if (!(err === ptrType.nil)) { $s = 10; continue; }
185666
- /* */ $s = 11; continue;
185667
- /* if (!(err === ptrType.nil)) { */ case 10:
185668
- _r$4 = jshelper.GetError(err); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
185669
- _r$5 = _r$4.Error(); /* */ $s = 13; case 13: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
185670
- _arg = new $String(_r$5);
185671
- _r$6 = errs.Errorf("Failed to decode frame: %s", new sliceType([_arg])); /* */ $s = 14; case 14: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
185672
- $24r = _r$6;
185673
- $s = 15; case 15: return $24r;
185674
- /* } */ case 11:
185675
- /* */ if (!(($clone(decodeResult, js.Value).Float() === 0))) { $s = 16; continue; }
185676
- /* */ $s = 17; continue;
185677
- /* if (!(($clone(decodeResult, js.Value).Float() === 0))) { */ case 16:
185678
- _r$7 = errs.Errorf("Failed to decode frame with code: %f", new sliceType([new $Float64($clone(decodeResult, js.Value).Float())])); /* */ $s = 18; case 18: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
185679
- $24r$1 = _r$7;
185680
- $s = 19; case 19: return $24r$1;
185681
- /* } */ case 17:
185682
- $s = 3; continue;
185683
- /* } else if ($assertType(_ref, ptrType$2, true)[1]) { */ case 2:
185684
- frame$2 = _ref.$val;
185685
- $r = m.mutexDecode.Lock(); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185686
- _r$8 = $clone(jsSamsungWasmDecoder, js.Value).Call("decodeAndRenderRef", new sliceType([new $Uint32(frame$2.DataRef())])); /* */ $s = 21; case 21: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
185687
- decodePromise$1 = $clone(_r$8, js.Value);
185688
- _r$9 = jshelper.Await($clone(decodePromise$1, js.Value)); /* */ $s = 22; case 22: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
185689
- _tuple$1 = _r$9;
185690
- decodeResult$1 = _tuple$1[0];
185691
- err$1 = _tuple$1[1];
185692
- $r = m.mutexDecode.Unlock(); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185693
- /* */ if (!(err$1 === ptrType.nil)) { $s = 24; continue; }
185694
- /* */ $s = 25; continue;
185695
- /* if (!(err$1 === ptrType.nil)) { */ case 24:
185696
- _r$10 = jshelper.GetError(err$1); /* */ $s = 26; case 26: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
185697
- _r$11 = _r$10.Error(); /* */ $s = 27; case 27: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
185698
- _arg$1 = new $String(_r$11);
185699
- _r$12 = errs.Errorf("Failed to decode frame: %s", new sliceType([_arg$1])); /* */ $s = 28; case 28: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
185700
- $24r$2 = _r$12;
185701
- $s = 29; case 29: return $24r$2;
185702
- /* } */ case 25:
185703
- /* */ if (!(($clone(decodeResult$1, js.Value).Float() === 0))) { $s = 30; continue; }
185704
- /* */ $s = 31; continue;
185705
- /* if (!(($clone(decodeResult$1, js.Value).Float() === 0))) { */ case 30:
185706
- _r$13 = errs.Errorf("Failed to decode frame with code: %f", new sliceType([new $Float64($clone(decodeResult$1, js.Value).Float())])); /* */ $s = 32; case 32: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
185707
- $24r$3 = _r$13;
185708
- $s = 33; case 33: return $24r$3;
185709
- /* } */ case 31:
185710
- /* } */ case 3:
185906
+ $r = m.mutexDecode.Unlock(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185907
+ /* */ if (!(err === ptrType.nil)) { $s = 15; continue; }
185908
+ /* */ $s = 16; continue;
185909
+ /* if (!(err === ptrType.nil)) { */ case 15:
185910
+ _r$6 = jshelper.GetError(err); /* */ $s = 17; case 17: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
185911
+ _r$7 = _r$6.Error(); /* */ $s = 18; case 18: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
185912
+ _arg = new $String(_r$7);
185913
+ _r$8 = errs.Errorf("Failed to decode frame: %s", new sliceType([_arg])); /* */ $s = 19; case 19: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
185914
+ $24r$2 = _r$8;
185915
+ $s = 20; case 20: return $24r$2;
185916
+ /* } */ case 16:
185917
+ /* */ if (!(($clone(decodeResult, js.Value).Float() === 0))) { $s = 21; continue; }
185918
+ /* */ $s = 22; continue;
185919
+ /* if (!(($clone(decodeResult, js.Value).Float() === 0))) { */ case 21:
185920
+ _r$9 = errs.Errorf("Failed to decode frame with code: %f", new sliceType([new $Float64($clone(decodeResult, js.Value).Float())])); /* */ $s = 23; case 23: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
185921
+ $24r$3 = _r$9;
185922
+ $s = 24; case 24: return $24r$3;
185923
+ /* } */ case 22:
185924
+ /* } */ case 4:
185711
185925
  $s = -1; return $ifaceNil;
185712
- /* */ } return; } var $f = {$blk: SamsungWasmDecoder.ptr.prototype.Write, $c: true, $r, $24r, $24r$1, $24r$2, $24r$3, _arg, _arg$1, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tuple, _tuple$1, decodePromise, decodePromise$1, decodeResult, decodeResult$1, err, err$1, frame$1, frame$2, jsSamsungWasmDecoder, m, nal, pictureBuffer, pictureUint8Array, someFrame, $s};return $f;
185926
+ /* */ } return; } var $f = {$blk: SamsungWasmDecoder.ptr.prototype.Write, $c: true, $r, $24r, $24r$1, $24r$2, $24r$3, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tuple, currentFrame, currentFrame$1, currentFrame$2, decodePromise, decodeResult, err, jsSamsungWasmDecoder, m, nal, pictureBuffer, pictureUint8Array, someFrame, $s};return $f;
185713
185927
  };
185714
185928
  SamsungWasmDecoder.prototype.Write = function(someFrame) { return this.$val.Write(someFrame); };
185929
+ SamsungWasmDecoder.ptr.prototype.decodeBuffer = function(jsSamsungWasmDecoder, pictureBuffer) {
185930
+ var {$24r, $24r$1, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, decodePromise, decodeResult, err, jsSamsungWasmDecoder, m, pictureBuffer, $s, $r, $c} = $restore(this, {jsSamsungWasmDecoder, pictureBuffer});
185931
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
185932
+ m = this;
185933
+ $r = m.mutexDecode.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185934
+ _r = $clone(jsSamsungWasmDecoder, js.Value).Call("decodeAndRender", new sliceType([new pictureBuffer.constructor.elem(pictureBuffer)])); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
185935
+ decodePromise = $clone(_r, js.Value);
185936
+ _r$1 = jshelper.Await($clone(decodePromise, js.Value)); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
185937
+ _tuple = _r$1;
185938
+ decodeResult = _tuple[0];
185939
+ err = _tuple[1];
185940
+ $r = m.mutexDecode.Unlock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185941
+ /* */ if (!(err === ptrType.nil)) { $s = 5; continue; }
185942
+ /* */ $s = 6; continue;
185943
+ /* if (!(err === ptrType.nil)) { */ case 5:
185944
+ _r$2 = jshelper.GetError(err); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
185945
+ _r$3 = _r$2.Error(); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
185946
+ _arg = new $String(_r$3);
185947
+ _r$4 = errs.Errorf("Failed to decode frame: %s", new sliceType([_arg])); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
185948
+ $24r = _r$4;
185949
+ $s = 10; case 10: return $24r;
185950
+ /* } */ case 6:
185951
+ /* */ if (!(($clone(decodeResult, js.Value).Float() === 0))) { $s = 11; continue; }
185952
+ /* */ $s = 12; continue;
185953
+ /* if (!(($clone(decodeResult, js.Value).Float() === 0))) { */ case 11:
185954
+ _r$5 = errs.Errorf("Failed to decode frame with code: %f", new sliceType([new $Float64($clone(decodeResult, js.Value).Float())])); /* */ $s = 13; case 13: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
185955
+ $24r$1 = _r$5;
185956
+ $s = 14; case 14: return $24r$1;
185957
+ /* } */ case 12:
185958
+ $s = -1; return $ifaceNil;
185959
+ /* */ } return; } var $f = {$blk: SamsungWasmDecoder.ptr.prototype.decodeBuffer, $c: true, $r, $24r, $24r$1, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, decodePromise, decodeResult, err, jsSamsungWasmDecoder, m, pictureBuffer, $s};return $f;
185960
+ };
185961
+ SamsungWasmDecoder.prototype.decodeBuffer = function(jsSamsungWasmDecoder, pictureBuffer) { return this.$val.decodeBuffer(jsSamsungWasmDecoder, pictureBuffer); };
185715
185962
  SamsungWasmDecoder.ptr.prototype.NextOutput = function(outputBuffer) {
185716
185963
  var m, outputBuffer;
185717
185964
  m = this;
@@ -185723,7 +185970,7 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/samsungwasmdecoder"] = (
185723
185970
  m = this;
185724
185971
  };
185725
185972
  SamsungWasmDecoder.prototype.Release = function(outputBuffer) { return this.$val.Release(outputBuffer); };
185726
- ptrType$3.methods = [{prop: "destroy", name: "destroy", pkg: "github.com/supraio/client-daemon/pkg/decoder/samsungwasmdecoder", typ: $funcType([], [$error], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([frame.FrameInterface], [$error], false)}, {prop: "NextOutput", name: "NextOutput", pkg: "", typ: $funcType([general.OutputBuffer], [$error], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([general.OutputBuffer], [], false)}];
185973
+ ptrType$4.methods = [{prop: "destroy", name: "destroy", pkg: "github.com/supraio/client-daemon/pkg/decoder/samsungwasmdecoder", typ: $funcType([], [$error], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([frame.FrameInterface], [$error], false)}, {prop: "decodeBuffer", name: "decodeBuffer", pkg: "github.com/supraio/client-daemon/pkg/decoder/samsungwasmdecoder", typ: $funcType([ptrType, js.Value], [$error], false)}, {prop: "NextOutput", name: "NextOutput", pkg: "", typ: $funcType([general.OutputBuffer], [$error], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([general.OutputBuffer], [], false)}];
185727
185974
  SamsungWasmDecoder.init("github.com/supraio/client-daemon/pkg/decoder/samsungwasmdecoder", [{prop: "mutexDecode", name: "mutexDecode", embedded: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "mutexGetPicture", name: "mutexGetPicture", embedded: false, exported: false, typ: sync.Mutex, tag: ""}]);
185728
185975
  $init = function() {
185729
185976
  $pkg.$init = function() {};
@@ -190579,8 +190826,7 @@ $packages["golang.org/x/exp/shiny/driver/canvasdriver"] = (function() {
190579
190826
  return $pkg;
190580
190827
  })();
190581
190828
  $packages["github.com/supraio/client-daemon/pkg/decoder/webcodecs"] = (function() {
190582
- var $pkg = {}, $init, hex, webgl, general, errs, jshelper, frame, canvasdriver, image, js, WebCodecsDecoder, ptrType, sliceType, ptrType$1, sliceType$1, ptrType$2, chanType, chanType$1, funcType, IsAvailable, NewDecoder;
190583
- hex = $packages["encoding/hex"];
190829
+ var $pkg = {}, $init, webgl, general, errs, jshelper, frame, canvasdriver, image, js, WebCodecsDecoder, ptrType, sliceType, sliceType$1, funcType, arrayType, ptrType$1, ptrType$2, ptrType$3, chanType, chanType$1, IsAvailable, NewDecoder, byteToHex;
190584
190830
  webgl = $packages["github.com/nuberu/webgl"];
190585
190831
  general = $packages["github.com/supraio/client-daemon/pkg/decoder/general"];
190586
190832
  errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
@@ -190605,12 +190851,14 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/webcodecs"] = (function(
190605
190851
  });
190606
190852
  ptrType = $ptrType(js.Value);
190607
190853
  sliceType = $sliceType($emptyInterface);
190608
- ptrType$1 = $ptrType(canvasdriver.BufferImpl);
190609
190854
  sliceType$1 = $sliceType($Uint8);
190610
- ptrType$2 = $ptrType(WebCodecsDecoder);
190855
+ funcType = $funcType([], [], false);
190856
+ arrayType = $arrayType(funcType, 0);
190857
+ ptrType$1 = $ptrType(frame.JSFrame);
190858
+ ptrType$2 = $ptrType(canvasdriver.BufferImpl);
190859
+ ptrType$3 = $ptrType(WebCodecsDecoder);
190611
190860
  chanType = $chanType(js.Value, false, false);
190612
190861
  chanType$1 = $chanType($error, false, false);
190613
- funcType = $funcType([], [], false);
190614
190862
  IsAvailable = function() {
190615
190863
  return !$clone($clone(js.Global(), js.Value).Get("VideoDecoder"), js.Value).IsUndefined();
190616
190864
  };
@@ -190651,7 +190899,7 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/webcodecs"] = (function(
190651
190899
  $clone(init, js.Value).Set("error", new errorCallback[0].constructor.elem(errorCallback[0]));
190652
190900
  _r$1 = $clone($clone(js.Global(), js.Value).Get("VideoDecoder"), js.Value).New(new sliceType([new init.constructor.elem(init)])); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
190653
190901
  jsVideoDecoder[0] = $clone(_r$1, js.Value);
190654
- h264CodecName = d[0].detectCodecName(nal);
190902
+ h264CodecName = d[0].detectCodecName($clone(nal, js.Value));
190655
190903
  _r$2 = $clone($clone(js.Global(), js.Value).Get("Object"), js.Value).New(sliceType.nil); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
190656
190904
  config = $clone(_r$2, js.Value);
190657
190905
  $clone(config, js.Value).Set("codec", new $String(h264CodecName));
@@ -190670,57 +190918,78 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/webcodecs"] = (function(
190670
190918
  };
190671
190919
  WebCodecsDecoder.prototype.configure = function(nal) { return this.$val.configure(nal); };
190672
190920
  WebCodecsDecoder.ptr.prototype.detectCodecName = function(nal) {
190673
- var codecName, d, nal;
190921
+ var d, nal;
190674
190922
  d = this;
190675
- codecName = "avc1." + hex.EncodeToString($subslice(nal, 5, 8));
190676
- return codecName;
190923
+ return "avc1." + byteToHex($clone($clone(nal, js.Value).Index(5), js.Value).Int()) + byteToHex($clone($clone(nal, js.Value).Index(6), js.Value).Int()) + byteToHex($clone($clone(nal, js.Value).Index(7), js.Value).Int());
190677
190924
  };
190678
190925
  WebCodecsDecoder.prototype.detectCodecName = function(nal) { return this.$val.detectCodecName(nal); };
190679
- WebCodecsDecoder.ptr.prototype.Write = function(frame$1) {
190680
- var {$24r, _r, _r$1, _r$2, _r$3, _r$4, _r$5, chunk, chunkOpts, d, errDec, frame$1, frameData, frameType, nal, $s, $r, $c} = $restore(this, {frame$1});
190926
+ byteToHex = function(value) {
190927
+ var value;
190928
+ return ($bytesToString(new sliceType$1(["0123456789abcdef".charCodeAt((((value >> 4 >> 0)) & 15)), "0123456789abcdef".charCodeAt((value & 15))])));
190929
+ };
190930
+ WebCodecsDecoder.ptr.prototype.Write = function(someFrame) {
190931
+ var {$24r, $24r$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _ref, chunk, chunkOpts, currentFrame, currentFrame$1, d, errDec, frameData, frameType, someFrame, x, $s, $r, $c} = $restore(this, {someFrame});
190681
190932
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190682
190933
  d = this;
190683
- _r = frame$1.Buffer(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190684
- nal = _r;
190934
+ frameData = new js.Value.ptr(null, false, arrayType.zero());
190935
+ _ref = someFrame;
190936
+ /* */ if ($assertType(_ref, ptrType$1, true)[1]) { $s = 1; continue; }
190937
+ /* */ $s = 2; continue;
190938
+ /* if ($assertType(_ref, ptrType$1, true)[1]) { */ case 1:
190939
+ currentFrame = _ref.$val;
190940
+ _r = $clone($clone(js.Global(), js.Value).Get("Uint8Array"), js.Value).New(new sliceType([(x = currentFrame.JSBuffer(), new x.constructor.elem(x))])); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190941
+ js.Value.copy(frameData, _r);
190942
+ $s = 3; continue;
190943
+ /* } else { */ case 2:
190944
+ currentFrame$1 = _ref;
190945
+ _r$1 = currentFrame$1.Buffer(); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
190946
+ _r$2 = webgl.TypedArrayOf(_r$1); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
190947
+ js.Value.copy(frameData, _r$2);
190948
+ /* } */ case 3:
190949
+ /* */ if ($clone($clone(frameData, js.Value).Get("byteLength"), js.Value).Int() < 8) { $s = 7; continue; }
190950
+ /* */ $s = 8; continue;
190951
+ /* if ($clone($clone(frameData, js.Value).Get("byteLength"), js.Value).Int() < 8) { */ case 7:
190952
+ _r$3 = errs.Errorf("H264 frame is too short to detect codec", sliceType.nil); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
190953
+ $24r = _r$3;
190954
+ $s = 10; case 10: return $24r;
190955
+ /* } */ case 8:
190685
190956
  frameType = "delta";
190686
190957
  frameType = "key";
190687
- /* */ if (d.jsVideoDecoder === ptrType.nil) { $s = 2; continue; }
190688
- /* */ $s = 3; continue;
190689
- /* if (d.jsVideoDecoder === ptrType.nil) { */ case 2:
190690
- $r = d.configure(nal); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190691
- /* } */ case 3:
190692
- /* */ if (d.jsVideoDecoder === ptrType.nil) { $s = 5; continue; }
190693
- /* */ $s = 6; continue;
190694
- /* if (d.jsVideoDecoder === ptrType.nil) { */ case 5:
190695
- _r$1 = errs.Errorf("VideoDecoder was not properly configured", sliceType.nil); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
190696
- $24r = _r$1;
190697
- $s = 8; case 8: return $24r;
190698
- /* } */ case 6:
190699
- _r$2 = $clone($clone(js.Global(), js.Value).Get("Object"), js.Value).New(sliceType.nil); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
190700
- chunkOpts = $clone(_r$2, js.Value);
190701
- _r$3 = webgl.TypedArrayOf(nal); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
190702
- frameData = $clone(_r$3, js.Value);
190958
+ /* */ if (d.jsVideoDecoder === ptrType.nil) { $s = 11; continue; }
190959
+ /* */ $s = 12; continue;
190960
+ /* if (d.jsVideoDecoder === ptrType.nil) { */ case 11:
190961
+ $r = d.configure($clone(frameData, js.Value)); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190962
+ /* } */ case 12:
190963
+ /* */ if (d.jsVideoDecoder === ptrType.nil) { $s = 14; continue; }
190964
+ /* */ $s = 15; continue;
190965
+ /* if (d.jsVideoDecoder === ptrType.nil) { */ case 14:
190966
+ _r$4 = errs.Errorf("VideoDecoder was not properly configured", sliceType.nil); /* */ $s = 16; case 16: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
190967
+ $24r$1 = _r$4;
190968
+ $s = 17; case 17: return $24r$1;
190969
+ /* } */ case 15:
190970
+ _r$5 = $clone($clone(js.Global(), js.Value).Get("Object"), js.Value).New(sliceType.nil); /* */ $s = 18; case 18: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
190971
+ chunkOpts = $clone(_r$5, js.Value);
190703
190972
  $clone(chunkOpts, js.Value).Set("type", new $String(frameType));
190704
190973
  $clone(chunkOpts, js.Value).Set("data", new frameData.constructor.elem(frameData));
190705
190974
  $clone(chunkOpts, js.Value).Set("timestamp", new $Int(0));
190706
- _r$4 = $clone($clone(js.Global(), js.Value).Get("EncodedVideoChunk"), js.Value).New(new sliceType([new chunkOpts.constructor.elem(chunkOpts)])); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
190707
- chunk = $clone(_r$4, js.Value);
190708
- _r$5 = d.jsSafeDecode($clone(chunk, js.Value)); /* */ $s = 12; case 12: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
190709
- errDec = _r$5;
190710
- /* */ if (!($interfaceIsEqual(errDec, $ifaceNil))) { $s = 13; continue; }
190711
- /* */ $s = 14; continue;
190712
- /* if (!($interfaceIsEqual(errDec, $ifaceNil))) { */ case 13:
190713
- /* */ if ($clone($clone(d.jsVideoDecoder, js.Value).Get("state"), js.Value).String() === "closed") { $s = 15; continue; }
190714
- /* */ $s = 16; continue;
190715
- /* if ($clone($clone(d.jsVideoDecoder, js.Value).Get("state"), js.Value).String() === "closed") { */ case 15:
190716
- $r = d.releaseVideoDecoder(); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190717
- /* } */ case 16:
190975
+ _r$6 = $clone($clone(js.Global(), js.Value).Get("EncodedVideoChunk"), js.Value).New(new sliceType([new chunkOpts.constructor.elem(chunkOpts)])); /* */ $s = 19; case 19: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
190976
+ chunk = $clone(_r$6, js.Value);
190977
+ _r$7 = d.jsSafeDecode($clone(chunk, js.Value)); /* */ $s = 20; case 20: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
190978
+ errDec = _r$7;
190979
+ /* */ if (!($interfaceIsEqual(errDec, $ifaceNil))) { $s = 21; continue; }
190980
+ /* */ $s = 22; continue;
190981
+ /* if (!($interfaceIsEqual(errDec, $ifaceNil))) { */ case 21:
190982
+ /* */ if ($clone($clone(d.jsVideoDecoder, js.Value).Get("state"), js.Value).String() === "closed") { $s = 23; continue; }
190983
+ /* */ $s = 24; continue;
190984
+ /* if ($clone($clone(d.jsVideoDecoder, js.Value).Get("state"), js.Value).String() === "closed") { */ case 23:
190985
+ $r = d.releaseVideoDecoder(); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190986
+ /* } */ case 24:
190718
190987
  $s = -1; return errDec;
190719
- /* } */ case 14:
190988
+ /* } */ case 22:
190720
190989
  $s = -1; return $ifaceNil;
190721
- /* */ } return; } var $f = {$blk: WebCodecsDecoder.ptr.prototype.Write, $c: true, $r, $24r, _r, _r$1, _r$2, _r$3, _r$4, _r$5, chunk, chunkOpts, d, errDec, frame$1, frameData, frameType, nal, $s};return $f;
190990
+ /* */ } return; } var $f = {$blk: WebCodecsDecoder.ptr.prototype.Write, $c: true, $r, $24r, $24r$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _ref, chunk, chunkOpts, currentFrame, currentFrame$1, d, errDec, frameData, frameType, someFrame, x, $s};return $f;
190722
190991
  };
190723
- WebCodecsDecoder.prototype.Write = function(frame$1) { return this.$val.Write(frame$1); };
190992
+ WebCodecsDecoder.prototype.Write = function(someFrame) { return this.$val.Write(someFrame); };
190724
190993
  WebCodecsDecoder.ptr.prototype.NextOutput = function(outputBuffer) {
190725
190994
  var {_r, _r$1, _selection, d, displayHeight, displayWidth, err, frame$1, output, outputBuffer, ycbcrImg, ycbcrJSImg, $s, $r, $c} = $restore(this, {outputBuffer});
190726
190995
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
@@ -190736,7 +191005,7 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/webcodecs"] = (function(
190736
191005
  err = _selection[1][0];
190737
191006
  $s = -1; return err;
190738
191007
  }
190739
- ycbcrJSImg = $assertType(outputBuffer, ptrType$1).YCbCrJS();
191008
+ ycbcrJSImg = $assertType(outputBuffer, ptrType$2).YCbCrJS();
190740
191009
  ycbcrJSImg.CanvasImageSource = frame$1;
190741
191010
  displayWidth = $clone($clone(frame$1, js.Value).Get("displayWidth"), js.Value).Int();
190742
191011
  displayHeight = $clone($clone(frame$1, js.Value).Get("displayHeight"), js.Value).Int();
@@ -190752,7 +191021,7 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/webcodecs"] = (function(
190752
191021
  var {_r, m, outputBuffer, ycbcrJSImg, $s, $r, $c} = $restore(this, {outputBuffer});
190753
191022
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190754
191023
  m = this;
190755
- ycbcrJSImg = $assertType(outputBuffer, ptrType$1).YCbCrJS();
191024
+ ycbcrJSImg = $assertType(outputBuffer, ptrType$2).YCbCrJS();
190756
191025
  /* */ if (!(ycbcrJSImg.CanvasImageSource === ptrType.nil)) { $s = 1; continue; }
190757
191026
  /* */ $s = 2; continue;
190758
191027
  /* if (!(ycbcrJSImg.CanvasImageSource === ptrType.nil)) { */ case 1:
@@ -190790,20 +191059,19 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/webcodecs"] = (function(
190790
191059
  /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return err[0]; } if($curGoroutine.asleep) { var $f = {$blk: WebCodecsDecoder.ptr.prototype.jsSafeDecode, $c: true, $r, $24r, _r, chunk, d, err, $s, $deferred};return $f; } }
190791
191060
  };
190792
191061
  WebCodecsDecoder.prototype.jsSafeDecode = function(chunk) { return this.$val.jsSafeDecode(chunk); };
190793
- ptrType$2.methods = [{prop: "configure", name: "configure", pkg: "github.com/supraio/client-daemon/pkg/decoder/webcodecs", typ: $funcType([sliceType$1], [], false)}, {prop: "detectCodecName", name: "detectCodecName", pkg: "github.com/supraio/client-daemon/pkg/decoder/webcodecs", typ: $funcType([sliceType$1], [$String], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([frame.FrameInterface], [$error], false)}, {prop: "NextOutput", name: "NextOutput", pkg: "", typ: $funcType([general.OutputBuffer], [$error], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([general.OutputBuffer], [], false)}, {prop: "jsSafeDecode", name: "jsSafeDecode", pkg: "github.com/supraio/client-daemon/pkg/decoder/webcodecs", typ: $funcType([js.Value], [$error], false)}];
191062
+ ptrType$3.methods = [{prop: "configure", name: "configure", pkg: "github.com/supraio/client-daemon/pkg/decoder/webcodecs", typ: $funcType([js.Value], [], false)}, {prop: "detectCodecName", name: "detectCodecName", pkg: "github.com/supraio/client-daemon/pkg/decoder/webcodecs", typ: $funcType([js.Value], [$String], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([frame.FrameInterface], [$error], false)}, {prop: "NextOutput", name: "NextOutput", pkg: "", typ: $funcType([general.OutputBuffer], [$error], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([general.OutputBuffer], [], false)}, {prop: "jsSafeDecode", name: "jsSafeDecode", pkg: "github.com/supraio/client-daemon/pkg/decoder/webcodecs", typ: $funcType([js.Value], [$error], false)}];
190794
191063
  WebCodecsDecoder.init("github.com/supraio/client-daemon/pkg/decoder/webcodecs", [{prop: "jsVideoDecoder", name: "jsVideoDecoder", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "outputChan", name: "outputChan", embedded: false, exported: false, typ: chanType, tag: ""}, {prop: "errorChan", name: "errorChan", embedded: false, exported: false, typ: chanType$1, tag: ""}, {prop: "releaseVideoDecoder", name: "releaseVideoDecoder", embedded: false, exported: false, typ: funcType, tag: ""}]);
190795
191064
  $init = function() {
190796
191065
  $pkg.$init = function() {};
190797
191066
  /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
190798
- $r = hex.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190799
- $r = webgl.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190800
- $r = general.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190801
- $r = errs.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190802
- $r = jshelper.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190803
- $r = frame.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190804
- $r = canvasdriver.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190805
- $r = image.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190806
- $r = js.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191067
+ $r = webgl.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191068
+ $r = general.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191069
+ $r = errs.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191070
+ $r = jshelper.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191071
+ $r = frame.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191072
+ $r = canvasdriver.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191073
+ $r = image.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191074
+ $r = js.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190807
191075
  /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
190808
191076
  };
190809
191077
  $pkg.$init = $init;
@@ -192500,11 +192768,14 @@ $packages["github.com/supraio/client-daemon/pkg/netclient"] = (function() {
192500
192768
  return $pkg;
192501
192769
  })();
192502
192770
  $packages["github.com/supraio/client-daemon/pkg/render/netframe/jswebsocketworker"] = (function() {
192503
- var $pkg = {}, $init, netpacket, frame, netframe, js, FrameCollector, ptrType, sliceType, sliceType$1, funcType, ptrType$1, init, NewFrameCollector;
192771
+ var $pkg = {}, $init, errs, netpacket, frame, netframe, math, js, time, FrameCollector, ptrType, sliceType, funcType, ptrType$1, init, NewFrameCollector;
192772
+ errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
192504
192773
  netpacket = $packages["github.com/supraio/client-daemon/pkg/netpacket"];
192505
192774
  frame = $packages["github.com/supraio/client-daemon/pkg/render/frame"];
192506
192775
  netframe = $packages["github.com/supraio/client-daemon/pkg/render/netframe"];
192776
+ math = $packages["math"];
192507
192777
  js = $packages["syscall/js"];
192778
+ time = $packages["time"];
192508
192779
  FrameCollector = $pkg.FrameCollector = $newType(0, $kindStruct, "jswebsocketworker.FrameCollector", true, "github.com/supraio/client-daemon/pkg/render/netframe/jswebsocketworker", true, function(conn_) {
192509
192780
  this.$val = this;
192510
192781
  if (arguments.length === 0) {
@@ -192514,8 +192785,7 @@ $packages["github.com/supraio/client-daemon/pkg/render/netframe/jswebsocketworke
192514
192785
  this.conn = conn_;
192515
192786
  });
192516
192787
  ptrType = $ptrType(netpacket.JsWebsocketWorkerConn);
192517
- sliceType = $sliceType($Uint8);
192518
- sliceType$1 = $sliceType($emptyInterface);
192788
+ sliceType = $sliceType($emptyInterface);
192519
192789
  funcType = $funcType([], [], false);
192520
192790
  ptrType$1 = $ptrType(FrameCollector);
192521
192791
  init = function() {
@@ -192532,48 +192802,66 @@ $packages["github.com/supraio/client-daemon/pkg/render/netframe/jswebsocketworke
192532
192802
  return new FrameCollector.ptr(conn);
192533
192803
  };
192534
192804
  $pkg.NewFrameCollector = NewFrameCollector;
192535
- FrameCollector.ptr.prototype.CollectFrame = function(startCb, endCb) {
192536
- var {$24r, $24r$1, _arg, _arg$1, _r, _r$1, _r$2, _tuple, buffer, c, collectedFrame, data, endCb, err, frameLength, length, startCb, $s, $deferred, $r, $c} = $restore(this, {startCb, endCb});
192537
- /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
192805
+ FrameCollector.ptr.prototype.CollectFrame = function(param, param$1, durationCb) {
192806
+ var {$24r, $24r$1, $24r$2, _r, _r$1, _r$2, _r$3, _tuple, byteLength, c, collectedFrame, collectionDurationMs, data, durationCb, err, firstPacketAt, firstPacketAtValue, frameLength, goReceivedAt, length, param, param$1, $s, $r, $c} = $restore(this, {param, param$1, durationCb});
192807
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
192538
192808
  c = this;
192539
- $r = startCb(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192540
- $deferred.push([endCb, []]);
192541
- _r = c.conn.CollectFrame(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
192809
+ _r = c.conn.CollectFrame(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
192542
192810
  _tuple = _r;
192543
192811
  collectedFrame = _tuple[0];
192544
- err = _tuple[1];
192545
- /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 3; continue; }
192546
- /* */ $s = 4; continue;
192547
- /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 3:
192548
- $24r = [$ifaceNil, err];
192549
- $s = 5; case 5: return $24r;
192550
- /* } */ case 4:
192812
+ goReceivedAt = _tuple[1];
192813
+ err = _tuple[2];
192814
+ if (!($interfaceIsEqual(err, $ifaceNil))) {
192815
+ $s = -1; return [$ifaceNil, err];
192816
+ }
192551
192817
  data = $clone($clone(collectedFrame, js.Value).Get("data"), js.Value);
192552
- length = $clone($clone(data, js.Value).Get("byteLength"), js.Value).Int();
192818
+ byteLength = $clone($clone(data, js.Value).Get("byteLength"), js.Value).Int();
192819
+ length = byteLength;
192553
192820
  frameLength = $clone($clone(collectedFrame, js.Value).Get("length"), js.Value);
192554
192821
  if (!$clone(frameLength, js.Value).IsUndefined() && !$clone(frameLength, js.Value).IsNull()) {
192555
192822
  length = $clone(frameLength, js.Value).Int();
192556
192823
  }
192557
- buffer = $makeSlice(sliceType, length);
192558
- _arg = buffer;
192559
- _r$1 = $clone($clone(js.Global(), js.Value).Get("Uint8Array"), js.Value).New(new sliceType$1([new data.constructor.elem(data), new $Int(0), new $Int(length)])); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
192560
- _arg$1 = $clone(_r$1, js.Value);
192561
- _r$2 = js.CopyBytesToGo(_arg, _arg$1); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
192562
- _r$2;
192563
- $24r$1 = [frame.NewFrame((($clone($clone(collectedFrame, js.Value).Get("frameType"), js.Value).Int() << 24 >>> 24)), buffer, (new $Uint64(0, $clone($clone(collectedFrame, js.Value).Get("timestamp"), js.Value).Float()))), $ifaceNil];
192564
- $s = 8; case 8: return $24r$1;
192565
- /* */ } return; } } catch(err) { $err = err; $s = -1; return [$ifaceNil, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: FrameCollector.ptr.prototype.CollectFrame, $c: true, $r, $24r, $24r$1, _arg, _arg$1, _r, _r$1, _r$2, _tuple, buffer, c, collectedFrame, data, endCb, err, frameLength, length, startCb, $s, $deferred};return $f; } }
192824
+ /* */ if (!((length === byteLength))) { $s = 2; continue; }
192825
+ /* */ $s = 3; continue;
192826
+ /* if (!((length === byteLength))) { */ case 2:
192827
+ _r$1 = errs.Errorf("Worker frame buffer length mismatch: expected %d, received %d", new sliceType([new $Int(length), new $Int(byteLength)])); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
192828
+ $24r = [$ifaceNil, _r$1];
192829
+ $s = 5; case 5: return $24r;
192830
+ /* } */ case 3:
192831
+ firstPacketAtValue = $clone($clone(collectedFrame, js.Value).Get("firstPacketAt"), js.Value);
192832
+ /* */ if (!(($clone(firstPacketAtValue, js.Value).Type() === 3))) { $s = 6; continue; }
192833
+ /* */ $s = 7; continue;
192834
+ /* if (!(($clone(firstPacketAtValue, js.Value).Type() === 3))) { */ case 6:
192835
+ _r$2 = errs.Errorf("Worker frame is missing first packet timestamp", sliceType.nil); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
192836
+ $24r$1 = [$ifaceNil, _r$2];
192837
+ $s = 9; case 9: return $24r$1;
192838
+ /* } */ case 7:
192839
+ firstPacketAt = $clone(firstPacketAtValue, js.Value).Float();
192840
+ collectionDurationMs = goReceivedAt - firstPacketAt;
192841
+ /* */ if (math.IsNaN(collectionDurationMs) || math.IsInf(collectionDurationMs, 0) || collectionDurationMs < 0) { $s = 10; continue; }
192842
+ /* */ $s = 11; continue;
192843
+ /* if (math.IsNaN(collectionDurationMs) || math.IsInf(collectionDurationMs, 0) || collectionDurationMs < 0) { */ case 10:
192844
+ _r$3 = errs.Errorf("Invalid worker frame collection duration: %fms", new sliceType([new $Float64(collectionDurationMs)])); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
192845
+ $24r$2 = [$ifaceNil, _r$3];
192846
+ $s = 13; case 13: return $24r$2;
192847
+ /* } */ case 11:
192848
+ $r = durationCb((new time.Duration(0, collectionDurationMs * 1e+06))); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192849
+ $s = -1; return [frame.NewJSFrame((($clone($clone(collectedFrame, js.Value).Get("frameType"), js.Value).Int() << 24 >>> 24)), $clone(data, js.Value), (new $Uint64(0, $clone($clone(collectedFrame, js.Value).Get("timestamp"), js.Value).Float()))), $ifaceNil];
192850
+ /* */ } return; } var $f = {$blk: FrameCollector.ptr.prototype.CollectFrame, $c: true, $r, $24r, $24r$1, $24r$2, _r, _r$1, _r$2, _r$3, _tuple, byteLength, c, collectedFrame, collectionDurationMs, data, durationCb, err, firstPacketAt, firstPacketAtValue, frameLength, goReceivedAt, length, param, param$1, $s};return $f;
192566
192851
  };
192567
- FrameCollector.prototype.CollectFrame = function(startCb, endCb) { return this.$val.CollectFrame(startCb, endCb); };
192568
- ptrType$1.methods = [{prop: "CollectFrame", name: "CollectFrame", pkg: "", typ: $funcType([funcType, funcType], [frame.FrameInterface, $error], false)}];
192852
+ FrameCollector.prototype.CollectFrame = function(param, param$1, durationCb) { return this.$val.CollectFrame(param, param$1, durationCb); };
192853
+ ptrType$1.methods = [{prop: "CollectFrame", name: "CollectFrame", pkg: "", typ: $funcType([funcType, funcType, netframe.FrameCollectionDurationCallback], [frame.FrameInterface, $error], false)}];
192569
192854
  FrameCollector.init("github.com/supraio/client-daemon/pkg/render/netframe/jswebsocketworker", [{prop: "conn", name: "conn", embedded: false, exported: false, typ: ptrType, tag: ""}]);
192570
192855
  $init = function() {
192571
192856
  $pkg.$init = function() {};
192572
192857
  /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
192573
- $r = netpacket.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192574
- $r = frame.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192575
- $r = netframe.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192576
- $r = js.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192858
+ $r = errs.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192859
+ $r = netpacket.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192860
+ $r = frame.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192861
+ $r = netframe.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192862
+ $r = math.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192863
+ $r = js.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192864
+ $r = time.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192577
192865
  init();
192578
192866
  /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
192579
192867
  };
@@ -193435,7 +193723,7 @@ $packages["golang.org/x/exp/shiny/driver/webgldriver"] = (function() {
193435
193723
  return $pkg;
193436
193724
  })();
193437
193725
  $packages["github.com/supraio/client-daemon/pkg/decoder/h264decoder"] = (function() {
193438
- var $pkg = {}, $init, general, errs, frame, webgldriver, image, js, H264Decoder, funcType, arrayType, sliceType, ptrType, ptrType$1, chanType, IsAvailable, NewDecoder;
193726
+ var $pkg = {}, $init, general, errs, frame, webgldriver, image, js, H264Decoder, funcType, arrayType, sliceType, ptrType, ptrType$1, ptrType$2, chanType, IsAvailable, NewDecoder;
193439
193727
  general = $packages["github.com/supraio/client-daemon/pkg/decoder/general"];
193440
193728
  errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
193441
193729
  frame = $packages["github.com/supraio/client-daemon/pkg/render/frame"];
@@ -193455,8 +193743,9 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/h264decoder"] = (functio
193455
193743
  funcType = $funcType([], [], false);
193456
193744
  arrayType = $arrayType(funcType, 0);
193457
193745
  sliceType = $sliceType($emptyInterface);
193458
- ptrType = $ptrType(webgldriver.BufferImpl);
193459
- ptrType$1 = $ptrType(H264Decoder);
193746
+ ptrType = $ptrType(frame.JSFrame);
193747
+ ptrType$1 = $ptrType(webgldriver.BufferImpl);
193748
+ ptrType$2 = $ptrType(H264Decoder);
193460
193749
  chanType = $chanType($emptyInterface, false, false);
193461
193750
  IsAvailable = function() {
193462
193751
  return !$clone($clone(js.Global(), js.Value).Get("h264Decoder"), js.Value).IsUndefined();
@@ -193468,33 +193757,49 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/h264decoder"] = (functio
193468
193757
  return [new H264Decoder.ptr($clone(decoder, js.Value), new $Chan($emptyInterface, 1)), $ifaceNil];
193469
193758
  };
193470
193759
  $pkg.NewDecoder = NewDecoder;
193471
- H264Decoder.ptr.prototype.Write = function(frame$1) {
193472
- var {$24r, _r, _r$1, _r$2, _r$3, frame$1, m, nal, nalBuffer, nalBufferOffset, pHeight, pPicture, pWidth, status, x, x$1, $s, $r, $c} = $restore(this, {frame$1});
193760
+ H264Decoder.ptr.prototype.Write = function(someFrame) {
193761
+ var {$24r, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, currentFrame, currentFrame$1, m, nal, nalBuffer, nalBufferOffset, nalLength, pHeight, pPicture, pWidth, someFrame, status, x, x$1, x$2, x$3, $s, $r, $c} = $restore(this, {someFrame});
193473
193762
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
193474
193763
  m = this;
193475
- _r = frame$1.Buffer(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
193476
- nal = _r;
193477
193764
  nalBufferOffset = $clone($clone(m.decoder, js.Value).Get("decBuffer"), js.Value);
193478
- _r$1 = $clone($clone($clone(m.decoder, js.Value).Get("memory"), js.Value).Get("HEAPU8"), js.Value).Call("subarray", new sliceType([new nalBufferOffset.constructor.elem(nalBufferOffset)])); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
193479
- nalBuffer = $clone(_r$1, js.Value);
193480
- js.CopyBytesToJS($clone(nalBuffer, js.Value), nal);
193765
+ _r = $clone($clone($clone(m.decoder, js.Value).Get("memory"), js.Value).Get("HEAPU8"), js.Value).Call("subarray", new sliceType([new nalBufferOffset.constructor.elem(nalBufferOffset)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
193766
+ nalBuffer = $clone(_r, js.Value);
193767
+ nalLength = 0;
193768
+ _ref = someFrame;
193769
+ /* */ if ($assertType(_ref, ptrType, true)[1]) { $s = 2; continue; }
193770
+ /* */ $s = 3; continue;
193771
+ /* if ($assertType(_ref, ptrType, true)[1]) { */ case 2:
193772
+ currentFrame = _ref.$val;
193773
+ nalLength = currentFrame.ByteLength();
193774
+ _r$1 = $clone($clone(js.Global(), js.Value).Get("Uint8Array"), js.Value).New(new sliceType([(x$1 = currentFrame.JSBuffer(), new x$1.constructor.elem(x$1))])); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
193775
+ _arg = (x = _r$1, new x.constructor.elem(x));
193776
+ _r$2 = $clone(nalBuffer, js.Value).Call("set", new sliceType([_arg])); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
193777
+ _r$2;
193778
+ $s = 4; continue;
193779
+ /* } else { */ case 3:
193780
+ currentFrame$1 = _ref;
193781
+ _r$3 = currentFrame$1.Buffer(); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
193782
+ nal = _r$3;
193783
+ nalLength = nal.$length;
193784
+ js.CopyBytesToJS($clone(nalBuffer, js.Value), nal);
193785
+ /* } */ case 4:
193481
193786
  pPicture = $clone($clone(m.decoder, js.Value).Get("pPicture"), js.Value);
193482
193787
  pWidth = $clone($clone(m.decoder, js.Value).Get("pWidth"), js.Value);
193483
193788
  pHeight = $clone($clone(m.decoder, js.Value).Get("pHeight"), js.Value);
193484
- _r$2 = $clone($clone(m.decoder, js.Value).Get("asm"), js.Value).Call("decode", new sliceType([(x = $clone(m.decoder, js.Value).Get("pStorage"), new x.constructor.elem(x)), (x$1 = $clone(m.decoder, js.Value).Get("decBuffer"), new x$1.constructor.elem(x$1)), new $Int(nal.$length), new pPicture.constructor.elem(pPicture), new pWidth.constructor.elem(pWidth), new pHeight.constructor.elem(pHeight)])); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
193485
- status = $clone(_r$2, js.Value);
193486
- /* */ if (!(($clone(status, js.Value).Int() === 1))) { $s = 4; continue; }
193487
- /* */ $s = 5; continue;
193488
- /* if (!(($clone(status, js.Value).Int() === 1))) { */ case 4:
193489
- _r$3 = errs.Errorf("Decoding failed with status code %d", new sliceType([new $Int($clone(status, js.Value).Int())])); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
193490
- $24r = _r$3;
193491
- $s = 7; case 7: return $24r;
193492
- /* } */ case 5:
193493
- $r = $send(m.outputChan, $ifaceNil); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193789
+ _r$4 = $clone($clone(m.decoder, js.Value).Get("asm"), js.Value).Call("decode", new sliceType([(x$2 = $clone(m.decoder, js.Value).Get("pStorage"), new x$2.constructor.elem(x$2)), (x$3 = $clone(m.decoder, js.Value).Get("decBuffer"), new x$3.constructor.elem(x$3)), new $Int(nalLength), new pPicture.constructor.elem(pPicture), new pWidth.constructor.elem(pWidth), new pHeight.constructor.elem(pHeight)])); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
193790
+ status = $clone(_r$4, js.Value);
193791
+ /* */ if (!(($clone(status, js.Value).Int() === 1))) { $s = 9; continue; }
193792
+ /* */ $s = 10; continue;
193793
+ /* if (!(($clone(status, js.Value).Int() === 1))) { */ case 9:
193794
+ _r$5 = errs.Errorf("Decoding failed with status code %d", new sliceType([new $Int($clone(status, js.Value).Int())])); /* */ $s = 11; case 11: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
193795
+ $24r = _r$5;
193796
+ $s = 12; case 12: return $24r;
193797
+ /* } */ case 10:
193798
+ $r = $send(m.outputChan, $ifaceNil); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193494
193799
  $s = -1; return $ifaceNil;
193495
- /* */ } return; } var $f = {$blk: H264Decoder.ptr.prototype.Write, $c: true, $r, $24r, _r, _r$1, _r$2, _r$3, frame$1, m, nal, nalBuffer, nalBufferOffset, pHeight, pPicture, pWidth, status, x, x$1, $s};return $f;
193800
+ /* */ } return; } var $f = {$blk: H264Decoder.ptr.prototype.Write, $c: true, $r, $24r, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, currentFrame, currentFrame$1, m, nal, nalBuffer, nalBufferOffset, nalLength, pHeight, pPicture, pWidth, someFrame, status, x, x$1, x$2, x$3, $s};return $f;
193496
193801
  };
193497
- H264Decoder.prototype.Write = function(frame$1) { return this.$val.Write(frame$1); };
193802
+ H264Decoder.prototype.Write = function(someFrame) { return this.$val.Write(someFrame); };
193498
193803
  H264Decoder.ptr.prototype.NextOutput = function(outputBuffer) {
193499
193804
  var {_q, _q$1, _q$2, _r, _r$1, _r$2, _r$3, cSize, cStride, height, heightIndex, m, outputBuffer, pHeight, pPicture, pWidth, pictureBuffer, pictureBufferOffset, pictureIndex, pictureLen, width, widthIndex, ySize, yStride, ycbcrImg, ycbcrJSImg, $s, $r, $c} = $restore(this, {outputBuffer});
193500
193805
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
@@ -193517,7 +193822,7 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/h264decoder"] = (functio
193517
193822
  cStride = (_q$1 = yStride / 2, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero"));
193518
193823
  ySize = $imul(yStride, height);
193519
193824
  cSize = (_q$2 = ($imul(cStride, height)) / 2, (_q$2 === _q$2 && _q$2 !== 1/0 && _q$2 !== -1/0) ? _q$2 >> 0 : $throwRuntimeError("integer divide by zero"));
193520
- _r$2 = $assertType(outputBuffer, ptrType).YCbCrJS(); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
193825
+ _r$2 = $assertType(outputBuffer, ptrType$1).YCbCrJS(); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
193521
193826
  ycbcrJSImg = _r$2;
193522
193827
  webgldriver.ArrayBufferSlice.copy(ycbcrJSImg.Y, new webgldriver.ArrayBufferSlice.ptr($clone(pictureBuffer, js.Value), 0, ySize));
193523
193828
  webgldriver.ArrayBufferSlice.copy(ycbcrJSImg.Cb, new webgldriver.ArrayBufferSlice.ptr($clone(pictureBuffer, js.Value), ySize, ySize + cSize >> 0));
@@ -193540,7 +193845,7 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/h264decoder"] = (functio
193540
193845
  m = this;
193541
193846
  };
193542
193847
  H264Decoder.prototype.Release = function(outputBuffer) { return this.$val.Release(outputBuffer); };
193543
- ptrType$1.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([frame.FrameInterface], [$error], false)}, {prop: "NextOutput", name: "NextOutput", pkg: "", typ: $funcType([general.OutputBuffer], [$error], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([general.OutputBuffer], [], false)}];
193848
+ ptrType$2.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([frame.FrameInterface], [$error], false)}, {prop: "NextOutput", name: "NextOutput", pkg: "", typ: $funcType([general.OutputBuffer], [$error], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([general.OutputBuffer], [], false)}];
193544
193849
  H264Decoder.init("github.com/supraio/client-daemon/pkg/decoder/h264decoder", [{prop: "decoder", name: "decoder", embedded: false, exported: false, typ: js.Value, tag: ""}, {prop: "outputChan", name: "outputChan", embedded: false, exported: false, typ: chanType, tag: ""}]);
193545
193850
  $init = function() {
193546
193851
  $pkg.$init = function() {};
@@ -194516,12 +194821,21 @@ $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
194516
194821
  s = this;
194517
194822
  _r = s.stopwatch.Stop("frame_collection"); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
194518
194823
  dur = _r;
194519
- $r = s.metrics.AddSample("frame_collection", new sliceType$1([dur])); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194520
- $r = s.metrics.AddSample("frame_collection_long_term", new sliceType$1([dur])); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194824
+ $r = s.NotifyFrameCollectionDuration(dur); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194521
194825
  $s = -1; return;
194522
194826
  /* */ } return; } var $f = {$blk: Stats.ptr.prototype.NotifyFrameCollectionEnded, $c: true, $r, _r, dur, s, $s};return $f;
194523
194827
  };
194524
194828
  Stats.prototype.NotifyFrameCollectionEnded = function() { return this.$val.NotifyFrameCollectionEnded(); };
194829
+ Stats.ptr.prototype.NotifyFrameCollectionDuration = function(dur) {
194830
+ var {dur, s, $s, $r, $c} = $restore(this, {dur});
194831
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
194832
+ s = this;
194833
+ $r = s.metrics.AddSample("frame_collection", new sliceType$1([dur])); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194834
+ $r = s.metrics.AddSample("frame_collection_long_term", new sliceType$1([dur])); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194835
+ $s = -1; return;
194836
+ /* */ } return; } var $f = {$blk: Stats.ptr.prototype.NotifyFrameCollectionDuration, $c: true, $r, dur, s, $s};return $f;
194837
+ };
194838
+ Stats.prototype.NotifyFrameCollectionDuration = function(dur) { return this.$val.NotifyFrameCollectionDuration(dur); };
194525
194839
  Stats.ptr.prototype.NotifyThrottledCollectionFrame = function() {
194526
194840
  var s;
194527
194841
  s = this;
@@ -194903,7 +195217,7 @@ $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
194903
195217
  return (new time.Duration(0, math.Sqrt(($flatten64($div64(sum, (new time.Duration(0, values.$length)), false))))));
194904
195218
  };
194905
195219
  ptrType$1.methods = [{prop: "Start", name: "Start", pkg: "", typ: $funcType([$String], [], false)}, {prop: "Stop", name: "Stop", pkg: "", typ: $funcType([$String], [time.Duration], false)}];
194906
- ptrType$5.methods = [{prop: "GetClientStats", name: "GetClientStats", pkg: "", typ: $funcType([], [ptrType$3], false)}, {prop: "SetLatency", name: "SetLatency", pkg: "", typ: $funcType([time.Duration], [], false)}, {prop: "UpdateServerTimestampAhead", name: "UpdateServerTimestampAhead", pkg: "", typ: $funcType([time.Duration], [], false)}, {prop: "SetScreenResolution", name: "SetScreenResolution", pkg: "", typ: $funcType([ptrType$4], [], false)}, {prop: "NotifyFrame", name: "NotifyFrame", pkg: "", typ: $funcType([Frame], [], false)}, {prop: "NotifyScreenPing", name: "NotifyScreenPing", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyFrameCollectionStarted", name: "NotifyFrameCollectionStarted", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyFrameCollectionEnded", name: "NotifyFrameCollectionEnded", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyThrottledCollectionFrame", name: "NotifyThrottledCollectionFrame", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyFrameDecodeWriteStarted", name: "NotifyFrameDecodeWriteStarted", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyFrameDecodeWriteEnded", name: "NotifyFrameDecodeWriteEnded", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyFrameDecodeOutputStarted", name: "NotifyFrameDecodeOutputStarted", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyFrameDecodeOutputEnded", name: "NotifyFrameDecodeOutputEnded", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyThrottledDecodeFrame", name: "NotifyThrottledDecodeFrame", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyFrameRenderStarted", name: "NotifyFrameRenderStarted", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyFrameRenderEnded", name: "NotifyFrameRenderEnded", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyThrottledRenderFrame", name: "NotifyThrottledRenderFrame", pkg: "", typ: $funcType([], [], false)}, {prop: "GetLastFrameAt", name: "GetLastFrameAt", pkg: "", typ: $funcType([], [time.Time], false)}, {prop: "GetLastScreenPingAt", name: "GetLastScreenPingAt", pkg: "", typ: $funcType([], [time.Time], false)}, {prop: "GetLastScreenImpulseAt", name: "GetLastScreenImpulseAt", pkg: "", typ: $funcType([], [time.Time], false)}, {prop: "GetFrameRate", name: "GetFrameRate", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "startCalculations", name: "startCalculations", pkg: "github.com/supraio/client-daemon/pkg/stats", typ: $funcType([], [], false)}, {prop: "print", name: "print", pkg: "github.com/supraio/client-daemon/pkg/stats", typ: $funcType([], [], false)}, {prop: "GetServerTime", name: "GetServerTime", pkg: "", typ: $funcType([], [time.Time], false)}, {prop: "NotifyInteraction", name: "NotifyInteraction", pkg: "", typ: $funcType([], [], false)}, {prop: "GetInteractionWaitMultiplier", name: "GetInteractionWaitMultiplier", pkg: "", typ: $funcType([], [$Float64], false)}, {prop: "SetEncodingPreferences", name: "SetEncodingPreferences", pkg: "", typ: $funcType([EncodingPreferences], [], false)}];
195220
+ ptrType$5.methods = [{prop: "GetClientStats", name: "GetClientStats", pkg: "", typ: $funcType([], [ptrType$3], false)}, {prop: "SetLatency", name: "SetLatency", pkg: "", typ: $funcType([time.Duration], [], false)}, {prop: "UpdateServerTimestampAhead", name: "UpdateServerTimestampAhead", pkg: "", typ: $funcType([time.Duration], [], false)}, {prop: "SetScreenResolution", name: "SetScreenResolution", pkg: "", typ: $funcType([ptrType$4], [], false)}, {prop: "NotifyFrame", name: "NotifyFrame", pkg: "", typ: $funcType([Frame], [], false)}, {prop: "NotifyScreenPing", name: "NotifyScreenPing", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyFrameCollectionStarted", name: "NotifyFrameCollectionStarted", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyFrameCollectionEnded", name: "NotifyFrameCollectionEnded", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyFrameCollectionDuration", name: "NotifyFrameCollectionDuration", pkg: "", typ: $funcType([time.Duration], [], false)}, {prop: "NotifyThrottledCollectionFrame", name: "NotifyThrottledCollectionFrame", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyFrameDecodeWriteStarted", name: "NotifyFrameDecodeWriteStarted", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyFrameDecodeWriteEnded", name: "NotifyFrameDecodeWriteEnded", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyFrameDecodeOutputStarted", name: "NotifyFrameDecodeOutputStarted", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyFrameDecodeOutputEnded", name: "NotifyFrameDecodeOutputEnded", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyThrottledDecodeFrame", name: "NotifyThrottledDecodeFrame", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyFrameRenderStarted", name: "NotifyFrameRenderStarted", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyFrameRenderEnded", name: "NotifyFrameRenderEnded", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyThrottledRenderFrame", name: "NotifyThrottledRenderFrame", pkg: "", typ: $funcType([], [], false)}, {prop: "GetLastFrameAt", name: "GetLastFrameAt", pkg: "", typ: $funcType([], [time.Time], false)}, {prop: "GetLastScreenPingAt", name: "GetLastScreenPingAt", pkg: "", typ: $funcType([], [time.Time], false)}, {prop: "GetLastScreenImpulseAt", name: "GetLastScreenImpulseAt", pkg: "", typ: $funcType([], [time.Time], false)}, {prop: "GetFrameRate", name: "GetFrameRate", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "startCalculations", name: "startCalculations", pkg: "github.com/supraio/client-daemon/pkg/stats", typ: $funcType([], [], false)}, {prop: "print", name: "print", pkg: "github.com/supraio/client-daemon/pkg/stats", typ: $funcType([], [], false)}, {prop: "GetServerTime", name: "GetServerTime", pkg: "", typ: $funcType([], [time.Time], false)}, {prop: "NotifyInteraction", name: "NotifyInteraction", pkg: "", typ: $funcType([], [], false)}, {prop: "GetInteractionWaitMultiplier", name: "GetInteractionWaitMultiplier", pkg: "", typ: $funcType([], [$Float64], false)}, {prop: "SetEncodingPreferences", name: "SetEncodingPreferences", pkg: "", typ: $funcType([EncodingPreferences], [], false)}];
194907
195221
  ptrType$2.methods = [{prop: "AddSample", name: "AddSample", pkg: "", typ: $funcType([$String, sliceType$1], [], true)}, {prop: "GetCount", name: "GetCount", pkg: "", typ: $funcType([$String], [$Int], false)}, {prop: "GetAverage", name: "GetAverage", pkg: "", typ: $funcType([$String], [time.Duration], false)}, {prop: "GetVariance", name: "GetVariance", pkg: "", typ: $funcType([$String], [time.Duration], false)}, {prop: "RemoveOldest", name: "RemoveOldest", pkg: "", typ: $funcType([$String, $Int], [], false)}, {prop: "Reset", name: "Reset", pkg: "", typ: $funcType([$String], [], false)}];
194908
195222
  Stopwatch.init("github.com/supraio/client-daemon/pkg/stats", [{prop: "mutex", name: "mutex", embedded: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "groups", name: "groups", embedded: false, exported: false, typ: mapType, tag: ""}]);
194909
195223
  Frame.init([{prop: "GetTimestamp", name: "GetTimestamp", pkg: "", typ: $funcType([], [time.Time], false)}]);
@@ -195339,7 +195653,7 @@ $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
195339
195653
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
195340
195654
  /* while (true) { */ case 1:
195341
195655
  /* if (!(cl.started)) { break; } */ if(!(cl.started)) { $s = 2; continue; }
195342
- _r = cl.frameCollector.CollectFrame($methodVal(cl.stats, "NotifyFrameCollectionStarted"), $methodVal(cl.stats, "NotifyFrameCollectionEnded")); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
195656
+ _r = cl.frameCollector.CollectFrame($methodVal(cl.stats, "NotifyFrameCollectionStarted"), $methodVal(cl.stats, "NotifyFrameCollectionEnded"), $methodVal(cl.stats, "NotifyFrameCollectionDuration")); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
195343
195657
  _tuple = _r;
195344
195658
  collectedFrame = _tuple[0];
195345
195659
  err = _tuple[1];