Skip to content

Commit 602d636

Browse files
committed
Update medlib
1 parent 875d23a commit 602d636

File tree

4 files changed

+277
-31
lines changed

4 files changed

+277
-31
lines changed

dhn_medlib/medlib_m12.c

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -7056,7 +7056,7 @@ ui4 G_MED_type_code_from_string_m12(si1 *string)
70567056
case TIME_SERIES_DATA_FILE_TYPE_CODE_m12:
70577057
case TIME_SERIES_INDICES_FILE_TYPE_CODE_m12:
70587058
return(type.code);
7059-
default: // check tag to determine if this is a MED video data file
7059+
default:; // check tag to determine if this is a MED video data file (semicolon added for Python)
70607060
si1 name[VIDEO_DATA_BASE_FILE_NAME_BYTES_m12];
70617061

70627062
if (ext_only == TRUE_m12) // need path to do following check
@@ -36369,12 +36369,21 @@ void SHA_update_m12(SHA_CTX_m12 *ctx, const ui1 *data, si8 len)
3636936369
// MARK: STRING FUNCTIONS (STR)
3637036370
//******************************//
3637136371

36372-
si1 *STR_binary_m12(si1 *str, void *num_ptr, size_t num_bytes, si1 *byte_separator)
36372+
si1 *STR_binary_m12(si1 *str, void *num_ptr, size_t num_bytes, si1 *byte_separator, TERN_m12 prefix)
3637336373
{
36374+
ui1 *num, mask;
3637436375
si1 *c, *c2;
36375-
ui8 str_len, sep_len, byte_bits, num, mask;
36376+
si4 str_len, sep_len, byte_bits;
3637636377

36378+
#ifdef FN_DEBUG_m12
36379+
G_message_m12("%s()\n", __FUNCTION__);
36380+
#endif
3637736381

36382+
// input presumed to be little endian
36383+
// displayed high bit => low bit, left to right
36384+
// pass NULL or "" for byte_separator for no separation between bytes
36385+
// prefix will prepend string with "0b"
36386+
3637836387
if (byte_separator) {
3637936388
for (c = byte_separator - 1; *++c;);
3638036389
sep_len = (c - byte_separator);
@@ -36389,30 +36398,21 @@ si1 *STR_binary_m12(si1 *str, void *num_ptr, size_t num_bytes, si1 *byte_separat
3638936398
str = malloc_m12((size_t) str_len, __FUNCTION__, USE_GLOBAL_BEHAVIOR_m12);
3639036399
}
3639136400

36392-
switch (num_bytes) {
36393-
case 1:
36394-
num = (ui8) *((ui1 *) num_ptr);
36395-
break;
36396-
case 2:
36397-
num = (ui8) *((ui2 *) num_ptr);
36398-
break;
36399-
case 4:
36400-
num = (ui8) *((ui4 *) num_ptr);
36401-
break;
36402-
case 8:
36403-
num = (ui8) *((ui8 *) num_ptr);
36404-
break;
36401+
c = str;
36402+
if (prefix == TRUE_m12) {
36403+
*c++ = '0';
36404+
*c++ = 'b';
3640536405
}
3640636406

36407-
mask = 1 << ((num_bytes << 3) - 1);
36408-
for (c = str; num_bytes--; mask >>= 1) {
36409-
for (byte_bits = 8; byte_bits--;) {
36410-
if (num & mask)
36407+
num = (ui1 *) num_ptr + (num_bytes - 1);
36408+
for (; num_bytes--; --num) {
36409+
for (mask = 1 << 7, byte_bits = 8; byte_bits--; mask >>= 1) {
36410+
if (*num & mask)
3641136411
*c++ = '1';
3641236412
else
3641336413
*c++ = '0';
3641436414
}
36415-
if (sep_len)
36415+
if (sep_len && num_bytes)
3641636416
for (c2 = byte_separator; *c2; *c++ = *c2++);
3641736417
}
3641836418
*c = 0;

dhn_medlib/medlib_m12.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2642,7 +2642,7 @@ si8 FPS_write_m12(FILE_PROCESSING_STRUCT_m12 *fps, si8 file_offset, si8 bytes_t
26422642
//**********************************************************************************//
26432643

26442644
// Prototypes
2645-
si1 *STR_binary_m12(si1 *str, void *num_ptr, size_t num_bytes, si1 *byte_separator);
2645+
si1 *STR_binary_m12(si1 *str, void *num_ptr, size_t num_bytes, si1 *byte_separator, TERN_m12 prefix);
26462646
wchar_t *STR_char2wchar_m12(wchar_t *target, si1 *source);
26472647
ui4 STR_check_spaces_m12(si1 *string);
26482648
si4 STR_compare_m12(const void *a, const void *b);

dhn_medlib/medrec_m12.c

Lines changed: 163 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1370,6 +1370,169 @@ TERN_m12 REC_check_CSti_type_alignment_m12(ui1 *bytes)
13701370
}
13711371

13721372

1373+
//*************************************************************************************//
1374+
//***************************** HFOc: CS HFO Detection ****************************//
1375+
//*************************************************************************************//
1376+
1377+
void REC_show_HFOc_type_m12(RECORD_HEADER_m12 *record_header)
1378+
{
1379+
REC_HFOc_v11_m12 *hfoc_1;
1380+
REC_HFOc_v12_m12 *hfoc_2;
1381+
REC_HFOc_v13_m12 *hfoc_3;
1382+
1383+
#ifdef FN_DEBUG_m12
1384+
G_message_m12("%s()\n", __FUNCTION__);
1385+
#endif
1386+
1387+
// Versions 1.0-3
1388+
if (record_header->version_major == 1 && record_header->version_minor <= 3) {
1389+
switch (record_header->version_minor) {
1390+
case 0:
1391+
break;
1392+
case 1:
1393+
hfoc_1 = (REC_HFOc_v11_m12 *) ((ui1 *) record_header + RECORD_HEADER_BYTES_m12);
1394+
printf_m12("End Time: %ld\n", hfoc_1->end_time);
1395+
printf_m12("Start Frequency: %f\n", hfoc_1->start_frequency);
1396+
printf_m12("End Frequency: %f\n", hfoc_1->end_frequency);
1397+
break;
1398+
case 2:
1399+
hfoc_2 = (REC_HFOc_v12_m12 *) ((ui1 *) record_header + RECORD_HEADER_BYTES_m12);
1400+
printf_m12("End Time: %ld\n", hfoc_2->end_time);
1401+
printf_m12("Start Frequency: %f\n", hfoc_2->start_frequency);
1402+
printf_m12("End Frequency: %f\n", hfoc_2->end_frequency);
1403+
printf_m12("Start Times: %ld, %ld, %ld, %ld\n", hfoc_2->start_times[0], hfoc_2->start_times[1], hfoc_2->start_times[2], hfoc_2->start_times[3]);
1404+
printf_m12("End Times: %ld, %ld, %ld, %ld\n", hfoc_2->end_times[0], hfoc_2->end_times[1], hfoc_2->end_times[2], hfoc_2->end_times[3]);
1405+
printf_m12("Combinations: %f, %f, %f, %f\n", hfoc_2->combinations[0], hfoc_2->combinations[1], hfoc_2->combinations[2], hfoc_2->combinations[3]);
1406+
break;
1407+
case 3:
1408+
hfoc_3 = (REC_HFOc_v13_m12 *) ((ui1 *) record_header + RECORD_HEADER_BYTES_m12);
1409+
printf_m12("End Time: %ld\n", hfoc_3->end_time);
1410+
printf_m12("Start Frequency: %f\n", hfoc_3->start_frequency);
1411+
printf_m12("End Frequency: %f\n", hfoc_3->end_frequency);
1412+
printf_m12("Start Times: %ld, %ld, %ld, %ld\n", hfoc_3->start_times[0], hfoc_3->start_times[1], hfoc_3->start_times[2], hfoc_3->start_times[3]);
1413+
printf_m12("End Times: %ld, %ld, %ld, %ld\n", hfoc_3->end_times[0], hfoc_3->end_times[1], hfoc_3->end_times[2], hfoc_3->end_times[3]);
1414+
printf_m12("Combinations: %f, %f, %f, %f\n", hfoc_3->combinations[0], hfoc_3->combinations[1], hfoc_3->combinations[2], hfoc_3->combinations[3]);
1415+
printf_m12("Amplitudes: %f, %f, %f, %f\n", hfoc_3->amplitudes[0], hfoc_3->amplitudes[1], hfoc_3->amplitudes[2], hfoc_3->amplitudes[3]);
1416+
printf_m12("Frequency Dominances: %f, %f, %f, %f\n", hfoc_3->frequency_dominances[0], hfoc_3->frequency_dominances[1], hfoc_3->frequency_dominances[2], hfoc_3->frequency_dominances[3]);
1417+
printf_m12("Products: %f, %f, %f, %f\n", hfoc_3->products[0], hfoc_3->products[1], hfoc_3->products[2], hfoc_3->products[3]);
1418+
printf_m12("Cycles: %f, %f, %f, %f\n", hfoc_3->cycles[0], hfoc_3->cycles[1], hfoc_3->cycles[2], hfoc_3->cycles[3]);
1419+
break;
1420+
}
1421+
1422+
}
1423+
// Unrecognized record version
1424+
else {
1425+
G_error_message_m12("%s(): Unrecognized HFOc Record version (%hhd.%hhd)\n", __FUNCTION__, record_header->version_major, record_header->version_minor);
1426+
}
1427+
1428+
return;
1429+
}
1430+
1431+
1432+
TERN_m12 REC_check_HFOc_type_alignment_m12(ui1 *bytes)
1433+
{
1434+
TERN_m12 free_flag = FALSE_m12;
1435+
ui1 version;
1436+
REC_HFOc_v11_m12 *hfoc_1;
1437+
REC_HFOc_v12_m12 *hfoc_2;
1438+
REC_HFOc_v13_m12 *hfoc_3;
1439+
1440+
#ifdef FN_DEBUG_m12
1441+
G_message_m12("%s()\n", __FUNCTION__);
1442+
#endif
1443+
1444+
// check overall size
1445+
if (sizeof(REC_HFOc_v11_m12) != REC_HFOc_v11_BYTES_m12) {
1446+
version = 1;
1447+
goto REC_HFOc_NOT_ALIGNED_m12;
1448+
}
1449+
if (sizeof(REC_HFOc_v12_m12) != REC_HFOc_v12_BYTES_m12) {
1450+
version = 2;
1451+
goto REC_HFOc_NOT_ALIGNED_m12;
1452+
}
1453+
if (sizeof(REC_HFOc_v13_m12) != REC_HFOc_v13_BYTES_m12) {
1454+
version = 3;
1455+
goto REC_HFOc_NOT_ALIGNED_m12;
1456+
}
1457+
1458+
// check fields
1459+
if (bytes == NULL) {
1460+
bytes = (ui1 *) malloc(REC_HFOc_v13_BYTES_m12);
1461+
free_flag = TRUE_m12;
1462+
}
1463+
1464+
// version 1.1
1465+
version = 1;
1466+
hfoc_1 = (REC_HFOc_v11_m12 *) bytes;
1467+
if (&hfoc_1->end_time != (si8 *) (bytes + REC_HFOc_v11_END_TIME_OFFSET_m12))
1468+
goto REC_HFOc_NOT_ALIGNED_m12;
1469+
if (&hfoc_1->start_frequency != (sf4 *) (bytes + REC_HFOc_v11_START_FREQUENCY_OFFSET_m12))
1470+
goto REC_HFOc_NOT_ALIGNED_m12;
1471+
if (&hfoc_1->end_frequency != (sf4 *) (bytes + REC_HFOc_v11_END_FREQUENCY_OFFSET_m12))
1472+
goto REC_HFOc_NOT_ALIGNED_m12;
1473+
1474+
// version 1.2
1475+
version = 2;
1476+
hfoc_2 = (REC_HFOc_v12_m12 *) bytes;
1477+
if (&hfoc_2->end_time != (si8 *) (bytes + REC_HFOc_v12_END_TIME_OFFSET_m12))
1478+
goto REC_HFOc_NOT_ALIGNED_m12;
1479+
if (&hfoc_2->start_frequency != (sf4 *) (bytes + REC_HFOc_v12_START_FREQUENCY_OFFSET_m12))
1480+
goto REC_HFOc_NOT_ALIGNED_m12;
1481+
if (&hfoc_2->end_frequency != (sf4 *) (bytes + REC_HFOc_v12_END_FREQUENCY_OFFSET_m12))
1482+
goto REC_HFOc_NOT_ALIGNED_m12;
1483+
if (&hfoc_2->start_times != (si8 (*)[REC_HFOc_NUMBER_OF_BANDS_m12]) (bytes + REC_HFOc_v12_START_TIMES_OFFSET_m12))
1484+
goto REC_HFOc_NOT_ALIGNED_m12;
1485+
if (&hfoc_2->end_times != (si8 (*)[REC_HFOc_NUMBER_OF_BANDS_m12]) (bytes + REC_HFOc_v12_END_TIMES_OFFSET_m12))
1486+
goto REC_HFOc_NOT_ALIGNED_m12;
1487+
if (&hfoc_2->combinations != (sf4 (*)[REC_HFOc_NUMBER_OF_BANDS_m12]) (bytes + REC_HFOc_v12_COMBINATIONS_OFFSET_m12))
1488+
goto REC_HFOc_NOT_ALIGNED_m12;
1489+
1490+
// version 1.3
1491+
version = 3;
1492+
hfoc_3 = (REC_HFOc_v13_m12 *) bytes;
1493+
if (&hfoc_3->end_time != (si8 *) (bytes + REC_HFOc_v13_END_TIME_OFFSET_m12))
1494+
goto REC_HFOc_NOT_ALIGNED_m12;
1495+
if (&hfoc_3->start_frequency != (sf4 *) (bytes + REC_HFOc_v13_START_FREQUENCY_OFFSET_m12))
1496+
goto REC_HFOc_NOT_ALIGNED_m12;
1497+
if (&hfoc_3->end_frequency != (sf4 *) (bytes + REC_HFOc_v13_END_FREQUENCY_OFFSET_m12))
1498+
goto REC_HFOc_NOT_ALIGNED_m12;
1499+
if (&hfoc_3->start_times != (si8 (*)[REC_HFOc_NUMBER_OF_BANDS_m12]) (bytes + REC_HFOc_v13_START_TIMES_OFFSET_m12))
1500+
goto REC_HFOc_NOT_ALIGNED_m12;
1501+
if (&hfoc_3->end_times != (si8 (*)[REC_HFOc_NUMBER_OF_BANDS_m12]) (bytes + REC_HFOc_v13_END_TIMES_OFFSET_m12))
1502+
goto REC_HFOc_NOT_ALIGNED_m12;
1503+
if (&hfoc_3->combinations != (sf4 (*)[REC_HFOc_NUMBER_OF_BANDS_m12]) (bytes + REC_HFOc_v13_COMBINATIONS_OFFSET_m12))
1504+
goto REC_HFOc_NOT_ALIGNED_m12;
1505+
if (&hfoc_3->amplitudes != (sf4 (*)[REC_HFOc_NUMBER_OF_BANDS_m12]) (bytes + REC_HFOc_v13_AMPLITUDES_OFFSET_m12))
1506+
goto REC_HFOc_NOT_ALIGNED_m12;
1507+
if (&hfoc_3->frequency_dominances != (sf4 (*)[REC_HFOc_NUMBER_OF_BANDS_m12]) (bytes + REC_HFOc_v13_FREQUENCY_DOMINANCES_OFFSET_m12))
1508+
goto REC_HFOc_NOT_ALIGNED_m12;
1509+
if (&hfoc_3->products != (sf4 (*)[REC_HFOc_NUMBER_OF_BANDS_m12]) (bytes + REC_HFOc_v13_PRODUCTS_OFFSET_m12))
1510+
goto REC_HFOc_NOT_ALIGNED_m12;
1511+
if (&hfoc_3->cycles != (sf4 (*)[REC_HFOc_NUMBER_OF_BANDS_m12]) (bytes + REC_HFOc_v13_CYCLES_OFFSET_m12))
1512+
goto REC_HFOc_NOT_ALIGNED_m12;
1513+
1514+
// aligned
1515+
if (free_flag == TRUE_m12)
1516+
free((void *) bytes);
1517+
1518+
if (globals_m12->verbose == TRUE_m12)
1519+
printf_m12("%s(): all REC_HFOc_v1x_m12 structures are aligned\n", __FUNCTION__);
1520+
1521+
return(TRUE_m12);
1522+
1523+
// not aligned
1524+
REC_HFOc_NOT_ALIGNED_m12:
1525+
1526+
if (free_flag == TRUE_m12)
1527+
free((void *) bytes);
1528+
1529+
G_error_message_m12("%s(): REC_HFOc_v1%hhu_m12 structure is NOT aligned\n", __FUNCTION__, version);
1530+
1531+
return(FALSE_m12);
1532+
1533+
}
1534+
1535+
13731536
//*************************************************************************************//
13741537
//******************************** New Record Type ********************************//
13751538
//*************************************************************************************//

dhn_medlib/medrec_m12.h

Lines changed: 92 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -133,11 +133,10 @@ TERN_m12 REC_check_structure_alignments_m12(ui1 *bytes);
133133
// Constants
134134
#define REC_Term_TYPE_STRING_m12 "Term" // ascii[4]
135135
#define REC_Term_TYPE_CODE_m12 (ui4) 0x6d726554 // ui4 (little endian)
136-
// #define REC_Tern_TYPE_CODE_m12 (ui4) 0x5465726d // ui4 (big endian)
136+
// #define REC_Term_TYPE_CODE_m12 (ui4) 0x5465726d // ui4 (big endian)
137137

138-
// If there are any records, there is also a terminal record index
139-
// in record indices files
140-
// with the following header values, and no body
138+
// If there are any records, there is an additional a terminal record index
139+
// This is for terminal index only, there is no corresponding "Term" record data entry
141140
// File Offset = record data file length
142141
// Start Time = segment end μUTC + 1
143142
// Type String = REC_Term_TYPE_STRING_m12
@@ -199,11 +198,10 @@ TERN_m12 REC_check_structure_alignments_m12(ui1 *bytes);
199198
#define REC_Sgmt_v11_END_FRAME_NUMBER_NO_ENTRY_m12 FRAME_NUMBER_NO_ENTRY_m12
200199
#define REC_Sgmt_v11_SEGMENT_NUMBER_OFFSET_m12 24 // si4
201200
#define REC_Sgmt_v11_SEGMENT_NUMBER_NO_ENTRY_m12 SEGMENT_NUMBER_NO_ENTRY_m12
202-
#define REC_Sgmt_v11_PAD_OFFSET_m12 28 // ui1
203-
#define REC_Sgmt_v11_SEGMENT_DESCRIPTION_OFFSET_m12 REC_Sgmt_v11_PAD_OFFSET_m12
204-
#define REC_Sgmt_v11_PAD_BYTES_m12 4
205-
#define REC_Sgmt_v11_SAMPLING_FREQUENCY_VARIABLE_m12 SAMPLE_NUMBER_NO_ENTRY_m12
206-
#define REC_Sgmt_v11_FRAME_RATE_VARIABLE_m12 FRAME_NUMBER_NO_ENTRY_m12
201+
#define REC_Sgmt_v11_ACQUISITION_CHANNEL_NUMBER_OFFSET_m12 28 // si4
202+
#define REC_Sgmt_v11_ACQUISITION_CHANNEL_NUMBER_NO_ENTRY_m12 CHANNEL_NUMBER_NO_ENTRY_m12
203+
#define REC_Sgmt_v11_ACQUISITION_CHANNEL_NUMBER_ALL_CHANNELS_m12 CHANNEL_NUMBER_ALL_CHANNELS_m12
204+
#define REC_Sgmt_v11_SEGMENT_DESCRIPTION_OFFSET_m12 REC_Sgmt_v11_BYTES_m12
207205

208206
// Structures
209207
// REC_Sgmt_v11_m12 defined in medlib_m12.h due to codependency
@@ -614,5 +612,90 @@ TERN_m12 REC_check_CSti_type_alignment_m12(ui1 *bytes);
614612

615613

616614

615+
//*************************************************************************************//
616+
//****************************** HFOc: CS HFO Detection ***************************//
617+
//*************************************************************************************//
618+
619+
// Constants
620+
#define REC_HFOc_TYPE_STRING_m12 "HFOc" // ascii[4]
621+
#define REC_HFOc_TYPE_CODE_m12 (ui4) 0x634F4648 // ui4 (little endian)
622+
// #define REC_HFOc_TYPE_CODE_m12 (ui4) 0x48464F63 // ui4 (big endian)
623+
624+
// CS HFO bands
625+
#define REC_HFOc_NUMBER_OF_BANDS_m12 4
626+
#define REC_HFOc_BAND_STARTS_m12 {44, 73, 120, 197}
627+
#define REC_HFOc_BAND_CENTERS_m12 {73, 120, 197, 326}
628+
#define REC_HFOc_BAND_STOPS_m12 {120, 197, 326, 537}
629+
630+
// Version 1.0 (onset time only)
631+
#define REC_HFOc_v10_BYTES_m12 0
632+
633+
// Version 1.1 (minimal info)
634+
#define REC_HFOc_v11_BYTES_m12 16
635+
#define REC_HFOc_v11_END_TIME_OFFSET_m12 0 // si8
636+
#define REC_HFOc_v11_START_FREQUENCY_OFFSET_m12 8 // sf4
637+
#define REC_HFOc_v11_END_FREQUENCY_OFFSET_m12 12 // sf4
638+
639+
// Version 1.2 (standard info)
640+
#define REC_HFOc_v12_BYTES_m12 96
641+
#define REC_HFOc_v12_END_TIME_OFFSET_m12 REC_HFOc_v11_END_TIME_OFFSET_m12
642+
#define REC_HFOc_v12_START_FREQUENCY_OFFSET_m12 REC_HFOc_v11_START_FREQUENCY_OFFSET_m12
643+
#define REC_HFOc_v12_END_FREQUENCY_OFFSET_m12 REC_HFOc_v11_END_FREQUENCY_OFFSET_m12
644+
#define REC_HFOc_v12_START_TIMES_OFFSET_m12 16 // si8[4]
645+
#define REC_HFOc_v12_END_TIMES_OFFSET_m12 48 // si8[4]
646+
#define REC_HFOc_v12_COMBINATIONS_OFFSET_m12 80 // sf4[4]
647+
648+
// Version 1.3 (maximal info)
649+
#define REC_HFOc_v13_BYTES_m12 160
650+
#define REC_HFOc_v13_END_TIME_OFFSET_m12 REC_HFOc_v12_END_TIME_OFFSET_m12
651+
#define REC_HFOc_v13_START_FREQUENCY_OFFSET_m12 REC_HFOc_v12_START_FREQUENCY_OFFSET_m12
652+
#define REC_HFOc_v13_END_FREQUENCY_OFFSET_m12 REC_HFOc_v12_END_FREQUENCY_OFFSET_m12
653+
#define REC_HFOc_v13_START_TIMES_OFFSET_m12 REC_HFOc_v12_START_TIMES_OFFSET_m12
654+
#define REC_HFOc_v13_END_TIMES_OFFSET_m12 REC_HFOc_v12_END_TIMES_OFFSET_m12
655+
#define REC_HFOc_v13_COMBINATIONS_OFFSET_m12 REC_HFOc_v12_COMBINATIONS_OFFSET_m12
656+
#define REC_HFOc_v13_AMPLITUDES_OFFSET_m12 96 // sf4[4]
657+
#define REC_HFOc_v13_FREQUENCY_DOMINANCES_OFFSET_m12 112 // sf4[4]
658+
#define REC_HFOc_v13_PRODUCTS_OFFSET_m12 128 // sf4[4]
659+
#define REC_HFOc_v13_CYCLES_OFFSET_m12 144 // sf4[4]
660+
661+
// Structures
662+
663+
// version 1.1
664+
typedef struct {
665+
si8 end_time; // conglomerate end time
666+
sf4 start_frequency; // lowest frequency in detection bands
667+
sf4 end_frequency; // highest frequency in detection bands
668+
} REC_HFOc_v11_m12;
669+
670+
// version 1.2
671+
typedef struct {
672+
si8 end_time; // conglomerate end time
673+
sf4 start_frequency; // lowest frequency in detection bands
674+
sf4 end_frequency; // highest frequency in detection bands
675+
si8 start_times[REC_HFOc_NUMBER_OF_BANDS_m12];
676+
si8 end_times[REC_HFOc_NUMBER_OF_BANDS_m12];
677+
sf4 combinations[REC_HFOc_NUMBER_OF_BANDS_m12]; // normalized combination scores (0 - 1)
678+
} REC_HFOc_v12_m12;
679+
680+
// version 1.3
681+
typedef struct {
682+
si8 end_time; // conglomerate end time
683+
sf4 start_frequency; // lowest frequency in detection bands
684+
sf4 end_frequency; // highest frequency in detection bands
685+
si8 start_times[REC_HFOc_NUMBER_OF_BANDS_m12];
686+
si8 end_times[REC_HFOc_NUMBER_OF_BANDS_m12];
687+
sf4 combinations[REC_HFOc_NUMBER_OF_BANDS_m12]; // normalized combination scores (0 - 1)
688+
sf4 amplitudes[REC_HFOc_NUMBER_OF_BANDS_m12]; // normalized amplitude scores (0 - 1)
689+
sf4 frequency_dominances[REC_HFOc_NUMBER_OF_BANDS_m12]; // normalized frequency dominance scores (0 - 1)
690+
sf4 products[REC_HFOc_NUMBER_OF_BANDS_m12]; // normalized product scores (0 - 1)
691+
sf4 cycles[REC_HFOc_NUMBER_OF_BANDS_m12]; // normalized cycles scores (0 - 1)
692+
} REC_HFOc_v13_m12;
693+
694+
// Prototypes
695+
void REC_show_HFOc_type_m12(RECORD_HEADER_m12 *record_header);
696+
TERN_m12 REC_check_HFOc_type_alignment_m12(ui1 *bytes);
697+
698+
699+
617700
#endif // MEDREC_IN_m12
618701

0 commit comments

Comments
 (0)