@supraio/client-daemon-js 0.0.0-mznacl.298 → 0.0.0-mznacl.302

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.
@@ -189977,7 +189977,7 @@ $packages["golang.org/x/exp/shiny/driver/webgldriver"] = (function() {
189977
189977
  return $pkg;
189978
189978
  })();
189979
189979
  $packages["github.com/supraio/client-daemon/pkg/x264/h264decoder"] = (function() {
189980
- var $pkg = {}, $init, errs, general, webgldriver, image, js, H264Decoder, sliceType, ptrType, funcType, arrayType, sliceType$1, ptrType$1, IsAvailable, NewDecoder;
189980
+ var $pkg = {}, $init, errs, general, webgldriver, image, js, H264Decoder, sliceType, ptrType, funcType, arrayType, sliceType$1, chanType, ptrType$1, IsAvailable, NewDecoder;
189981
189981
  errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
189982
189982
  general = $packages["github.com/supraio/client-daemon/pkg/x264/general"];
189983
189983
  webgldriver = $packages["golang.org/x/exp/shiny/driver/webgldriver"];
@@ -189996,6 +189996,7 @@ $packages["github.com/supraio/client-daemon/pkg/x264/h264decoder"] = (function()
189996
189996
  funcType = $funcType([], [], false);
189997
189997
  arrayType = $arrayType(funcType, 0);
189998
189998
  sliceType$1 = $sliceType($Uint8);
189999
+ chanType = $chanType($emptyInterface, false, false);
189999
190000
  ptrType$1 = $ptrType(H264Decoder);
190000
190001
  IsAvailable = function() {
190001
190002
  return !$clone($clone(js.Global(), js.Value).Get("h264Decoder"), js.Value).IsUndefined();
@@ -190007,8 +190008,8 @@ $packages["github.com/supraio/client-daemon/pkg/x264/h264decoder"] = (function()
190007
190008
  return new H264Decoder.ptr($clone(decoder, js.Value));
190008
190009
  };
190009
190010
  $pkg.NewDecoder = NewDecoder;
190010
- H264Decoder.ptr.prototype.Decode = function(nal, outputBuffer) {
190011
- var {$24r, _q, _q$1, _q$2, _r, _r$1, _r$2, _r$3, _r$4, _r$5, cSize, cStride, height, heightIndex, m, nal, nalBuffer, nalBufferOffset, outputBuffer, pHeight, pPicture, pWidth, pictureBuffer, pictureBufferOffset, pictureIndex, pictureLen, status, width, widthIndex, x, x$1, ySize, yStride, ycbcrImg, ycbcrJSImg, $s, $r, $c} = $restore(this, {nal, outputBuffer});
190011
+ H264Decoder.ptr.prototype.Decode = function(nal, outputBuffer, releaseChan) {
190012
+ var {$24r, _q, _q$1, _q$2, _r, _r$1, _r$2, _r$3, _r$4, _r$5, cSize, cStride, height, heightIndex, m, nal, nalBuffer, nalBufferOffset, outputBuffer, pHeight, pPicture, pWidth, pictureBuffer, pictureBufferOffset, pictureIndex, pictureLen, releaseChan, status, width, widthIndex, x, x$1, ySize, yStride, ycbcrImg, ycbcrJSImg, $s, $r, $c} = $restore(this, {nal, outputBuffer, releaseChan});
190012
190013
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190013
190014
  m = this;
190014
190015
  nalBufferOffset = $clone($clone(m.decoder, js.Value).Get("decBuffer"), js.Value);
@@ -190055,15 +190056,10 @@ $packages["github.com/supraio/client-daemon/pkg/x264/h264decoder"] = (function()
190055
190056
  image.Rectangle.copy(ycbcrImg.Rect, ycbcrJSImg.Rect);
190056
190057
  ycbcrImg.SubsampleRatio = 2;
190057
190058
  $s = -1; return $ifaceNil;
190058
- /* */ } return; } var $f = {$blk: H264Decoder.ptr.prototype.Decode, $c: true, $r, $24r, _q, _q$1, _q$2, _r, _r$1, _r$2, _r$3, _r$4, _r$5, cSize, cStride, height, heightIndex, m, nal, nalBuffer, nalBufferOffset, outputBuffer, pHeight, pPicture, pWidth, pictureBuffer, pictureBufferOffset, pictureIndex, pictureLen, status, width, widthIndex, x, x$1, ySize, yStride, ycbcrImg, ycbcrJSImg, $s};return $f;
190059
- };
190060
- H264Decoder.prototype.Decode = function(nal, outputBuffer) { return this.$val.Decode(nal, outputBuffer); };
190061
- H264Decoder.ptr.prototype.Release = function(outputBuffer) {
190062
- var m, outputBuffer;
190063
- m = this;
190059
+ /* */ } return; } var $f = {$blk: H264Decoder.ptr.prototype.Decode, $c: true, $r, $24r, _q, _q$1, _q$2, _r, _r$1, _r$2, _r$3, _r$4, _r$5, cSize, cStride, height, heightIndex, m, nal, nalBuffer, nalBufferOffset, outputBuffer, pHeight, pPicture, pWidth, pictureBuffer, pictureBufferOffset, pictureIndex, pictureLen, releaseChan, status, width, widthIndex, x, x$1, ySize, yStride, ycbcrImg, ycbcrJSImg, $s};return $f;
190064
190060
  };
190065
- H264Decoder.prototype.Release = function(outputBuffer) { return this.$val.Release(outputBuffer); };
190066
- ptrType$1.methods = [{prop: "Decode", name: "Decode", pkg: "", typ: $funcType([sliceType$1, general.OutputBuffer], [$error], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([general.OutputBuffer], [], false)}];
190061
+ H264Decoder.prototype.Decode = function(nal, outputBuffer, releaseChan) { return this.$val.Decode(nal, outputBuffer, releaseChan); };
190062
+ ptrType$1.methods = [{prop: "Decode", name: "Decode", pkg: "", typ: $funcType([sliceType$1, general.OutputBuffer, chanType], [$error], false)}];
190067
190063
  H264Decoder.init("github.com/supraio/client-daemon/pkg/x264/h264decoder", [{prop: "decoder", name: "decoder", embedded: false, exported: false, typ: js.Value, tag: ""}]);
190068
190064
  $init = function() {
190069
190065
  $pkg.$init = function() {};
@@ -190078,85 +190074,133 @@ $packages["github.com/supraio/client-daemon/pkg/x264/h264decoder"] = (function()
190078
190074
  $pkg.$init = $init;
190079
190075
  return $pkg;
190080
190076
  })();
190077
+ $packages["github.com/supraio/client-daemon/pkg/x264/nacldecoder/jsdecoder"] = (function() {
190078
+ var $pkg = {}, $init, js, ptrType, sliceType, initiateReset, jsNaClDecoder, ResetBeforeNextDecode, ShouldResetOnNextDecode, MarkResetDone, IsAvailable, CreateJsNaClDecoder, GetJsNaClDecoder, RemoveJsNaClDecoder;
190079
+ js = $packages["syscall/js"];
190080
+ ptrType = $ptrType(js.Value);
190081
+ sliceType = $sliceType($emptyInterface);
190082
+ ResetBeforeNextDecode = function() {
190083
+ initiateReset = true;
190084
+ };
190085
+ $pkg.ResetBeforeNextDecode = ResetBeforeNextDecode;
190086
+ ShouldResetOnNextDecode = function() {
190087
+ return initiateReset;
190088
+ };
190089
+ $pkg.ShouldResetOnNextDecode = ShouldResetOnNextDecode;
190090
+ MarkResetDone = function() {
190091
+ initiateReset = false;
190092
+ };
190093
+ $pkg.MarkResetDone = MarkResetDone;
190094
+ IsAvailable = function() {
190095
+ return !$clone($clone(js.Global(), js.Value).Get("createNaClDecoder"), js.Value).IsUndefined();
190096
+ };
190097
+ $pkg.IsAvailable = IsAvailable;
190098
+ CreateJsNaClDecoder = function() {
190099
+ var {_r, createdJsNaClDecoder, $s, $r, $c} = $restore(this, {});
190100
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190101
+ createdJsNaClDecoder = [createdJsNaClDecoder];
190102
+ if (!(jsNaClDecoder === ptrType.nil)) {
190103
+ $panic(new $String("JsNaClDecoder already created"));
190104
+ }
190105
+ _r = $clone(js.Global(), js.Value).Call("createNaClDecoder", sliceType.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190106
+ createdJsNaClDecoder[0] = $clone(_r, js.Value);
190107
+ jsNaClDecoder = createdJsNaClDecoder[0];
190108
+ $s = -1; return jsNaClDecoder;
190109
+ /* */ } return; } var $f = {$blk: CreateJsNaClDecoder, $c: true, $r, _r, createdJsNaClDecoder, $s};return $f;
190110
+ };
190111
+ $pkg.CreateJsNaClDecoder = CreateJsNaClDecoder;
190112
+ GetJsNaClDecoder = function() {
190113
+ return jsNaClDecoder;
190114
+ };
190115
+ $pkg.GetJsNaClDecoder = GetJsNaClDecoder;
190116
+ RemoveJsNaClDecoder = function() {
190117
+ jsNaClDecoder = ptrType.nil;
190118
+ };
190119
+ $pkg.RemoveJsNaClDecoder = RemoveJsNaClDecoder;
190120
+ $init = function() {
190121
+ $pkg.$init = function() {};
190122
+ /* */ 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:
190123
+ $r = js.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190124
+ jsNaClDecoder = ptrType.nil;
190125
+ initiateReset = false;
190126
+ /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
190127
+ };
190128
+ $pkg.$init = $init;
190129
+ return $pkg;
190130
+ })();
190081
190131
  $packages["github.com/supraio/client-daemon/pkg/x264/nacldecoder"] = (function() {
190082
- var $pkg = {}, $init, errs, jshelper, general, js, NaClDecoder, ptrType, sliceType, sliceType$1, ptrType$1, initiateReset, IsAvailable, NewDecoder, Reset, IsResetting, MarkResetDone;
190132
+ var $pkg = {}, $init, errs, jshelper, general, jsdecoder, js, NaClDecoder, sliceType, ptrType, sliceType$1, chanType, ptrType$1, IsAvailable, NewDecoder;
190083
190133
  errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
190084
190134
  jshelper = $packages["github.com/supraio/client-daemon/pkg/jshelper"];
190085
190135
  general = $packages["github.com/supraio/client-daemon/pkg/x264/general"];
190136
+ jsdecoder = $packages["github.com/supraio/client-daemon/pkg/x264/nacldecoder/jsdecoder"];
190086
190137
  js = $packages["syscall/js"];
190087
- NaClDecoder = $pkg.NaClDecoder = $newType(0, $kindStruct, "nacldecoder.NaClDecoder", true, "github.com/supraio/client-daemon/pkg/x264/nacldecoder", true, function(jsNaClDecoder_) {
190138
+ NaClDecoder = $pkg.NaClDecoder = $newType(0, $kindStruct, "nacldecoder.NaClDecoder", true, "github.com/supraio/client-daemon/pkg/x264/nacldecoder", true, function(initialized_) {
190088
190139
  this.$val = this;
190089
190140
  if (arguments.length === 0) {
190090
- this.jsNaClDecoder = ptrType.nil;
190141
+ this.initialized = false;
190091
190142
  return;
190092
190143
  }
190093
- this.jsNaClDecoder = jsNaClDecoder_;
190144
+ this.initialized = initialized_;
190094
190145
  });
190095
- ptrType = $ptrType(js.Value);
190096
190146
  sliceType = $sliceType($emptyInterface);
190147
+ ptrType = $ptrType(js.Value);
190097
190148
  sliceType$1 = $sliceType($Uint8);
190149
+ chanType = $chanType($emptyInterface, false, false);
190098
190150
  ptrType$1 = $ptrType(NaClDecoder);
190099
190151
  IsAvailable = function() {
190100
- return !$clone($clone(js.Global(), js.Value).Get("naclDecoder"), js.Value).IsUndefined();
190152
+ return jsdecoder.IsAvailable();
190101
190153
  };
190102
190154
  $pkg.IsAvailable = IsAvailable;
190103
190155
  NewDecoder = function(header) {
190104
190156
  var header;
190105
- return new NaClDecoder.ptr(ptrType.nil);
190157
+ return new NaClDecoder.ptr(false);
190106
190158
  };
190107
190159
  $pkg.NewDecoder = NewDecoder;
190108
190160
  NaClDecoder.ptr.prototype.initialize = function(param) {
190109
- var {$24r, $24r$1, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _tuple, config, err, graphics3DContext, initPromise, initResult, jsNaClDecoder, m, param, $s, $r, $c} = $restore(this, {param});
190161
+ var {$24r, $24r$1, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _tuple, config, err, graphics3DContext, initPromise, initResult, m, param, $s, $r, $c} = $restore(this, {param});
190110
190162
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190111
- jsNaClDecoder = [jsNaClDecoder];
190112
190163
  m = this;
190113
- jsNaClDecoder[0] = $clone($clone(js.Global(), js.Value).Get("naclDecoder"), js.Value);
190114
- /* */ if ($clone(jsNaClDecoder[0], js.Value).IsUndefined()) { $s = 1; continue; }
190115
- /* */ $s = 2; continue;
190116
- /* if ($clone(jsNaClDecoder[0], js.Value).IsUndefined()) { */ case 1:
190117
- _r = errs.Errorf("Cannot get naclDecoder object from global scope", sliceType.nil); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190118
- $panic(_r);
190119
- /* } */ case 2:
190120
- _r$1 = $clone($clone(js.Global(), js.Value).Get("Object"), js.Value).New(sliceType.nil); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
190121
- config = $clone(_r$1, js.Value);
190122
- _r$2 = $clone($clone(js.Global(), js.Value).Get("Object"), js.Value).New(sliceType.nil); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
190123
- graphics3DContext = $clone(_r$2, js.Value);
190164
+ _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; }
190165
+ config = $clone(_r, js.Value);
190166
+ _r$1 = $clone($clone(js.Global(), js.Value).Get("Object"), js.Value).New(sliceType.nil); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
190167
+ graphics3DContext = $clone(_r$1, js.Value);
190124
190168
  $clone(config, js.Value).Set("graphics3DContext", new graphics3DContext.constructor.elem(graphics3DContext));
190125
190169
  $clone(config, js.Value).Set("profile", new $Int(0));
190126
190170
  $clone(config, js.Value).Set("acceleration", new $Int(2));
190127
190171
  $clone(config, js.Value).Set("minPictureCount", new $Int(0));
190128
- _r$3 = $clone(jsNaClDecoder[0], js.Value).Call("initialize", new sliceType([new config.constructor.elem(config)])); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
190129
- initPromise = $clone(_r$3, js.Value);
190130
- _r$4 = jshelper.Await($clone(initPromise, js.Value)); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
190131
- _tuple = _r$4;
190172
+ _r$2 = $clone(jsdecoder.GetJsNaClDecoder(), js.Value).Call("initialize", new sliceType([new config.constructor.elem(config)])); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
190173
+ initPromise = $clone(_r$2, js.Value);
190174
+ _r$3 = jshelper.Await($clone(initPromise, js.Value)); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
190175
+ _tuple = _r$3;
190132
190176
  initResult = _tuple[0];
190133
190177
  err = _tuple[1];
190134
- /* */ if (!(err === ptrType.nil)) { $s = 8; continue; }
190135
- /* */ $s = 9; continue;
190136
- /* if (!(err === ptrType.nil)) { */ case 8:
190137
- _r$5 = jshelper.GetError(err); /* */ $s = 10; case 10: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
190138
- _r$6 = _r$5.Error(); /* */ $s = 11; case 11: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
190139
- _arg = new $String(_r$6);
190140
- _r$7 = errs.Errorf("Failed to initialize NaCl Decoder: %s", new sliceType([_arg])); /* */ $s = 12; case 12: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
190141
- $24r = [ptrType.nil, _r$7];
190142
- $s = 13; case 13: return $24r;
190143
- /* } */ case 9:
190144
- /* */ if (!(($clone(initResult, js.Value).Float() === 0))) { $s = 14; continue; }
190145
- /* */ $s = 15; continue;
190146
- /* if (!(($clone(initResult, js.Value).Float() === 0))) { */ case 14:
190147
- _r$8 = errs.Errorf("Failed to initialize NaCl Decoder: %f", new sliceType([new $Float64($clone(initResult, js.Value).Float())])); /* */ $s = 16; case 16: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
190148
- $24r$1 = [ptrType.nil, _r$8];
190149
- $s = 17; case 17: return $24r$1;
190150
- /* } */ case 15:
190151
- $s = -1; return [jsNaClDecoder[0], $ifaceNil];
190152
- /* */ } return; } var $f = {$blk: NaClDecoder.ptr.prototype.initialize, $c: true, $r, $24r, $24r$1, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _tuple, config, err, graphics3DContext, initPromise, initResult, jsNaClDecoder, m, param, $s};return $f;
190178
+ /* */ if (!(err === ptrType.nil)) { $s = 5; continue; }
190179
+ /* */ $s = 6; continue;
190180
+ /* if (!(err === ptrType.nil)) { */ case 5:
190181
+ _r$4 = jshelper.GetError(err); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
190182
+ _r$5 = _r$4.Error(); /* */ $s = 8; case 8: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
190183
+ _arg = new $String(_r$5);
190184
+ _r$6 = errs.Errorf("Failed to initialize NaCl Decoder: %s", new sliceType([_arg])); /* */ $s = 9; case 9: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
190185
+ $24r = _r$6;
190186
+ $s = 10; case 10: return $24r;
190187
+ /* } */ case 6:
190188
+ /* */ if (!(($clone(initResult, js.Value).Float() === 0))) { $s = 11; continue; }
190189
+ /* */ $s = 12; continue;
190190
+ /* if (!(($clone(initResult, js.Value).Float() === 0))) { */ case 11:
190191
+ _r$7 = errs.Errorf("Failed to initialize NaCl Decoder: %f", new sliceType([new $Float64($clone(initResult, js.Value).Float())])); /* */ $s = 13; case 13: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
190192
+ $24r$1 = _r$7;
190193
+ $s = 14; case 14: return $24r$1;
190194
+ /* } */ case 12:
190195
+ $s = -1; return $ifaceNil;
190196
+ /* */ } return; } var $f = {$blk: NaClDecoder.ptr.prototype.initialize, $c: true, $r, $24r, $24r$1, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _tuple, config, err, graphics3DContext, initPromise, initResult, m, param, $s};return $f;
190153
190197
  };
190154
190198
  NaClDecoder.prototype.initialize = function(param) { return this.$val.initialize(param); };
190155
190199
  NaClDecoder.ptr.prototype.reset = function() {
190156
190200
  var {$24r, $24r$1, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, err, m, resetPromise, resetResult, $s, $r, $c} = $restore(this, {});
190157
190201
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190158
190202
  m = this;
190159
- _r = $clone(m.jsNaClDecoder, js.Value).Call("reset", sliceType.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190203
+ _r = $clone(jsdecoder.GetJsNaClDecoder(), js.Value).Call("reset", sliceType.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190160
190204
  resetPromise = $clone(_r, js.Value);
190161
190205
  _r$1 = jshelper.Await($clone(resetPromise, js.Value)); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
190162
190206
  _tuple = _r$1;
@@ -190183,98 +190227,117 @@ $packages["github.com/supraio/client-daemon/pkg/x264/nacldecoder"] = (function()
190183
190227
  /* */ } return; } var $f = {$blk: NaClDecoder.ptr.prototype.reset, $c: true, $r, $24r, $24r$1, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, err, m, resetPromise, resetResult, $s};return $f;
190184
190228
  };
190185
190229
  NaClDecoder.prototype.reset = function() { return this.$val.reset(); };
190186
- NaClDecoder.ptr.prototype.Decode = function(nal, outputBuffer) {
190187
- var {$24r, $24r$1, _arg, _r, _r$1, _r$10, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, decodeArgs, decodePromise, decodeResult, err, err$1, err$2, jsNaClDecoder, m, nal, outputBuffer, pictureBuffer, pictureUint8Array, $s, $r, $c} = $restore(this, {nal, outputBuffer});
190230
+ NaClDecoder.ptr.prototype.destroy = function() {
190231
+ var {$24r, _arg, _r, _r$1, _r$2, _r$3, _r$4, _tuple, destroyPromise, err, m, $s, $r, $c} = $restore(this, {});
190188
190232
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190189
190233
  m = this;
190190
- /* */ if (IsResetting()) { $s = 1; continue; }
190234
+ _r = $clone(jsdecoder.GetJsNaClDecoder(), js.Value).Call("destroy", sliceType.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190235
+ destroyPromise = $clone(_r, js.Value);
190236
+ _r$1 = jshelper.Await($clone(destroyPromise, js.Value)); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
190237
+ _tuple = _r$1;
190238
+ err = _tuple[1];
190239
+ /* */ if (!(err === ptrType.nil)) { $s = 3; continue; }
190240
+ /* */ $s = 4; continue;
190241
+ /* if (!(err === ptrType.nil)) { */ case 3:
190242
+ _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; }
190243
+ _r$3 = _r$2.Error(); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
190244
+ _arg = new $String(_r$3);
190245
+ _r$4 = errs.Errorf("Failed to destroy NaCl Decoder: %s", new sliceType([_arg])); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
190246
+ $24r = _r$4;
190247
+ $s = 8; case 8: return $24r;
190248
+ /* } */ case 4:
190249
+ $s = -1; return $ifaceNil;
190250
+ /* */ } return; } var $f = {$blk: NaClDecoder.ptr.prototype.destroy, $c: true, $r, $24r, _arg, _r, _r$1, _r$2, _r$3, _r$4, _tuple, destroyPromise, err, m, $s};return $f;
190251
+ };
190252
+ NaClDecoder.prototype.destroy = function() { return this.$val.destroy(); };
190253
+ NaClDecoder.ptr.prototype.Decode = function(nal, outputBuffer, releaseChan) {
190254
+ var {$24r, $24r$1, _arg, _r, _r$1, _r$10, _r$11, _r$12, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, decodeArgs, decodePromise, decodeResult, err, err$1, err$2, jsNaClDecoder, m, nal, outputBuffer, pictureBuffer, pictureUint8Array, releaseChan, $s, $r, $c} = $restore(this, {nal, outputBuffer, releaseChan});
190255
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190256
+ m = this;
190257
+ /* */ if (jsdecoder.ShouldResetOnNextDecode()) { $s = 1; continue; }
190191
190258
  /* */ $s = 2; continue;
190192
- /* if (IsResetting()) { */ case 1:
190259
+ /* if (jsdecoder.ShouldResetOnNextDecode()) { */ case 1:
190193
190260
  _r = m.reset(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190194
190261
  err = _r;
190195
190262
  /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 4; continue; }
190196
190263
  /* */ $s = 5; continue;
190197
190264
  /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 4:
190198
190265
  $r = errs.Print("Failed to reset NaCl Decoder", err); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190266
+ _r$1 = m.destroy(); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
190267
+ err = _r$1;
190268
+ /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 8; continue; }
190269
+ /* */ $s = 9; continue;
190270
+ /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 8:
190271
+ $r = errs.Print("Failed to destroy NaCl Decoder", err); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190272
+ /* } */ case 9:
190273
+ jsdecoder.RemoveJsNaClDecoder();
190199
190274
  /* } */ case 5:
190200
- m.jsNaClDecoder = ptrType.nil;
190201
- MarkResetDone();
190275
+ m.initialized = false;
190276
+ jsdecoder.MarkResetDone();
190202
190277
  /* } */ case 2:
190203
- /* */ if (m.jsNaClDecoder === ptrType.nil) { $s = 7; continue; }
190204
- /* */ $s = 8; continue;
190205
- /* if (m.jsNaClDecoder === ptrType.nil) { */ case 7:
190206
- _r$1 = m.initialize(nal); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
190207
- _tuple = _r$1;
190208
- jsNaClDecoder = _tuple[0];
190209
- err$1 = _tuple[1];
190278
+ jsNaClDecoder = jsdecoder.GetJsNaClDecoder();
190279
+ /* */ if (jsNaClDecoder === ptrType.nil) { $s = 11; continue; }
190280
+ /* */ $s = 12; continue;
190281
+ /* if (jsNaClDecoder === ptrType.nil) { */ case 11:
190282
+ _r$2 = jsdecoder.CreateJsNaClDecoder(); /* */ $s = 13; case 13: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
190283
+ jsNaClDecoder = _r$2;
190284
+ /* } */ case 12:
190285
+ /* */ if (!m.initialized) { $s = 14; continue; }
190286
+ /* */ $s = 15; continue;
190287
+ /* if (!m.initialized) { */ case 14:
190288
+ _r$3 = m.initialize(nal); /* */ $s = 16; case 16: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
190289
+ err$1 = _r$3;
190210
190290
  if (!($interfaceIsEqual(err$1, $ifaceNil))) {
190211
190291
  $s = -1; return err$1;
190212
190292
  }
190213
- m.jsNaClDecoder = jsNaClDecoder;
190214
- /* } */ case 8:
190215
- _r$2 = $clone($clone(js.Global(), js.Value).Get("ArrayBuffer"), js.Value).New(new sliceType([new $Int(nal.$length)])); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
190216
- pictureBuffer = $clone(_r$2, js.Value);
190217
- _r$3 = $clone($clone(js.Global(), js.Value).Get("Uint8Array"), js.Value).New(new sliceType([new pictureBuffer.constructor.elem(pictureBuffer)])); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
190218
- pictureUint8Array = $clone(_r$3, js.Value);
190293
+ m.initialized = true;
190294
+ /* } */ case 15:
190295
+ _r$4 = $clone($clone(js.Global(), js.Value).Get("ArrayBuffer"), js.Value).New(new sliceType([new $Int(nal.$length)])); /* */ $s = 17; case 17: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
190296
+ pictureBuffer = $clone(_r$4, js.Value);
190297
+ _r$5 = $clone($clone(js.Global(), js.Value).Get("Uint8Array"), js.Value).New(new sliceType([new pictureBuffer.constructor.elem(pictureBuffer)])); /* */ $s = 18; case 18: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
190298
+ pictureUint8Array = $clone(_r$5, js.Value);
190219
190299
  js.CopyBytesToJS($clone(pictureUint8Array, js.Value), nal);
190220
- _r$4 = $clone($clone(js.Global(), js.Value).Get("Object"), js.Value).New(sliceType.nil); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
190221
- decodeArgs = $clone(_r$4, js.Value);
190300
+ _r$6 = $clone($clone(js.Global(), js.Value).Get("Object"), js.Value).New(sliceType.nil); /* */ $s = 19; case 19: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
190301
+ decodeArgs = $clone(_r$6, js.Value);
190222
190302
  $clone(decodeArgs, js.Value).Set("decodeId", new $Int(0));
190223
190303
  $clone(decodeArgs, js.Value).Set("data", new pictureBuffer.constructor.elem(pictureBuffer));
190224
- _r$5 = $clone(m.jsNaClDecoder, js.Value).Call("decode", new sliceType([new decodeArgs.constructor.elem(decodeArgs)])); /* */ $s = 13; case 13: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
190225
- decodePromise = $clone(_r$5, js.Value);
190226
- _r$6 = jshelper.Await($clone(decodePromise, js.Value)); /* */ $s = 14; case 14: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
190227
- _tuple$1 = _r$6;
190228
- decodeResult = _tuple$1[0];
190229
- err$2 = _tuple$1[1];
190230
- /* */ if (!(err$2 === ptrType.nil)) { $s = 15; continue; }
190231
- /* */ $s = 16; continue;
190232
- /* if (!(err$2 === ptrType.nil)) { */ case 15:
190233
- _r$7 = jshelper.GetError(err$2); /* */ $s = 17; case 17: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
190234
- _r$8 = _r$7.Error(); /* */ $s = 18; case 18: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
190235
- _arg = new $String(_r$8);
190236
- _r$9 = errs.Errorf("Failed to decode frame: %s", new sliceType([_arg])); /* */ $s = 19; case 19: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
190237
- $24r = _r$9;
190238
- $s = 20; case 20: return $24r;
190239
- /* } */ case 16:
190240
- /* */ if (!(($clone(decodeResult, js.Value).Float() === 0))) { $s = 21; continue; }
190241
- /* */ $s = 22; continue;
190242
- /* if (!(($clone(decodeResult, js.Value).Float() === 0))) { */ case 21:
190243
- _r$10 = 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$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
190244
- $24r$1 = _r$10;
190245
- $s = 24; case 24: return $24r$1;
190246
- /* } */ case 22:
190304
+ _r$7 = $clone(jsNaClDecoder, js.Value).Call("decode", new sliceType([new decodeArgs.constructor.elem(decodeArgs)])); /* */ $s = 20; case 20: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
190305
+ decodePromise = $clone(_r$7, js.Value);
190306
+ _r$8 = jshelper.Await($clone(decodePromise, js.Value)); /* */ $s = 21; case 21: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
190307
+ _tuple = _r$8;
190308
+ decodeResult = _tuple[0];
190309
+ err$2 = _tuple[1];
190310
+ /* */ if (!(err$2 === ptrType.nil)) { $s = 22; continue; }
190311
+ /* */ $s = 23; continue;
190312
+ /* if (!(err$2 === ptrType.nil)) { */ case 22:
190313
+ _r$9 = jshelper.GetError(err$2); /* */ $s = 24; case 24: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
190314
+ _r$10 = _r$9.Error(); /* */ $s = 25; case 25: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
190315
+ _arg = new $String(_r$10);
190316
+ _r$11 = errs.Errorf("Failed to decode frame: %s", new sliceType([_arg])); /* */ $s = 26; case 26: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
190317
+ $24r = _r$11;
190318
+ $s = 27; case 27: return $24r;
190319
+ /* } */ case 23:
190320
+ /* */ if (!(($clone(decodeResult, js.Value).Float() === 0))) { $s = 28; continue; }
190321
+ /* */ $s = 29; continue;
190322
+ /* if (!(($clone(decodeResult, js.Value).Float() === 0))) { */ case 28:
190323
+ _r$12 = errs.Errorf("Failed to decode frame with code: %f", new sliceType([new $Float64($clone(decodeResult, js.Value).Float())])); /* */ $s = 30; case 30: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
190324
+ $24r$1 = _r$12;
190325
+ $s = 31; case 31: return $24r$1;
190326
+ /* } */ case 29:
190247
190327
  $s = -1; return $ifaceNil;
190248
- /* */ } return; } var $f = {$blk: NaClDecoder.ptr.prototype.Decode, $c: true, $r, $24r, $24r$1, _arg, _r, _r$1, _r$10, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, decodeArgs, decodePromise, decodeResult, err, err$1, err$2, jsNaClDecoder, m, nal, outputBuffer, pictureBuffer, pictureUint8Array, $s};return $f;
190249
- };
190250
- NaClDecoder.prototype.Decode = function(nal, outputBuffer) { return this.$val.Decode(nal, outputBuffer); };
190251
- NaClDecoder.ptr.prototype.Release = function(outputBuffer) {
190252
- var m, outputBuffer;
190253
- m = this;
190254
- };
190255
- NaClDecoder.prototype.Release = function(outputBuffer) { return this.$val.Release(outputBuffer); };
190256
- Reset = function() {
190257
- initiateReset = true;
190328
+ /* */ } return; } var $f = {$blk: NaClDecoder.ptr.prototype.Decode, $c: true, $r, $24r, $24r$1, _arg, _r, _r$1, _r$10, _r$11, _r$12, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, decodeArgs, decodePromise, decodeResult, err, err$1, err$2, jsNaClDecoder, m, nal, outputBuffer, pictureBuffer, pictureUint8Array, releaseChan, $s};return $f;
190258
190329
  };
