1fb726d48Sopenharmony_ci// Copyright (c) 2021 Huawei Device Co., Ltd.
2fb726d48Sopenharmony_ci// Licensed under the Apache License, Version 2.0 (the "License");
3fb726d48Sopenharmony_ci// you may not use this file except in compliance with the License.
4fb726d48Sopenharmony_ci// You may obtain a copy of the License at
5fb726d48Sopenharmony_ci//
6fb726d48Sopenharmony_ci//     http://www.apache.org/licenses/LICENSE-2.0
7fb726d48Sopenharmony_ci//
8fb726d48Sopenharmony_ci// Unless required by applicable law or agreed to in writing, software
9fb726d48Sopenharmony_ci// distributed under the License is distributed on an "AS IS" BASIS,
10fb726d48Sopenharmony_ci// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11fb726d48Sopenharmony_ci// See the License for the specific language governing permissions and
12fb726d48Sopenharmony_ci// limitations under the License.
13fb726d48Sopenharmony_ci
14fb726d48Sopenharmony_ciimport { TraficEnum } from './utils/QueryEnum';
15fb726d48Sopenharmony_ciimport { JanksStruct } from '../../bean/JanksStruct';
16fb726d48Sopenharmony_ciimport { processFrameList } from './utils/AllMemoryCache';
17fb726d48Sopenharmony_ciimport { Args } from './CommonArgs';
18fb726d48Sopenharmony_ci
19fb726d48Sopenharmony_ciexport const frameJankDataSql = (args: Args, configure: unknown): string => {
20fb726d48Sopenharmony_ci  let timeLimit: string = '';
21fb726d48Sopenharmony_ci  let flag: string = '';
22fb726d48Sopenharmony_ci  let fsType: number = -1;
23fb726d48Sopenharmony_ci  let fsFlag: string = '';
24fb726d48Sopenharmony_ci  //@ts-ignore
25fb726d48Sopenharmony_ci  const endNS = args.endNS;
26fb726d48Sopenharmony_ci  //@ts-ignore
27fb726d48Sopenharmony_ci  const startNS = args.startNS;
28fb726d48Sopenharmony_ci  //@ts-ignore
29fb726d48Sopenharmony_ci  const recordStartNS = args.recordStartNS;
30fb726d48Sopenharmony_ci  switch (configure) {
31fb726d48Sopenharmony_ci    case 'ExepectMemory':
32fb726d48Sopenharmony_ci      fsType = 1;
33fb726d48Sopenharmony_ci      flag = 'fs.flag as jankTag,';
34fb726d48Sopenharmony_ci      break;
35fb726d48Sopenharmony_ci    case 'ExpectedData':
36fb726d48Sopenharmony_ci      fsType = 1;
37fb726d48Sopenharmony_ci      flag = 'fs.flag as jankTag,';
38fb726d48Sopenharmony_ci      timeLimit = `
39fb726d48Sopenharmony_ci       AND (fs.ts - ${recordStartNS} + fs.dur) >= ${Math.floor(startNS)}
40fb726d48Sopenharmony_ci       AND (fs.ts - ${recordStartNS}) <= ${Math.floor(endNS)}`;
41fb726d48Sopenharmony_ci      break;
42fb726d48Sopenharmony_ci    case 'ActualMemoryData':
43fb726d48Sopenharmony_ci      fsType = 0;
44fb726d48Sopenharmony_ci      flag =
45fb726d48Sopenharmony_ci        '(case when (sf.flag == 1 or fs.flag == 1 ) then 1 when (sf.flag == 3 or fs.flag == 3 ) then 3 else 0 end) as jankTag,';
46fb726d48Sopenharmony_ci      fsFlag = 'AND fs.flag <> 2';
47fb726d48Sopenharmony_ci      break;
48fb726d48Sopenharmony_ci    case 'ActualData':
49fb726d48Sopenharmony_ci      fsType = 0;
50fb726d48Sopenharmony_ci      flag =
51fb726d48Sopenharmony_ci        '(case when (sf.flag == 1 or fs.flag == 1 ) then 1 when (sf.flag == 3 or fs.flag == 3 ) then 3 else 0 end) as jankTag,';
52fb726d48Sopenharmony_ci      fsFlag = 'AND fs.flag <> 2';
53fb726d48Sopenharmony_ci      timeLimit = `AND (fs.ts - ${recordStartNS} + fs.dur) >= ${Math.floor(startNS)}
54fb726d48Sopenharmony_ci       AND (fs.ts - ${recordStartNS}) <= ${Math.floor(endNS)}`;
55fb726d48Sopenharmony_ci      break;
56fb726d48Sopenharmony_ci    default:
57fb726d48Sopenharmony_ci      break;
58fb726d48Sopenharmony_ci  }
59fb726d48Sopenharmony_ci  let sql = setFrameJanksSql(args, timeLimit, flag, fsType, fsFlag);
60fb726d48Sopenharmony_ci  return sql;
61fb726d48Sopenharmony_ci};
62fb726d48Sopenharmony_cifunction setFrameJanksSql(args: Args, timeLimit: string, flag: string, fsType: number, fsFlag: string): string {
63fb726d48Sopenharmony_ci  //@ts-ignore
64fb726d48Sopenharmony_ci  const recordStartNS = args.recordStartNS;
65fb726d48Sopenharmony_ci  return `SELECT sf.id,
66fb726d48Sopenharmony_ci            'frameTime' as frameType,
67fb726d48Sopenharmony_ci            fs.ipid,
68fb726d48Sopenharmony_ci            fs.vsync as name,
69fb726d48Sopenharmony_ci            fs.dur as appDur,
70fb726d48Sopenharmony_ci            (sf.ts + sf.dur - fs.ts) as dur,
71fb726d48Sopenharmony_ci            (fs.ts - ${recordStartNS}) AS ts,
72fb726d48Sopenharmony_ci            fs.type,
73fb726d48Sopenharmony_ci            ${flag}
74fb726d48Sopenharmony_ci            pro.pid,
75fb726d48Sopenharmony_ci            pro.name as cmdline,
76fb726d48Sopenharmony_ci            (sf.ts - ${recordStartNS}) AS rsTs,
77fb726d48Sopenharmony_ci            sf.vsync AS rsVsync,
78fb726d48Sopenharmony_ci            sf.dur AS rsDur,
79fb726d48Sopenharmony_ci            sf.ipid AS rsIpid,
80fb726d48Sopenharmony_ci            proc.pid AS rsPid,
81fb726d48Sopenharmony_ci            proc.name AS rsName
82fb726d48Sopenharmony_ci        FROM frame_slice AS fs
83fb726d48Sopenharmony_ci        LEFT JOIN process AS pro ON pro.id = fs.ipid
84fb726d48Sopenharmony_ci        LEFT JOIN frame_slice AS sf ON fs.dst = sf.id
85fb726d48Sopenharmony_ci        LEFT JOIN process AS proc ON proc.id = sf.ipid
86fb726d48Sopenharmony_ci        WHERE fs.dst IS NOT NULL
87fb726d48Sopenharmony_ci        AND fs.type = ${fsType}
88fb726d48Sopenharmony_ci        ${fsFlag} ${timeLimit}
89fb726d48Sopenharmony_ci        UNION
90fb726d48Sopenharmony_ci        SELECT -1 as id,
91fb726d48Sopenharmony_ci            'frameTime' as frameType,
92fb726d48Sopenharmony_ci            fs.ipid,
93fb726d48Sopenharmony_ci            fs.vsync  as name,
94fb726d48Sopenharmony_ci            fs.dur as appDur,
95fb726d48Sopenharmony_ci            fs.dur,
96fb726d48Sopenharmony_ci            (fs.ts - ${recordStartNS}) AS ts,
97fb726d48Sopenharmony_ci            fs.type,
98fb726d48Sopenharmony_ci            fs.flag as jankTag,
99fb726d48Sopenharmony_ci            pro.pid,
100fb726d48Sopenharmony_ci            pro.name as cmdline,
101fb726d48Sopenharmony_ci            NULL AS rsTs, NULL AS rsVsync, NULL AS rsDur, NULL AS rsIpid, NULL AS rsPid, NULL AS rsName
102fb726d48Sopenharmony_ci        FROM frame_slice AS fs LEFT JOIN process AS pro ON pro.id = fs.ipid
103fb726d48Sopenharmony_ci        WHERE fs.dst IS NULL
104fb726d48Sopenharmony_ci        AND pro.name NOT LIKE '%render_service%'
105fb726d48Sopenharmony_ci        AND fs.type = 1
106fb726d48Sopenharmony_ci        ${fsFlag} ${timeLimit}
107fb726d48Sopenharmony_ci        ORDER by ts`;
108fb726d48Sopenharmony_ci}
109fb726d48Sopenharmony_ci
110fb726d48Sopenharmony_ciexport function frameExpectedReceiver(data: unknown, proc: Function): void {
111fb726d48Sopenharmony_ci  // @ts-ignore
112fb726d48Sopenharmony_ci  if (data.params.trafic === TraficEnum.Memory) {
113fb726d48Sopenharmony_ci    if (!processFrameList.has('FrameTimeLine_expected')) {
114fb726d48Sopenharmony_ci      // @ts-ignore
115fb726d48Sopenharmony_ci      let sql = frameJankDataSql(data.params, 'ExepectMemory');
116fb726d48Sopenharmony_ci      processFrameList.set('FrameTimeLine_expected', proc(sql));
117fb726d48Sopenharmony_ci    }
118fb726d48Sopenharmony_ci    frameJanksReceiver(data, processFrameList.get('FrameTimeLine_expected')!, 'expected', true);
119fb726d48Sopenharmony_ci  } else {
120fb726d48Sopenharmony_ci    // @ts-ignore
121fb726d48Sopenharmony_ci    let sql = frameJankDataSql(data.params, 'ExpectedData');
122fb726d48Sopenharmony_ci    let res = proc(sql);
123fb726d48Sopenharmony_ci    // @ts-ignore
124fb726d48Sopenharmony_ci    frameJanksReceiver(data, res, 'expect', data.params.trafic !== TraficEnum.SharedArrayBuffer);
125fb726d48Sopenharmony_ci  }
126fb726d48Sopenharmony_ci}
127fb726d48Sopenharmony_ci
128fb726d48Sopenharmony_ciexport function frameActualReceiver(data: unknown, proc: Function): void {
129fb726d48Sopenharmony_ci  // @ts-ignore
130fb726d48Sopenharmony_ci  if (data.params.trafic === TraficEnum.Memory) {
131fb726d48Sopenharmony_ci    if (!processFrameList.has('FrameTimeLine_actual')) {
132fb726d48Sopenharmony_ci      // @ts-ignore
133fb726d48Sopenharmony_ci      let sql = frameJankDataSql(data.params, 'ActualMemoryData');
134fb726d48Sopenharmony_ci      processFrameList.set('FrameTimeLine_actual', proc(sql));
135fb726d48Sopenharmony_ci    }
136fb726d48Sopenharmony_ci    frameJanksReceiver(data, processFrameList.get('FrameTimeLine_actual')!, 'actual', true);
137fb726d48Sopenharmony_ci  } else {
138fb726d48Sopenharmony_ci    // @ts-ignore
139fb726d48Sopenharmony_ci    let sql = frameJankDataSql(data.params, 'ActualData');
140fb726d48Sopenharmony_ci    let res = proc(sql);
141fb726d48Sopenharmony_ci    // @ts-ignore
142fb726d48Sopenharmony_ci    frameJanksReceiver(data, res, 'actual', data.params.trafic !== TraficEnum.SharedArrayBuffer);
143fb726d48Sopenharmony_ci  }
144fb726d48Sopenharmony_ci}
145fb726d48Sopenharmony_cilet isIntersect = (leftData: JanksStruct, rightData: JanksStruct): boolean =>
146fb726d48Sopenharmony_ci  Math.max(leftData.ts! + leftData.dur!, rightData.ts! + rightData.dur!) - Math.min(leftData.ts!, rightData.ts!) <
147fb726d48Sopenharmony_ci  leftData.dur! + rightData.dur!;
148fb726d48Sopenharmony_cifunction frameJanksReceiver(data: unknown, res: unknown[], type: string, transfer: boolean): void {
149fb726d48Sopenharmony_ci  let frameJanks = new FrameJanks(data, transfer, res.length);
150fb726d48Sopenharmony_ci  let unitIndex: number = 1;
151fb726d48Sopenharmony_ci  let depths: unknown[] = [];
152fb726d48Sopenharmony_ci  for (let index = 0; index < res.length; index++) {
153fb726d48Sopenharmony_ci    let item = res[index];
154fb726d48Sopenharmony_ci    // @ts-ignore
155fb726d48Sopenharmony_ci    data.params.trafic === TraficEnum.ProtoBuffer && (item = item.frameData);
156fb726d48Sopenharmony_ci    // @ts-ignore
157fb726d48Sopenharmony_ci    if (!item.dur || item.dur < 0) {
158fb726d48Sopenharmony_ci      continue;
159fb726d48Sopenharmony_ci    }
160fb726d48Sopenharmony_ci    if (depths.length === 0) {
161fb726d48Sopenharmony_ci      // @ts-ignore
162fb726d48Sopenharmony_ci      item.depth = 0;
163fb726d48Sopenharmony_ci      depths[0] = item;
164fb726d48Sopenharmony_ci    } else {
165fb726d48Sopenharmony_ci      let depthIndex: number = 0;
166fb726d48Sopenharmony_ci      let isContinue: boolean = true;
167fb726d48Sopenharmony_ci      while (isContinue) {
168fb726d48Sopenharmony_ci        // @ts-ignore
169fb726d48Sopenharmony_ci        if (isIntersect(depths[depthIndex], item)) {
170fb726d48Sopenharmony_ci          if (depths[depthIndex + unitIndex] === undefined || !depths[depthIndex + unitIndex]) {
171fb726d48Sopenharmony_ci            // @ts-ignore
172fb726d48Sopenharmony_ci            item.depth = depthIndex + unitIndex;
173fb726d48Sopenharmony_ci            depths[depthIndex + unitIndex] = item;
174fb726d48Sopenharmony_ci            isContinue = false;
175fb726d48Sopenharmony_ci          }
176fb726d48Sopenharmony_ci        } else {
177fb726d48Sopenharmony_ci          // @ts-ignore
178fb726d48Sopenharmony_ci          item.depth = depthIndex;
179fb726d48Sopenharmony_ci          depths[depthIndex] = item;
180fb726d48Sopenharmony_ci          isContinue = false;
181fb726d48Sopenharmony_ci        }
182fb726d48Sopenharmony_ci        depthIndex++;
183fb726d48Sopenharmony_ci      }
184fb726d48Sopenharmony_ci    }
185fb726d48Sopenharmony_ci    setFrameJanks(frameJanks, item, index);
186fb726d48Sopenharmony_ci  }
187fb726d48Sopenharmony_ci  postFrameJanksMessage(data, transfer, frameJanks, res.length);
188fb726d48Sopenharmony_ci}
189fb726d48Sopenharmony_cifunction setFrameJanks(frameJanks: FrameJanks, itemData: unknown, index: number): void {
190fb726d48Sopenharmony_ci  // @ts-ignore
191fb726d48Sopenharmony_ci  frameJanks.id[index] = itemData.id;
192fb726d48Sopenharmony_ci  // @ts-ignore
193fb726d48Sopenharmony_ci  frameJanks.ipId[index] = itemData.ipid;
194fb726d48Sopenharmony_ci  // @ts-ignore
195fb726d48Sopenharmony_ci  frameJanks.name[index] = itemData.name;
196fb726d48Sopenharmony_ci  // @ts-ignore
197fb726d48Sopenharmony_ci  frameJanks.appDur[index] = itemData.appDur;
198fb726d48Sopenharmony_ci  // @ts-ignore
199fb726d48Sopenharmony_ci  frameJanks.dur[index] = itemData.dur;
200fb726d48Sopenharmony_ci  // @ts-ignore
201fb726d48Sopenharmony_ci  frameJanks.ts[index] = itemData.ts;
202fb726d48Sopenharmony_ci  // @ts-ignore
203fb726d48Sopenharmony_ci  frameJanks.jankTag[index] = itemData.jankTag ? itemData.jankTag : 0;
204fb726d48Sopenharmony_ci  // @ts-ignore
205fb726d48Sopenharmony_ci  frameJanks.pid[index] = itemData.pid;
206fb726d48Sopenharmony_ci  // @ts-ignore
207fb726d48Sopenharmony_ci  frameJanks.rsTs[index] = itemData.rsTs;
208fb726d48Sopenharmony_ci  // @ts-ignore
209fb726d48Sopenharmony_ci  frameJanks.rsVsync[index] = itemData.rsVsync;
210fb726d48Sopenharmony_ci  // @ts-ignore
211fb726d48Sopenharmony_ci  frameJanks.rsDur[index] = itemData.rsDur;
212fb726d48Sopenharmony_ci  // @ts-ignore
213fb726d48Sopenharmony_ci  frameJanks.rsIpId[index] = itemData.rsIpid;
214fb726d48Sopenharmony_ci  // @ts-ignore
215fb726d48Sopenharmony_ci  frameJanks.rsPid[index] = itemData.rsPid;
216fb726d48Sopenharmony_ci  // @ts-ignore
217fb726d48Sopenharmony_ci  frameJanks.rsName[index] = itemData.rsName;
218fb726d48Sopenharmony_ci  // @ts-ignore
219fb726d48Sopenharmony_ci  frameJanks.depth[index] = itemData.depth;
220fb726d48Sopenharmony_ci}
221fb726d48Sopenharmony_cifunction setResults(transfer: boolean, frameJanks: FrameJanks): unknown {
222fb726d48Sopenharmony_ci  return transfer
223fb726d48Sopenharmony_ci    ? {
224fb726d48Sopenharmony_ci        id: frameJanks.id.buffer,
225fb726d48Sopenharmony_ci        ipid: frameJanks.ipId.buffer,
226fb726d48Sopenharmony_ci        name: frameJanks.name.buffer,
227fb726d48Sopenharmony_ci        app_dur: frameJanks.appDur.buffer,
228fb726d48Sopenharmony_ci        dur: frameJanks.dur.buffer,
229fb726d48Sopenharmony_ci        ts: frameJanks.ts.buffer,
230fb726d48Sopenharmony_ci        jank_tag: frameJanks.jankTag.buffer,
231fb726d48Sopenharmony_ci        pid: frameJanks.pid.buffer,
232fb726d48Sopenharmony_ci        rs_ts: frameJanks.rsTs.buffer,
233fb726d48Sopenharmony_ci        rs_vsync: frameJanks.rsVsync.buffer,
234fb726d48Sopenharmony_ci        rs_dur: frameJanks.rsDur.buffer,
235fb726d48Sopenharmony_ci        rs_ipid: frameJanks.rsIpId.buffer,
236fb726d48Sopenharmony_ci        rs_pid: frameJanks.rsPid.buffer,
237fb726d48Sopenharmony_ci        rs_name: frameJanks.rsName.buffer,
238fb726d48Sopenharmony_ci        depth: frameJanks.depth.buffer,
239fb726d48Sopenharmony_ci      }
240fb726d48Sopenharmony_ci    : {};
241fb726d48Sopenharmony_ci}
242fb726d48Sopenharmony_cifunction postFrameJanksMessage(data: unknown, transfer: boolean, frameJanks: FrameJanks, len: number): void {
243fb726d48Sopenharmony_ci  let results = setResults(transfer, frameJanks);
244fb726d48Sopenharmony_ci  (self as unknown as Worker).postMessage(
245fb726d48Sopenharmony_ci    {
246fb726d48Sopenharmony_ci      // @ts-ignore
247fb726d48Sopenharmony_ci      id: data.id,
248fb726d48Sopenharmony_ci      // @ts-ignore
249fb726d48Sopenharmony_ci      action: data.action,
250fb726d48Sopenharmony_ci      results: results,
251fb726d48Sopenharmony_ci      len: len,
252fb726d48Sopenharmony_ci      transfer: transfer,
253fb726d48Sopenharmony_ci    },
254fb726d48Sopenharmony_ci    transfer
255fb726d48Sopenharmony_ci      ? [
256fb726d48Sopenharmony_ci          frameJanks.id.buffer,
257fb726d48Sopenharmony_ci          frameJanks.ipId.buffer,
258fb726d48Sopenharmony_ci          frameJanks.name.buffer,
259fb726d48Sopenharmony_ci          frameJanks.appDur.buffer,
260fb726d48Sopenharmony_ci          frameJanks.dur.buffer,
261fb726d48Sopenharmony_ci          frameJanks.ts.buffer,
262fb726d48Sopenharmony_ci          frameJanks.jankTag.buffer,
263fb726d48Sopenharmony_ci          frameJanks.pid.buffer,
264fb726d48Sopenharmony_ci          frameJanks.rsTs.buffer,
265fb726d48Sopenharmony_ci          frameJanks.rsVsync.buffer,
266fb726d48Sopenharmony_ci          frameJanks.rsDur.buffer,
267fb726d48Sopenharmony_ci          frameJanks.rsIpId.buffer,
268fb726d48Sopenharmony_ci          frameJanks.rsPid.buffer,
269fb726d48Sopenharmony_ci          frameJanks.rsName.buffer,
270fb726d48Sopenharmony_ci          frameJanks.depth.buffer,
271fb726d48Sopenharmony_ci        ]
272fb726d48Sopenharmony_ci      : []
273fb726d48Sopenharmony_ci  );
274fb726d48Sopenharmony_ci}
275fb726d48Sopenharmony_ciclass FrameJanks {
276fb726d48Sopenharmony_ci  id: Uint16Array;
277fb726d48Sopenharmony_ci  ipId: Uint16Array;
278fb726d48Sopenharmony_ci  name: Int32Array;
279fb726d48Sopenharmony_ci  appDur: Float64Array;
280fb726d48Sopenharmony_ci  dur: Float64Array;
281fb726d48Sopenharmony_ci  ts: Float64Array;
282fb726d48Sopenharmony_ci  jankTag: Uint16Array;
283fb726d48Sopenharmony_ci  pid: Uint16Array;
284fb726d48Sopenharmony_ci  rsTs: Float64Array;
285fb726d48Sopenharmony_ci  rsVsync: Int32Array;
286fb726d48Sopenharmony_ci  rsDur: Float64Array;
287fb726d48Sopenharmony_ci  rsIpId: Uint16Array;
288fb726d48Sopenharmony_ci  rsPid: Uint16Array;
289fb726d48Sopenharmony_ci  rsName: Int32Array;
290fb726d48Sopenharmony_ci  depth: Uint16Array;
291fb726d48Sopenharmony_ci  constructor(data: unknown, transfer: boolean, len: number) {
292fb726d48Sopenharmony_ci    // @ts-ignore
293fb726d48Sopenharmony_ci    this.id = new Uint16Array(transfer ? len : data.params.sharedArrayBuffers.id);
294fb726d48Sopenharmony_ci    // @ts-ignore
295fb726d48Sopenharmony_ci    this.ipId = new Uint16Array(transfer ? len : data.params.sharedArrayBuffers.ipid);
296fb726d48Sopenharmony_ci    // @ts-ignore
297fb726d48Sopenharmony_ci    this.name = new Int32Array(transfer ? len : data.params.sharedArrayBuffers.name);
298fb726d48Sopenharmony_ci    // @ts-ignore
299fb726d48Sopenharmony_ci    this.appDur = new Float64Array(transfer ? len : data.params.sharedArrayBuffers.app_dur);
300fb726d48Sopenharmony_ci    // @ts-ignore
301fb726d48Sopenharmony_ci    this.dur = new Float64Array(transfer ? len : data.params.sharedArrayBuffers.dur);
302fb726d48Sopenharmony_ci    // @ts-ignore
303fb726d48Sopenharmony_ci    this.ts = new Float64Array(transfer ? len : data.params.sharedArrayBuffers.ts);
304fb726d48Sopenharmony_ci    // @ts-ignore
305fb726d48Sopenharmony_ci    this.jankTag = new Uint16Array(transfer ? len : data.params.sharedArrayBuffers.jank_tag);
306fb726d48Sopenharmony_ci    // @ts-ignore
307fb726d48Sopenharmony_ci    this.pid = new Uint16Array(transfer ? len : data.params.sharedArrayBuffers.pid);
308fb726d48Sopenharmony_ci    // @ts-ignore
309fb726d48Sopenharmony_ci    this.rsTs = new Float64Array(transfer ? len : data.params.sharedArrayBuffers.rs_ts);
310fb726d48Sopenharmony_ci    // @ts-ignore
311fb726d48Sopenharmony_ci    this.rsVsync = new Int32Array(transfer ? len : data.params.sharedArrayBuffers.rs_vsync);
312fb726d48Sopenharmony_ci    // @ts-ignore
313fb726d48Sopenharmony_ci    this.rsDur = new Float64Array(transfer ? len : data.params.sharedArrayBuffers.rs_dur);
314fb726d48Sopenharmony_ci    // @ts-ignore
315fb726d48Sopenharmony_ci    this.rsIpId = new Uint16Array(transfer ? len : data.params.sharedArrayBuffers.rs_ipid);
316fb726d48Sopenharmony_ci    // @ts-ignore
317fb726d48Sopenharmony_ci    this.rsPid = new Uint16Array(transfer ? len : data.params.sharedArrayBuffers.rs_pid);
318fb726d48Sopenharmony_ci    // @ts-ignore
319fb726d48Sopenharmony_ci    this.rsName = new Int32Array(transfer ? len : data.params.sharedArrayBuffers.rs_name);
320fb726d48Sopenharmony_ci    // @ts-ignore
321fb726d48Sopenharmony_ci    this.depth = new Uint16Array(transfer ? len : data.params.sharedArrayBuffers.depth);
322fb726d48Sopenharmony_ci  }
323fb726d48Sopenharmony_ci}
324