123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- class Std
- {
- constructor()
- {}
- static memmem(data1, data1Offset, data2)
- {
- for (let i = 0; i <= data1.byteLength - data2.byteLength - data1Offset; ++i)
- {
- let j = 0;
- for (; j != data2.byteLength; ++j)
- {
- if(data1[i + j + data1Offset] != data2[j])
- {
- break;
- }
- }
- if(j >= data2.byteLength)
- {
- return i + data1Offset;
- }
- }
- return -1;
- }
- static memcmp(data1, data1Offset, data2)
- {
- for(let i = 0; i != data2.byteLength; ++i)
- {
- if(data1[i + data1Offset] != data2[i])
- {
- return -1;
- }
- }
- return 0;
- }
- static memcpy(data1, data1Offset, data2, data2Begin, data2End)
- {
- data1.set(data2.subarray(data2Begin, data2End), data1Offset);
- }
- static milliSecondTime()
- {
- return new Date().getTime();
- }
- static shortToFloatData(input)
- {
- let inputSamples = input.length;
- let output = new Float32Array(inputSamples);
- for(let i = 0; i != inputSamples; ++i)
- {
- output[i] = input[i] / 32768;
- }
- return output;
- }
- static floatToShortData(input)
- {
- let inputSamples = input.length;
- let output = new Int16Array(inputSamples);
- for(let i = 0; i != inputSamples; ++i)
- {
- output[i] = input[i] * 32768;
- }
- return output;
- }
- static downsampleBuffer(buffer, rate, sampleRate)
- {
- if(rate == sampleRate)
- {
- return buffer;
- }
- else if(rate > sampleRate)
- {
- throw "rate > sampleRate error !!";
- }
- let sampleRateRatio = sampleRate / rate;
- let newLength = Math.ceil(buffer.length / sampleRateRatio) & 0xFFFC;
- let result = new Float32Array(newLength);
- let offsetResult = 0;
- let offsetBuffer = 0;
- while (offsetResult != result.length)
- {
- let nextOffsetBuffer = offsetBuffer + sampleRateRatio;
- let accum = 0;
- let count = 0;
- let currentOffset = Math.ceil(offsetBuffer);
- let currentNextOffset = Math.ceil(nextOffsetBuffer);
- for (let i = currentOffset; i != currentNextOffset && i != buffer.length; ++i)
- {
- accum += buffer[i];
- ++count;
- }
- result[offsetResult] = accum / count;
- ++offsetResult;
- offsetBuffer = nextOffsetBuffer;
- }
- return result;
- }
- }
- class Result
- {
- constructor(data, type, time, errorCode, duration = 20)
- {
- this.data = data;
- this.type = type;
- this.time = time;
- this.duration = duration;
- this.errorCode = errorCode;
- }
- static makeErrorResult(errorCode)
- {
- return new Result(null, -1, -1, errorCode);
- }
- }
- Result.ErrorCode = class
- {
- constructor()
- {}
- }
- Result.ErrorCode.SUCCESS = 0;
- Result.ErrorCode.PARAM_ERROR = 1000;
- Result.ErrorCode.PARAM_CHANGE = 2000;
- Result.ErrorCode.FAIL = 3000;
- Result.ErrorCode.NO_INIT_ERROR = Result.ErrorCode.FAIL + 1;
- Result.ErrorCode.CACHE_MAX_ERROR = Result.ErrorCode.FAIL + 2;
- Result.Type = class
- {
- constructor()
- {}
- }
- Result.Type.H264_I_FRAME = 0;
- Result.Type.H264_P_FRAME = 1;
- Result.Type.H264_B_FRAME = 2;
- Result.Type.AUDIO = 3;
- Result.Type.TRANS_DATA = 4;
- Result.Type.FMP4_HEAD = 5;
- Result.Type.FMP4_BODY = 6;
- class AudioCoder
- {
- constructor(wasm, importObj)
- {
- if(importObj.memoryBase < 102400)
- {
- throw new Error("too small");
- }
- this._importObj = importObj;
- this._wasm = wasm;
- this._memory = new Uint8Array(this._importObj.env.memory.buffer);
- }
- _copyToMemory(data)
- {
-
- if(data.byteLength > (this._importObj.env.memoryBase >>> 6))
- {
- throw new Error("overflow");
- }
- this._memory.set(new Uint8Array(data.buffer, data.byteOffset, data.byteLength));
- }
- }
|