190259
- $pkg.Reset = Reset;
190260
- IsResetting = function() {
190261
- return initiateReset;
190262
- };
190263
- $pkg.IsResetting = IsResetting;
190264
- MarkResetDone = function() {
190265
- initiateReset = false;
190266
- };
190267
- $pkg.MarkResetDone = MarkResetDone;
190268
- ptrType$1.methods = [{prop: "initialize", name: "initialize", pkg: "github.com/supraio/client-daemon/pkg/x264/nacldecoder", typ: $funcType([sliceType$1], [ptrType, $error], false)}, {prop: "reset", name: "reset", pkg: "github.com/supraio/client-daemon/pkg/x264/nacldecoder", typ: $funcType([], [$error], false)}, {prop: "Decode", name: "Decode", pkg: "", typ: $funcType([sliceType$1, general.OutputBuffer], [$error], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([general.OutputBuffer], [], false)}];
190269
- NaClDecoder.init("github.com/supraio/client-daemon/pkg/x264/nacldecoder", [{prop: "jsNaClDecoder", name: "jsNaClDecoder", embedded: false, exported: false, typ: ptrType, tag: ""}]);
190330
+ NaClDecoder.prototype.Decode = function(nal, outputBuffer, releaseChan) { return this.$val.Decode(nal, outputBuffer, releaseChan); };
190331
+ ptrType$1.methods = [{prop: "initialize", name: "initialize", pkg: "github.com/supraio/client-daemon/pkg/x264/nacldecoder", typ: $funcType([sliceType$1], [$error], false)}, {prop: "reset", name: "reset", pkg: "github.com/supraio/client-daemon/pkg/x264/nacldecoder", typ: $funcType([], [$error], false)}, {prop: "destroy", name: "destroy", pkg: "github.com/supraio/client-daemon/pkg/x264/nacldecoder", typ: $funcType([], [$error], false)}, {prop: "Decode", name: "Decode", pkg: "", typ: $funcType([sliceType$1, general.OutputBuffer, chanType], [$error], false)}];
190332
+ NaClDecoder.init("github.com/supraio/client-daemon/pkg/x264/nacldecoder", [{prop: "initialized", name: "initialized", embedded: false, exported: false, typ: $Bool, tag: ""}]);
190270
190333
  $init = function() {
190271
190334
  $pkg.$init = function() {};
190272
190335
  /* */ 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:
190273
190336
  $r = errs.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190274
190337
  $r = jshelper.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190275
190338
  $r = general.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190276
- $r = js.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190277
- initiateReset = false;
190339
+ $r = jsdecoder.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190340
+ $r = js.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190278
190341
  /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
190279
190342
  };
190280
190343
  $pkg.$init = $init;
@@ -190707,7 +190770,7 @@ $packages["golang.org/x/exp/shiny/driver/canvasdriver"] = (function() {
190707
190770
  return $pkg;
190708
190771
  })();
190709
190772
  $packages["github.com/supraio/client-daemon/pkg/x264/webcodecs"] = (function() {
190710
- var $pkg = {}, $init, hex, webgl, errs, jshelper, general, canvasdriver, image, js, Decoder, sliceType, funcType, arrayType, ptrType, sliceType$1, ptrType$1, sliceType$2, ptrType$2, IsAvailable, NewDecoder;
190773
+ var $pkg = {}, $init, hex, webgl, errs, jshelper, general, canvasdriver, image, js, Decoder, sliceType, funcType, arrayType, ptrType, sliceType$1, ptrType$1, sliceType$2, chanType, ptrType$2, IsAvailable, NewDecoder;
190711
190774
  hex = $packages["encoding/hex"];
190712
190775
  webgl = $packages["github.com/nuberu/webgl"];
190713
190776
  errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
@@ -190737,6 +190800,7 @@ $packages["github.com/supraio/client-daemon/pkg/x264/webcodecs"] = (function() {
190737
190800
  sliceType$1 = $sliceType($emptyInterface);
190738
190801
  ptrType$1 = $ptrType(canvasdriver.BufferImpl);
190739
190802
  sliceType$2 = $sliceType($Uint8);
190803
+ chanType = $chanType($emptyInterface, false, false);
190740
190804
  ptrType$2 = $ptrType(Decoder);
190741
190805
  IsAvailable = function() {
190742
190806
  return !$clone($clone(js.Global(), js.Value).Get("VideoDecoder"), js.Value).IsUndefined();
@@ -190824,10 +190888,12 @@ $packages["github.com/supraio/client-daemon/pkg/x264/webcodecs"] = (function() {
190824
190888
  return codecName;
190825
190889
  };
190826
190890
  Decoder.prototype.detectCodecName = function(nal) { return this.$val.detectCodecName(nal); };
190827
- Decoder.ptr.prototype.Decode = function(nal, outputBuffer) {
190828
- var {$24r, $24r$1, _arg, _r, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, chunk, chunkOpts, d, displayHeight, displayWidth, err, errDec, frame, frameData, framePromise, framePromiseCb, frameType, nal, outputBuffer, racePromise, timeoutPromise, timeoutPromiseCb, x, ycbcrImg, ycbcrJSImg, $s, $r, $c} = $restore(this, {nal, outputBuffer});
190891
+ Decoder.ptr.prototype.Decode = function(nal, outputBuffer, releaseChan) {
190892
+ var {$24r, $24r$1, _arg, _r, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, chunk, chunkOpts, d, displayHeight, displayWidth, err, errDec, frame, frameData, framePromise, framePromiseCb, frameType, nal, outputBuffer, racePromise, releaseChan, timeoutPromise, timeoutPromiseCb, x, ycbcrImg, ycbcrJSImg, $s, $r, $c} = $restore(this, {nal, outputBuffer, releaseChan});
190829
190893
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190830
190894
  d = [d];
190895
+ frame = [frame];
190896
+ releaseChan = [releaseChan];
190831
190897
  d[0] = this;
190832
190898
  frameType = "delta";
190833
190899
  /* */ if ((((4 >= nal.$length ? ($throwRuntimeError("index out of range"), undefined) : nal.$array[nal.$offset + 4]) >> 0)) === 103) { $s = 1; continue; }
@@ -190868,15 +190934,15 @@ $packages["github.com/supraio/client-daemon/pkg/x264/webcodecs"] = (function() {
190868
190934
  /* } */ case 17:
190869
190935
  $s = -1; return errDec;
190870
190936
  /* } */ case 15:
190871
- framePromiseCb = $clone(js.FuncOf((function(d) { return function(this$1, args) {
190937
+ framePromiseCb = $clone(js.FuncOf((function(d, frame, releaseChan) { return function(this$1, args) {
190872
190938
  var args, this$1;
190873
190939
  d[0].resolves = $append(d[0].resolves, (0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]));
190874
190940
  d[0].rejects = $append(d[0].rejects, (1 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 1]));
190875
190941
  return $ifaceNil;
190876
- }; })(d)), js.Func);
190942
+ }; })(d, frame, releaseChan)), js.Func);
190877
190943
  _r$5 = $clone($clone(js.Global(), js.Value).Get("Promise"), js.Value).New(new sliceType$1([new framePromiseCb.constructor.elem(framePromiseCb)])); /* */ $s = 19; case 19: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
190878
190944
  framePromise = $clone(_r$5, js.Value);
190879
- timeoutPromiseCb = $clone(js.FuncOf((function(d) { return function $b(this$1, args) {
190945
+ timeoutPromiseCb = $clone(js.FuncOf((function(d, frame, releaseChan) { return function $b(this$1, args) {
190880
190946
  var {_arg, _r$6, _r$7, args, this$1, x, $s, $r, $c} = $restore(this, {this$1, args});
190881
190947
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190882
190948
  _r$6 = $clone((1 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 1]), js.Value).Call("bind", new sliceType$1([$ifaceNil, new $String("Timeout")])); /* */ $s = 1; case 1: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
@@ -190885,7 +190951,7 @@ $packages["github.com/supraio/client-daemon/pkg/x264/webcodecs"] = (function() {
190885
190951
  _r$7;
190886
190952
  $s = -1; return $ifaceNil;
190887
190953
  /* */ } return; } var $f = {$blk: $b, $c: true, $r, _arg, _r$6, _r$7, args, this$1, x, $s};return $f;
190888
- }; })(d)), js.Func);
190954
+ }; })(d, frame, releaseChan)), js.Func);
190889
190955
  _r$6 = $clone($clone(js.Global(), js.Value).Get("Promise"), js.Value).New(new sliceType$1([new timeoutPromiseCb.constructor.elem(timeoutPromiseCb)])); /* */ $s = 20; case 20: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
190890
190956
  timeoutPromise = $clone(_r$6, js.Value);
190891
190957
  _r$7 = $clone($clone(js.Global(), js.Value).Get("Array"), js.Value).New(new sliceType$1([new framePromise.constructor.elem(framePromise), new timeoutPromise.constructor.elem(timeoutPromise)])); /* */ $s = 21; case 21: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
@@ -190894,7 +190960,7 @@ $packages["github.com/supraio/client-daemon/pkg/x264/webcodecs"] = (function() {
190894
190960
  racePromise = $clone(_r$8, js.Value);
190895
190961
  _r$9 = jshelper.Await($clone(racePromise, js.Value)); /* */ $s = 23; case 23: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
190896
190962
  _tuple = _r$9;
190897
- frame = _tuple[0];
190963
+ frame[0] = _tuple[0];
190898
190964
  err = _tuple[1];
190899
190965
  $clone(framePromiseCb, js.Func).Release();
190900
190966
  $clone(timeoutPromiseCb, js.Func).Release();
@@ -190906,32 +190972,27 @@ $packages["github.com/supraio/client-daemon/pkg/x264/webcodecs"] = (function() {
190906
190972
  $s = 27; case 27: return $24r$1;
190907
190973
  /* } */ case 25:
190908
190974
  ycbcrJSImg = $assertType(outputBuffer, ptrType$1).YCbCrJS();
190909
- ycbcrJSImg.CanvasImageSource = frame;
190910
- displayWidth = $clone($clone(frame, js.Value).Get("displayWidth"), js.Value).Int();
190911
- displayHeight = $clone($clone(frame, js.Value).Get("displayHeight"), js.Value).Int();
190975
+ ycbcrJSImg.CanvasImageSource = frame[0];
190976
+ displayWidth = $clone($clone(frame[0], js.Value).Get("displayWidth"), js.Value).Int();
190977
+ displayHeight = $clone($clone(frame[0], js.Value).Get("displayHeight"), js.Value).Int();
190912
190978
  _r$11 = outputBuffer.YCbCr(); /* */ $s = 28; case 28: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
190913
190979
  ycbcrImg = _r$11;
190914
190980
  image.Rectangle.copy(ycbcrImg.Rect, image.Rect(0, 0, displayWidth, displayHeight));
190915
190981
  ycbcrImg.SubsampleRatio = 2;
190982
+ $go((function(d, frame, releaseChan) { return function $b() {
190983
+ var {_r$12, _r$13, $s, $r, $c} = $restore(this, {});
190984
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190985
+ _r$12 = $recv(releaseChan[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
190986
+ _r$12[0];
190987
+ _r$13 = $clone(frame[0], js.Value).Call("close", sliceType$1.nil); /* */ $s = 2; case 2: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
190988
+ _r$13;
190989
+ $s = -1; return;
190990
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r$12, _r$13, $s};return $f;
190991
+ }; })(d, frame, releaseChan), []);
190916
190992
  $s = -1; return $ifaceNil;
190917
- /* */ } return; } var $f = {$blk: Decoder.ptr.prototype.Decode, $c: true, $r, $24r, $24r$1, _arg, _r, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, chunk, chunkOpts, d, displayHeight, displayWidth, err, errDec, frame, frameData, framePromise, framePromiseCb, frameType, nal, outputBuffer, racePromise, timeoutPromise, timeoutPromiseCb, x, ycbcrImg, ycbcrJSImg, $s};return $f;
190993
+ /* */ } return; } var $f = {$blk: Decoder.ptr.prototype.Decode, $c: true, $r, $24r, $24r$1, _arg, _r, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, chunk, chunkOpts, d, displayHeight, displayWidth, err, errDec, frame, frameData, framePromise, framePromiseCb, frameType, nal, outputBuffer, racePromise, releaseChan, timeoutPromise, timeoutPromiseCb, x, ycbcrImg, ycbcrJSImg, $s};return $f;
190918
190994
  };
190919
- Decoder.prototype.Decode = function(nal, outputBuffer) { return this.$val.Decode(nal, outputBuffer); };
190920
- Decoder.ptr.prototype.Release = function(outputBuffer) {
190921
- var {_r, m, outputBuffer, ycbcrJSImg, $s, $r, $c} = $restore(this, {outputBuffer});
190922
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190923
- m = this;
190924
- ycbcrJSImg = $assertType(outputBuffer, ptrType$1).YCbCrJS();
190925
- /* */ if (!(ycbcrJSImg.CanvasImageSource === ptrType.nil)) { $s = 1; continue; }
190926
- /* */ $s = 2; continue;
190927
- /* if (!(ycbcrJSImg.CanvasImageSource === ptrType.nil)) { */ case 1:
190928
- _r = $clone(ycbcrJSImg.CanvasImageSource, js.Value).Call("close", sliceType$1.nil); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190929
- _r;
190930
- /* } */ case 2:
190931
- $s = -1; return;
190932
- /* */ } return; } var $f = {$blk: Decoder.ptr.prototype.Release, $c: true, $r, _r, m, outputBuffer, ycbcrJSImg, $s};return $f;
190933
- };
190934
- Decoder.prototype.Release = function(outputBuffer) { return this.$val.Release(outputBuffer); };
190995
+ Decoder.prototype.Decode = function(nal, outputBuffer, releaseChan) { return this.$val.Decode(nal, outputBuffer, releaseChan); };
190935
190996
  Decoder.ptr.prototype.jsSafeDecode = function(chunk) {
190936
190997
  var {$24r, _r, chunk, d, err, $s, $deferred, $r, $c} = $restore(this, {chunk});
190937
190998
  /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
@@ -190959,7 +191020,7 @@ $packages["github.com/supraio/client-daemon/pkg/x264/webcodecs"] = (function() {
190959
191020
  /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return err[0]; } if($curGoroutine.asleep) { var $f = {$blk: Decoder.ptr.prototype.jsSafeDecode, $c: true, $r, $24r, _r, chunk, d, err, $s, $deferred};return $f; } }
190960
191021
  };
190961
191022
  Decoder.prototype.jsSafeDecode = function(chunk) { return this.$val.jsSafeDecode(chunk); };
190962
- ptrType$2.methods = [{prop: "configure", name: "configure", pkg: "github.com/supraio/client-daemon/pkg/x264/webcodecs", typ: $funcType([sliceType$2], [], false)}, {prop: "detectCodecName", name: "detectCodecName", pkg: "github.com/supraio/client-daemon/pkg/x264/webcodecs", typ: $funcType([sliceType$2], [$String], false)}, {prop: "Decode", name: "Decode", pkg: "", typ: $funcType([sliceType$2, 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/x264/webcodecs", typ: $funcType([js.Value], [$error], false)}];
191023
+ ptrType$2.methods = [{prop: "configure", name: "configure", pkg: "github.com/supraio/client-daemon/pkg/x264/webcodecs", typ: $funcType([sliceType$2], [], false)}, {prop: "detectCodecName", name: "detectCodecName", pkg: "github.com/supraio/client-daemon/pkg/x264/webcodecs", typ: $funcType([sliceType$2], [$String], false)}, {prop: "Decode", name: "Decode", pkg: "", typ: $funcType([sliceType$2, general.OutputBuffer, chanType], [$error], false)}, {prop: "jsSafeDecode", name: "jsSafeDecode", pkg: "github.com/supraio/client-daemon/pkg/x264/webcodecs", typ: $funcType([js.Value], [$error], false)}];
190963
191024
  Decoder.init("github.com/supraio/client-daemon/pkg/x264/webcodecs", [{prop: "jsVideoDecoder", name: "jsVideoDecoder", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "resolves", name: "resolves", embedded: false, exported: false, typ: sliceType, tag: ""}, {prop: "rejects", name: "rejects", embedded: false, exported: false, typ: sliceType, tag: ""}, {prop: "releaseVideoDecoder", name: "releaseVideoDecoder", embedded: false, exported: false, typ: funcType, tag: ""}]);
190964
191025
  $init = function() {
190965
191026
  $pkg.$init = function() {};
@@ -190978,7 +191039,7 @@ $packages["github.com/supraio/client-daemon/pkg/x264/webcodecs"] = (function() {
190978
191039
  return $pkg;
190979
191040
  })();
190980
191041
  $packages["github.com/supraio/client-daemon/pkg/x264"] = (function() {
190981
- var $pkg = {}, $init, errs, general, h264_decoder, nacldecoder, webcodecs, Decoder, H264Decoder, ptrType, sliceType, sliceType$1, NewH264Decoder;
191042
+ var $pkg = {}, $init, errs, general, h264_decoder, nacldecoder, webcodecs, Decoder, H264Decoder, ptrType, sliceType, sliceType$1, chanType, NewH264Decoder;
190982
191043
  errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
190983
191044
  general = $packages["github.com/supraio/client-daemon/pkg/x264/general"];
190984
191045
  h264_decoder = $packages["github.com/supraio/client-daemon/pkg/x264/h264decoder"];
@@ -190996,6 +191057,7 @@ $packages["github.com/supraio/client-daemon/pkg/x264"] = (function() {
190996
191057
  ptrType = $ptrType(H264Decoder);
190997
191058
  sliceType = $sliceType($emptyInterface);
190998
191059
  sliceType$1 = $sliceType($Uint8);
191060
+ chanType = $chanType($emptyInterface, false, false);
190999
191061
  NewH264Decoder = function(header) {
191000
191062
  var {$24r, _r, decoder, header, $s, $r, $c} = $restore(this, {header});
191001
191063
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
@@ -191022,27 +191084,18 @@ $packages["github.com/supraio/client-daemon/pkg/x264"] = (function() {
191022
191084
  /* */ } return; } var $f = {$blk: NewH264Decoder, $c: true, $r, $24r, _r, decoder, header, $s};return $f;
191023
191085
  };
191024
191086
  $pkg.NewH264Decoder = NewH264Decoder;
191025
- H264Decoder.ptr.prototype.Decode = function(nal, outputBuffer) {
191026
- var {$24r, _r, m, nal, outputBuffer, $s, $r, $c} = $restore(this, {nal, outputBuffer});
191087
+ H264Decoder.ptr.prototype.Decode = function(nal, outputBuffer, releaseChan) {
191088
+ var {$24r, _r, m, nal, outputBuffer, releaseChan, $s, $r, $c} = $restore(this, {nal, outputBuffer, releaseChan});
191027
191089
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
191028
191090
  m = this;
191029
- _r = m.decoder.Decode(nal, outputBuffer); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
191091
+ _r = m.decoder.Decode(nal, outputBuffer, releaseChan); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
191030
191092
  $24r = _r;
191031
191093
  $s = 2; case 2: return $24r;
191032
- /* */ } return; } var $f = {$blk: H264Decoder.ptr.prototype.Decode, $c: true, $r, $24r, _r, m, nal, outputBuffer, $s};return $f;
191033
- };
191034
- H264Decoder.prototype.Decode = function(nal, outputBuffer) { return this.$val.Decode(nal, outputBuffer); };
191035
- H264Decoder.ptr.prototype.Release = function(outputBuffer) {
191036
- var {m, outputBuffer, $s, $r, $c} = $restore(this, {outputBuffer});
191037
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
191038
- m = this;
191039
- $r = m.decoder.Release(outputBuffer); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191040
- $s = -1; return;
191041
- /* */ } return; } var $f = {$blk: H264Decoder.ptr.prototype.Release, $c: true, $r, m, outputBuffer, $s};return $f;
191094
+ /* */ } return; } var $f = {$blk: H264Decoder.ptr.prototype.Decode, $c: true, $r, $24r, _r, m, nal, outputBuffer, releaseChan, $s};return $f;
191042
191095
  };
191043
- H264Decoder.prototype.Release = function(outputBuffer) { return this.$val.Release(outputBuffer); };
191044
- ptrType.methods = [{prop: "Decode", name: "Decode", pkg: "", typ: $funcType([sliceType$1, general.OutputBuffer], [$error], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([general.OutputBuffer], [], false)}];
191045
- Decoder.init([{prop: "Decode", name: "Decode", pkg: "", typ: $funcType([sliceType$1, general.OutputBuffer], [$error], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([general.OutputBuffer], [], false)}]);
191096
+ H264Decoder.prototype.Decode = function(nal, outputBuffer, releaseChan) { return this.$val.Decode(nal, outputBuffer, releaseChan); };
191097
+ ptrType.methods = [{prop: "Decode", name: "Decode", pkg: "", typ: $funcType([sliceType$1, general.OutputBuffer, chanType], [$error], false)}];
191098
+ Decoder.init([{prop: "Decode", name: "Decode", pkg: "", typ: $funcType([sliceType$1, general.OutputBuffer, chanType], [$error], false)}]);
191046
191099
  H264Decoder.init("github.com/supraio/client-daemon/pkg/x264", [{prop: "decoder", name: "decoder", embedded: false, exported: false, typ: Decoder, tag: ""}]);
191047
191100
  $init = function() {
191048
191101
  $pkg.$init = function() {};
@@ -191058,10 +191111,10 @@ $packages["github.com/supraio/client-daemon/pkg/x264"] = (function() {
191058
191111
  return $pkg;
191059
191112
  })();
191060
191113
  $packages["github.com/supraio/client-daemon/pkg/x264/nacldecoder/nacldriver"] = (function() {
191061
- var $pkg = {}, $init, errs, jshelper, nacldecoder, dom, screen, f64, image, color, draw, log, sync, js, windowImpl, screenImpl, BufferImpl, sliceType, ptrType, ptrType$1, ptrType$2, ptrType$3, funcType, arrayType, ptrType$4, sliceType$1, ptrType$5, ptrType$6, ptrType$7, ptrType$8, ptrType$9, newWindow, newScreenImpl, Main, main, newBuffer;
191114
+ var $pkg = {}, $init, errs, jshelper, jsdecoder, dom, screen, f64, image, color, draw, log, sync, js, windowImpl, screenImpl, BufferImpl, sliceType, ptrType, ptrType$1, ptrType$2, ptrType$3, funcType, arrayType, ptrType$4, sliceType$1, ptrType$5, ptrType$6, ptrType$7, ptrType$8, ptrType$9, newWindow, newScreenImpl, Main, main, newBuffer;
191062
191115
  errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
191063
191116
  jshelper = $packages["github.com/supraio/client-daemon/pkg/jshelper"];
191064
- nacldecoder = $packages["github.com/supraio/client-daemon/pkg/x264/nacldecoder"];
191117
+ jsdecoder = $packages["github.com/supraio/client-daemon/pkg/x264/nacldecoder/jsdecoder"];
191065
191118
  dom = $packages["golang.org/x/exp/shiny/driver/util/dom"];
191066
191119
  screen = $packages["golang.org/x/exp/shiny/screen"];
191067
191120
  f64 = $packages["golang.org/x/image/math/f64"];
@@ -191071,19 +191124,19 @@ $packages["github.com/supraio/client-daemon/pkg/x264/nacldecoder/nacldriver"] =
191071
191124
  log = $packages["log"];
191072
191125
  sync = $packages["sync"];
191073
191126
  js = $packages["syscall/js"];
191074
- windowImpl = $pkg.windowImpl = $newType(0, $kindStruct, "nacldriver.windowImpl", true, "github.com/supraio/client-daemon/pkg/x264/nacldecoder/nacldriver", false, function(screen_, mutex_, jsNaClDecoder_, domEvents_, released_) {
191127
+ windowImpl = $pkg.windowImpl = $newType(0, $kindStruct, "nacldriver.windowImpl", true, "github.com/supraio/client-daemon/pkg/x264/nacldecoder/nacldriver", false, function(screen_, mutex_, renderingInProgress_, domEvents_, released_) {
191075
191128
  this.$val = this;
191076
191129
  if (arguments.length === 0) {
191077
191130
  this.screen = ptrType.nil;
191078
191131
  this.mutex = ptrType$1.nil;
191079
- this.jsNaClDecoder = ptrType$2.nil;
191080
- this.domEvents = ptrType$3.nil;
191132
+ this.renderingInProgress = false;
191133
+ this.domEvents = ptrType$2.nil;
191081
191134
  this.released = false;
191082
191135
  return;
191083
191136
  }
191084
191137
  this.screen = screen_;
191085
191138
  this.mutex = mutex_;
191086
- this.jsNaClDecoder = jsNaClDecoder_;
191139
+ this.renderingInProgress = renderingInProgress_;
191087
191140
  this.domEvents = domEvents_;
191088
191141
  this.released = released_;
191089
191142
  });
@@ -191108,8 +191161,8 @@ $packages["github.com/supraio/client-daemon/pkg/x264/nacldecoder/nacldriver"] =
191108
191161
  sliceType = $sliceType($emptyInterface);
191109
191162
  ptrType = $ptrType(screenImpl);
191110
191163
  ptrType$1 = $ptrType(sync.Mutex);
191111
- ptrType$2 = $ptrType(js.Value);
191112
- ptrType$3 = $ptrType(dom.DomEvents);
191164
+ ptrType$2 = $ptrType(dom.DomEvents);
191165
+ ptrType$3 = $ptrType(js.Value);
191113
191166
  funcType = $funcType([], [], false);
191114
191167
  arrayType = $arrayType(funcType, 0);
191115
191168
  ptrType$4 = $ptrType(image.RGBA);
@@ -191120,9 +191173,8 @@ $packages["github.com/supraio/client-daemon/pkg/x264/nacldecoder/nacldriver"] =
191120
191173
  ptrType$8 = $ptrType(image.YCbCr);
191121
191174
  ptrType$9 = $ptrType(BufferImpl);
191122
191175
  newWindow = function(screen$1, opts) {
191123
- var {_r, _r$1, _r$2, domEvents, jsNaClDecoder, opts, screen$1, w, $s, $r, $c} = $restore(this, {screen$1, opts});
191176
+ var {_r, _r$1, domEvents, opts, screen$1, w, $s, $r, $c} = $restore(this, {screen$1, opts});
191124
191177
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
191125
- jsNaClDecoder = [jsNaClDecoder];
191126
191178
  /* */ if (!(opts.Title === "")) { $s = 1; continue; }
191127
191179
  /* */ $s = 2; continue;
191128
191180
  /* if (!(opts.Title === "")) { */ case 1:
@@ -191130,17 +191182,11 @@ $packages["github.com/supraio/client-daemon/pkg/x264/nacldecoder/nacldriver"] =
191130
191182
  _r$1 = $clone(_r, js.Value).Call("item", new sliceType([new $Int(0)])); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
191131
191183
  $r = $clone(_r$1, js.Value).Set("innerHTML", new $String(opts.Title)); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191132
191184
  /* } */ case 2:
191133
- jsNaClDecoder[0] = $clone($clone(js.Global(), js.Value).Get("naclDecoder"), js.Value);
191134
- /* */ if ($clone(jsNaClDecoder[0], js.Value).IsUndefined()) { $s = 6; continue; }
191135
- /* */ $s = 7; continue;
191136
- /* if ($clone(jsNaClDecoder[0], js.Value).IsUndefined()) { */ case 6:
191137
- _r$2 = errs.Errorf("Cannot get naclDecoder object from global scope", sliceType.nil); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
191138
- $panic(_r$2);
191139
- /* } */ case 7:
191140
191185
  domEvents = dom.NewDomEvents();
191141
- w = new windowImpl.ptr(screen$1, new sync.Mutex.ptr(0, 0), jsNaClDecoder[0], domEvents, false);
191186
+ w = new windowImpl.ptr(screen$1, new sync.Mutex.ptr(0, 0), false, domEvents, false);
191187
+ $r = domEvents.BindEvents(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191142
191188
  $s = -1; return w;
191143
- /* */ } return; } var $f = {$blk: newWindow, $c: true, $r, _r, _r$1, _r$2, domEvents, jsNaClDecoder, opts, screen$1, w, $s};return $f;
191189
+ /* */ } return; } var $f = {$blk: newWindow, $c: true, $r, _r, _r$1, domEvents, opts, screen$1, w, $s};return $f;
191144
191190
  };
191145
191191
  windowImpl.ptr.prototype.Release = function() {
191146
191192
  var {w, $s, $deferred, $r, $c} = $restore(this, {});
@@ -191210,64 +191256,72 @@ $packages["github.com/supraio/client-daemon/pkg/x264/nacldecoder/nacldriver"] =
191210
191256
  };
191211
191257
  windowImpl.prototype.Upload = function(dp, src, sr) { return this.$val.Upload(dp, src, sr); };
191212
191258
  windowImpl.ptr.prototype.UploadYCbCr = function(dp, src, sr) {
191213
- var {_arg, _arg$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _tuple, _tuple$1, dp, err, err$1, picture, picturePromise, renderPromise, renderResult, sr, src, w, x, x$1, $s, $deferred, $r, $c} = $restore(this, {dp, src, sr});
191214
- /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
191259
+ var {_arg, _arg$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _tuple, _tuple$1, dp, err, err$1, jsNaClDecoder, picture, picturePromise, renderPromise, renderResult, sr, src, w, x, x$1, $s, $r, $c} = $restore(this, {dp, src, sr});
191260
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
191215
191261
  w = this;
191216
- $r = w.mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191217
- $deferred.push([$methodVal(w.mutex, "Unlock"), []]);
191218
- /* */ if (w.released) { $s = 2; continue; }
191219
- /* */ $s = 3; continue;
191220
- /* if (w.released) { */ case 2:
191221
- $s = 4; case 4: return;
191222
- /* } */ case 3:
191223
- /* */ if (nacldecoder.IsResetting()) { $s = 5; continue; }
191224
- /* */ $s = 6; continue;
191225
- /* if (nacldecoder.IsResetting()) { */ case 5:
191226
- $s = 7; case 7: return;
191227
- /* } */ case 6:
191228
- _r = $clone(w.jsNaClDecoder, js.Value).Call("getPicture", sliceType.nil); /* */ $s = 8; case 8: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
191262
+ if (w.released) {
191263
+ $s = -1; return;
191264
+ }
191265
+ /* */ if (jsdecoder.ShouldResetOnNextDecode()) { $s = 1; continue; }
191266
+ /* */ $s = 2; continue;
191267
+ /* if (jsdecoder.ShouldResetOnNextDecode()) { */ case 1:
191268
+ $r = log.Println(new sliceType([new $String("NaClDecoder is resetting, skipping frame rendering")])); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191269
+ $s = -1; return;
191270
+ /* } */ case 2:
191271
+ jsNaClDecoder = jsdecoder.GetJsNaClDecoder();
191272
+ /* */ if (jsNaClDecoder === ptrType$3.nil) { $s = 4; continue; }
191273
+ /* */ $s = 5; continue;
191274
+ /* if (jsNaClDecoder === ptrType$3.nil) { */ case 4:
191275
+ $r = log.Println(new sliceType([new $String("JsNaClDecoder is not created, skipping frame rendering")])); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191276
+ $s = -1; return;
191277
+ /* } */ case 5:
191278
+ $r = w.mutex.Lock(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191279
+ _r = $clone(jsNaClDecoder, js.Value).Call("getPicture", sliceType.nil); /* */ $s = 8; case 8: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
191229
191280
  picturePromise = $clone(_r, js.Value);
191230
191281
  _r$1 = jshelper.Await($clone(picturePromise, js.Value)); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
191231
191282
  _tuple = _r$1;
191232
191283
  picture = _tuple[0];
191233
191284
  err = _tuple[1];
191234
- /* */ if (!(err === ptrType$2.nil)) { $s = 10; continue; }
191235
- /* */ $s = 11; continue;
191236
- /* if (!(err === ptrType$2.nil)) { */ case 10:
191237
- nacldecoder.Reset();
191238
- _r$2 = jshelper.GetError(err); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
191285
+ $r = w.mutex.Unlock(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191286
+ /* */ if (!(err === ptrType$3.nil)) { $s = 11; continue; }
191287
+ /* */ $s = 12; continue;
191288
+ /* if (!(err === ptrType$3.nil)) { */ case 11:
191289
+ jsdecoder.ResetBeforeNextDecode();
191290
+ _r$2 = jshelper.GetError(err); /* */ $s = 13; case 13: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
191239
191291
  _arg = _r$2;
191240
- $r = errs.Print("Failed to get picture: %s", _arg); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191241
- $s = 14; case 14: return;
191242
- /* } */ case 11:
191243
- /* */ if (!nacldecoder.IsResetting()) { $s = 15; continue; }
191292
+ $r = errs.Print("Failed to get picture: %s", _arg); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191293
+ $s = -1; return;
191294
+ /* } */ case 12:
191295
+ /* */ if (!jsdecoder.ShouldResetOnNextDecode() && !w.renderingInProgress) { $s = 15; continue; }
191244
191296
  /* */ $s = 16; continue;
191245
- /* if (!nacldecoder.IsResetting()) { */ case 15:
191246
- _r$3 = $clone(w.jsNaClDecoder, js.Value).Call("render", new sliceType([(x = picture, new x.constructor.elem(x))])); /* */ $s = 17; case 17: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
191297
+ /* if (!jsdecoder.ShouldResetOnNextDecode() && !w.renderingInProgress) { */ case 15:
191298
+ w.renderingInProgress = true;
191299
+ _r$3 = $clone(jsNaClDecoder, js.Value).Call("render", new sliceType([(x = picture, new x.constructor.elem(x))])); /* */ $s = 17; case 17: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
191247
191300
  renderPromise = $clone(_r$3, js.Value);
191248
191301
  _r$4 = jshelper.Await($clone(renderPromise, js.Value)); /* */ $s = 18; case 18: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
191249
191302
  _tuple$1 = _r$4;
191250
191303
  renderResult = _tuple$1[0];
191251
191304
  err$1 = _tuple$1[1];
191252
- /* */ if (!(err$1 === ptrType$2.nil)) { $s = 19; continue; }
191305
+ w.renderingInProgress = false;
191306
+ /* */ if (!(err$1 === ptrType$3.nil)) { $s = 19; continue; }
191253
191307
  /* */ $s = 20; continue;
191254
- /* if (!(err$1 === ptrType$2.nil)) { */ case 19:
191308
+ /* if (!(err$1 === ptrType$3.nil)) { */ case 19:
191255
191309
  _r$5 = jshelper.GetError(err$1); /* */ $s = 21; case 21: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
191256
191310
  _arg$1 = _r$5;
191257
191311
  $r = errs.Print("Failed to render frame: %s", _arg$1); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191258
- $s = 23; case 23: return;
191312
+ $s = -1; return;
191259
191313
  /* } */ case 20:
191260
- /* */ if (!(($clone(renderResult, js.Value).Float() === 0))) { $s = 24; continue; }
191261
- /* */ $s = 25; continue;
191262
- /* if (!(($clone(renderResult, js.Value).Float() === 0))) { */ case 24:
191263
- $r = log.Printf("Failed to render frame with code: %f\n", new sliceType([new $Float64($clone(renderResult, js.Value).Float())])); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191264
- $s = 27; case 27: return;
191265
- /* } */ case 25:
191314
+ /* */ if (!(($clone(renderResult, js.Value).Float() === 0))) { $s = 23; continue; }
191315
+ /* */ $s = 24; continue;
191316
+ /* if (!(($clone(renderResult, js.Value).Float() === 0))) { */ case 23:
191317
+ $r = log.Printf("Failed to render frame with code: %f\n", new sliceType([new $Float64($clone(renderResult, js.Value).Float())])); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191318
+ $s = -1; return;
191319
+ /* } */ case 24:
191266
191320
  /* } */ case 16:
191267
- _r$6 = $clone(w.jsNaClDecoder, js.Value).Call("recyclePicture", new sliceType([(x$1 = picture, new x$1.constructor.elem(x$1))])); /* */ $s = 28; case 28: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
191321
+ _r$6 = $clone(jsNaClDecoder, js.Value).Call("recyclePicture", new sliceType([(x$1 = picture, new x$1.constructor.elem(x$1))])); /* */ $s = 26; case 26: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
191268
191322
  _r$6;
191269
191323
  $s = -1; return;
191270
- /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: windowImpl.ptr.prototype.UploadYCbCr, $c: true, $r, _arg, _arg$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _tuple, _tuple$1, dp, err, err$1, picture, picturePromise, renderPromise, renderResult, sr, src, w, x, x$1, $s, $deferred};return $f; } }
191324
+ /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.UploadYCbCr, $c: true, $r, _arg, _arg$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _tuple, _tuple$1, dp, err, err$1, jsNaClDecoder, picture, picturePromise, renderPromise, renderResult, sr, src, w, x, x$1, $s};return $f;
191271
191325
  };
191272
191326
  windowImpl.prototype.UploadYCbCr = function(dp, src, sr) { return this.$val.UploadYCbCr(dp, src, sr); };
191273
191327
  windowImpl.ptr.prototype.Fill = function(dr, src, op) {
@@ -191416,7 +191470,7 @@ $packages["github.com/supraio/client-daemon/pkg/x264/nacldecoder/nacldriver"] =
191416
191470
  ptrType$6.methods = [{prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}, {prop: "Publish", name: "Publish", pkg: "", typ: $funcType([], [screen.PublishResult], false)}, {prop: "Send", name: "Send", pkg: "", typ: $funcType([$emptyInterface], [], false)}, {prop: "SendFirst", name: "SendFirst", pkg: "", typ: $funcType([$emptyInterface], [], false)}, {prop: "NextEvent", name: "NextEvent", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "Upload", name: "Upload", pkg: "", typ: $funcType([image.Point, screen.Buffer, image.Rectangle], [], false)}, {prop: "UploadYCbCr", name: "UploadYCbCr", pkg: "", typ: $funcType([image.Point, screen.Buffer, image.Rectangle], [], false)}, {prop: "Fill", name: "Fill", pkg: "", typ: $funcType([image.Rectangle, color.Color, draw.Op], [], false)}, {prop: "Draw", name: "Draw", pkg: "", typ: $funcType([f64.Aff3, screen.Texture, image.Rectangle, draw.Op, ptrType$5], [], false)}, {prop: "DrawUniform", name: "DrawUniform", pkg: "", typ: $funcType([f64.Aff3, color.Color, image.Rectangle, draw.Op, ptrType$5], [], false)}, {prop: "Copy", name: "Copy", pkg: "", typ: $funcType([image.Point, screen.Texture, image.Rectangle, draw.Op, ptrType$5], [], false)}, {prop: "Scale", name: "Scale", pkg: "", typ: $funcType([image.Rectangle, screen.Texture, image.Rectangle, draw.Op, ptrType$5], [], false)}];
191417
191471
  ptrType.methods = [{prop: "NewBuffer", name: "NewBuffer", pkg: "", typ: $funcType([image.Point], [screen.Buffer, $error], false)}, {prop: "NewTexture", name: "NewTexture", pkg: "", typ: $funcType([image.Point], [screen.Texture, $error], false)}, {prop: "NewWindow", name: "NewWindow", pkg: "", typ: $funcType([ptrType$7], [screen.Window, $error], false)}];
191418
191472
  ptrType$9.methods = [{prop: "Size", name: "Size", pkg: "", typ: $funcType([], [image.Point], false)}, {prop: "Bounds", name: "Bounds", pkg: "", typ: $funcType([], [image.Rectangle], false)}, {prop: "RGBA", name: "RGBA", pkg: "", typ: $funcType([], [ptrType$4], false)}, {prop: "YCbCr", name: "YCbCr", pkg: "", typ: $funcType([], [ptrType$8], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}];
191419
- windowImpl.init("github.com/supraio/client-daemon/pkg/x264/nacldecoder/nacldriver", [{prop: "screen", name: "screen", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "mutex", name: "mutex", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "jsNaClDecoder", name: "jsNaClDecoder", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "domEvents", name: "domEvents", embedded: false, exported: false, typ: ptrType$3, tag: ""}, {prop: "released", name: "released", embedded: false, exported: false, typ: $Bool, tag: ""}]);
191473
+ windowImpl.init("github.com/supraio/client-daemon/pkg/x264/nacldecoder/nacldriver", [{prop: "screen", name: "screen", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "mutex", name: "mutex", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "renderingInProgress", name: "renderingInProgress", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "domEvents", name: "domEvents", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "released", name: "released", embedded: false, exported: false, typ: $Bool, tag: ""}]);
191420
191474
  screenImpl.init("github.com/supraio/client-daemon/pkg/x264/nacldecoder/nacldriver", [{prop: "doc", name: "doc", embedded: false, exported: false, typ: js.Value, tag: ""}]);
191421
191475
  BufferImpl.init("github.com/supraio/client-daemon/pkg/x264/nacldecoder/nacldriver", [{prop: "screen", name: "screen", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "size", name: "size", embedded: false, exported: false, typ: image.Point, tag: ""}]);
191422
191476
  $init = function() {
@@ -191424,7 +191478,7 @@ $packages["github.com/supraio/client-daemon/pkg/x264/nacldecoder/nacldriver"] =
191424
191478
  /* */ 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:
191425
191479
  $r = errs.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191426
191480
  $r = jshelper.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191427
- $r = nacldecoder.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191481
+ $r = jsdecoder.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191428
191482
  $r = dom.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191429
191483
  $r = screen.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191430
191484
  $r = f64.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
@@ -191532,7 +191586,7 @@ $packages["golang.org/x/mobile/event/lifecycle"] = (function() {
191532
191586
  return $pkg;
191533
191587
  })();
191534
191588
  $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
191535
- var $pkg = {}, $init, binary, json, query, clientscreen, clipboard, errs, helper, input, message, netclient, netpacket, netstream, stats, window, x264, nacldecoder, nacldriver, webcodecs, canvasdriver, webgldriver, screen, focus, key, lifecycle, mouse, size, image, io, ioutil, log, os, path, strings, sync, js, time, X264FrameRenderer, ScreenWindow, ProcessInfo, ProcessInfoManager, FrameCollector, FrameMapItem, Frame, FrameType, ptrType, ptrType$1, ptrType$2, funcType, sliceType, ptrType$3, ptrType$4, ptrType$5, ptrType$6, ptrType$7, ptrType$8, ptrType$9, sliceType$1, sliceType$2, structType, sliceType$3, ptrType$10, ptrType$11, funcType$1, ptrType$12, ptrType$13, chanType, chanType$1, chanType$2, chanType$3, chanType$4, mapType, NewX264FrameRenderer, NewScreenWindow, MainDriver, NewProcessInfoManager, NewFrameCollector;
191589
+ var $pkg = {}, $init, binary, json, query, clientscreen, clipboard, errs, helper, input, message, netclient, netpacket, netstream, stats, window, x264, nacldecoder, nacldriver, webcodecs, canvasdriver, webgldriver, screen, focus, key, lifecycle, mouse, size, image, io, ioutil, log, os, path, strings, sync, js, time, X264FrameRenderer, ScreenWindow, ProcessInfo, ProcessInfoManager, FrameCollector, FrameMapItem, Frame, FrameType, ptrType, ptrType$1, structType, ptrType$2, funcType, sliceType, ptrType$3, ptrType$4, ptrType$5, ptrType$6, ptrType$7, ptrType$8, ptrType$9, sliceType$1, sliceType$2, sliceType$3, ptrType$10, ptrType$11, funcType$1, ptrType$12, ptrType$13, chanType, chanType$1, chanType$2, chanType$3, chanType$4, mapType, NewX264FrameRenderer, NewScreenWindow, MainDriver, NewProcessInfoManager, NewFrameCollector;
191536
191590
  binary = $packages["encoding/binary"];
191537
191591
  json = $packages["encoding/json"];
191538
191592
  query = $packages["github.com/google/go-querystring/query"];
@@ -191720,6 +191774,7 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
191720
191774
  FrameType = $pkg.FrameType = $newType(1, $kindUint8, "render.FrameType", true, "github.com/supraio/client-daemon/pkg/render", true, null);
191721
191775
  ptrType = $ptrType(stats.Stats);
191722
191776
  ptrType$1 = $ptrType(x264.H264Decoder);
191777
+ structType = $structType("", []);
191723
191778
  ptrType$2 = $ptrType(ProcessInfoManager);
191724
191779
  funcType = $funcType([], [], false);
191725
191780
  sliceType = $sliceType(funcType);
@@ -191732,7 +191787,6 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
191732
191787
  ptrType$9 = $ptrType(netclient.Healthchecker);
191733
191788
  sliceType$1 = $sliceType($emptyInterface);
191734
191789
  sliceType$2 = $sliceType($Uint8);
191735
- structType = $structType("", []);
191736
191790
  sliceType$3 = $sliceType($String);
191737
191791
  ptrType$10 = $ptrType(Frame);
191738
191792
  ptrType$11 = $ptrType(FrameMapItem);
@@ -191751,9 +191805,10 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
191751
191805
  };
191752
191806
  $pkg.NewX264FrameRenderer = NewX264FrameRenderer;
191753
191807
  X264FrameRenderer.ptr.prototype.Render = function(frame) {
191754
- var {_r, _r$1, _tuple, err, frame, r, $s, $r, $c} = $restore(this, {frame});
191808
+ var {_r, _r$1, _tuple, err, frame, r, releaseChannel, $s, $r, $c} = $restore(this, {frame});
191755
191809
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
191756
191810
  r = [r];
191811
+ releaseChannel = [releaseChannel];
191757
191812
  r[0] = this;
191758
191813
  err = $ifaceNil;
191759
191814
  /* */ if (r[0].dec === ptrType$1.nil) { $s = 1; continue; }
@@ -191770,19 +191825,19 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
191770
191825
  $s = -1; return;
191771
191826
  /* } */ case 5:
191772
191827
  /* } */ case 2:
191828
+ releaseChannel[0] = new $Chan($emptyInterface, 0);
191773
191829
  $r = r[0].stats.NotifyFrameDecodeStarted(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191774
- _r$1 = r[0].dec.Decode(frame.buffer, r[0].screenBuffer); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
191830
+ _r$1 = r[0].dec.Decode(frame.buffer, r[0].screenBuffer, releaseChannel[0]); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
191775
191831
  err = _r$1;
191776
191832
  $r = r[0].stats.NotifyFrameDecodeEnded(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191777
- $r = r[0].dec.Release(r[0].screenBuffer); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191778
- /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 11; continue; }
191779
- /* */ $s = 12; continue;
191780
- /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 11:
191781
- $r = errs.Print("Frame cannot be decoded", err); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191833
+ /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 10; continue; }
191834
+ /* */ $s = 11; continue;
191835
+ /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 10:
191836
+ $r = errs.Print("Frame cannot be decoded", err); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191782
191837
  $s = -1; return;
191783
- /* } */ case 12:
191784
- $go((function(r) { return function $b() {
191785
- var {_arg, _arg$1, _arg$2, _r$2, _r$3, $s, $r, $c} = $restore(this, {});
191838
+ /* } */ case 11:
191839
+ $go((function(r, releaseChannel) { return function $b() {
191840
+ var {_arg, _arg$1, _arg$2, _r$2, _r$3, x, $s, $r, $c} = $restore(this, {});
191786
191841
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
191787
191842
  $r = r[0].stats.NotifyFrameRenderStarted(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191788
191843
  _arg = $clone(new image.Point.ptr(0, 0), image.Point);
@@ -191793,11 +191848,12 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
191793
191848
  _r$3 = r[0].window.Publish(); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
191794
191849
  _r$3;
191795
191850
  $r = r[0].stats.NotifyFrameRenderEnded(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191851
+ $r = $send(releaseChannel[0], (x = new structType.ptr(), new x.constructor.elem(x))); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191796
191852
  $s = -1; return;
191797
- /* */ } return; } var $f = {$blk: $b, $c: true, $r, _arg, _arg$1, _arg$2, _r$2, _r$3, $s};return $f;
191798
- }; })(r), []);
191853
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, _arg, _arg$1, _arg$2, _r$2, _r$3, x, $s};return $f;
191854
+ }; })(r, releaseChannel), []);
191799
191855
  $s = -1; return;
191800
- /* */ } return; } var $f = {$blk: X264FrameRenderer.ptr.prototype.Render, $c: true, $r, _r, _r$1, _tuple, err, frame, r, $s};return $f;
191856
+ /* */ } return; } var $f = {$blk: X264FrameRenderer.ptr.prototype.Render, $c: true, $r, _r, _r$1, _tuple, err, frame, r, releaseChannel, $s};return $f;
191801
191857
  };
191802
191858
  X264FrameRenderer.prototype.Render = function(frame) { return this.$val.Render(frame); };
191803
191859
  NewScreenWindow = function(processInfoManager, screenDriver, screenHost, metadataDriver, metadataHost, clientID, clientSecret, screenID, secure, screenSize, timeoutDuration) {
@@ -192310,8 +192366,8 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
192310
192366
  return new time.Duration(2, 1410065408);
192311
192367
  }
192312
192368
  frameDurationMs = $div64(new $Int64(0, 1), (new $Int64(0, framerate)), false);
192313
- timeoutMs = $mul64(frameDurationMs, new $Int64(0, 60));
192314
- clampedTimeoutMs = helper.ClampedInt64(timeoutMs, new $Int64(0, 1000), new $Int64(0, 10000));
192369
+ timeoutMs = $mul64(frameDurationMs, new $Int64(0, 90));
192370
+ clampedTimeoutMs = helper.ClampedInt64(timeoutMs, new $Int64(0, 3000), new $Int64(0, 10000));
192315
192371
  return $mul64((new time.Duration(clampedTimeoutMs.$high, clampedTimeoutMs.$low)), new time.Duration(0, 1000000));
192316
192372
  };
192317
192373
  ScreenWindow.prototype.getHealthcheckTimeout = function() { return this.$val.getHealthcheckTimeout(); };
@@ -192382,7 +192438,7 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
192382
192438
  /* */ if (!($interfaceIsEqual(err[0], $ifaceNil))) { $s = 13; continue; }
192383
192439
  /* */ $s = 14; continue;
192384
192440
  /* if (!($interfaceIsEqual(err[0], $ifaceNil))) { */ case 13:
192385
- $r = errs.Print("Could disconnect screen", err[0]); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192441
+ $r = errs.Print("Could not disconnect screen", err[0]); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192386
192442
  /* } */ case 14:
192387
192443
  _r$7 = w[0].retriableOpen(-1, $methodVal(w[0], "openScreen")); /* */ $s = 16; case 16: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
192388
192444
  err$1 = _r$7;