habdec/code/webClient/js/NetTransport.js

81 wiersze
2.7 KiB
JavaScript

function DecodeSpectrum(i_buffer, i_offset)
{
var header =
{
header_size_ : 0, // int32_t
noise_floor_ : 0, // float
noise_variance_ : 0, // float
sampling_rate_: 0, // float
shift_ : 0, // float
peak_left_ : 0, // int32_t
peak_right_ : 0, // int32_t
peak_left_valid_ : 0, // int32_t
peak_right_valid_ : 0, // int32_t
min_ : 0, // float
max_ : 0, // float
type_size_ : 0, // int32_t. value:s 1/2/4 for uint8 uint16 float32
size_ : 0 // int32_t
};
var dv = new DataView(i_buffer, i_offset);
var offset = 0;
header.header_size_ = dv.getInt32 (offset, true); offset += 4;
header.noise_floor_ = dv.getFloat32 (offset, true); offset += 4;
header.noise_variance_ = dv.getFloat32 (offset, true); offset += 4;
header.sampling_rate_= dv.getFloat32 (offset, true); offset += 4;
header.shift_ = dv.getFloat32 (offset, true); offset += 4;
header.peak_left_ = dv.getInt32 (offset, true); offset += 4;
header.peak_right_ = dv.getInt32 (offset, true); offset += 4;
header.peak_left_valid_= dv.getInt32 (offset, true); offset += 4;
header.peak_right_valid_= dv.getInt32 (offset, true); offset += 4;
header.min_ = dv.getFloat32 (offset, true); offset += 4;
header.max_ = dv.getFloat32 (offset, true); offset += 4;
header.type_size_ = dv.getInt32 (offset, true); offset += 4;
header.size_ = dv.getInt32 (offset, true); offset += 4;
// add data
if(header.type_size_ == 1) // 8 bit char
header.values_ = new Uint8Array( i_buffer, offset, header.size_);
else if(header.type_size_ == 2) // uint16_t
header.values_ = new Uint16Array( i_buffer, offset, header.size_);
else if(header.type_size_ == 4) // 32float
header.values_ = new Float32Array( i_buffer, offset, header.size_);
return header;
}
function DecodeDemod(i_buffer, i_offset)
{
var header =
{
header_size_ : 0, // int32_t
min_ : 0, // float
max_ : 0, // float
type_size_ : 0, // int32_t. value:s 1/2/4 for uint8 uint16 float32
size_ : 0 // int32_t
};
var dv = new DataView(i_buffer, i_offset);
var offset = 0;
header.header_size_ = dv.getInt32 (offset, true); offset += 4;
header.min_ = dv.getFloat32 (offset, true); offset += 4;
header.max_ = dv.getFloat32 (offset, true); offset += 4;
header.type_size_ = dv.getInt32 (offset, true); offset += 4;
header.size_ = dv.getInt32 (offset, true); offset += 4;
// add data
if(header.type_size_ == 1) // 8 bit char
header.values_ = new Uint8Array( i_buffer, offset, header.size_);
else if(header.type_size_ == 2) // uint16_t
header.values_ = new Uint16Array( i_buffer, offset, header.size_);
else if(header.type_size_ == 4) // 32float
header.values_ = new Float32Array( i_buffer, offset, header.size_);
return header;
}