kopia lustrzana https://github.com/ogre/habdec
81 wiersze
2.7 KiB
JavaScript
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;
|
|
}
|