Таблица 11 - Синтаксис raw_data_stream ()
Синтаксис | Количество битов | Мнемоника |
raw_data_stream () | ||
{ | ||
while (data available()) { | ||
raw data block(); | ||
} | ||
} |
Таблица 12 - Синтаксис raw_data_block()
Синтаксис | Количество битов | Мнемоника |
raw_data_block() | ||
{ | ||
while ((id = id_syn_ele) != ID_END) { | 3 | uimsbf |
switch (id) { | ||
case ID_SCE: single_channel_element (); | ||
break; | ||
case ID_CPE: channel_pair_element(); | ||
break; | ||
case ID_CCE: coupling_channel_element (); | ||
break; | ||
case ID_LFE: lfe_channel_element(); | ||
break; | ||
case ID_DSE: data_stream_element(); | ||
break; | ||
case ID_PCE: program_config_element (); | ||
break; | ||
case ID FIL: } fill_element(); | ||
} byte _alignment(); | ||
} |
Таблица 13 - Синтаксис single_channel_element()
Синтаксис | Количество битов | Мнемоника |
single_channel_element() | ||
{ | ||
element_instance_tag; | 4 | uimsbf |
individual_channel_stream(0); | ||
} |
Таблица 14 - Синтаксис channel_pair_element ()
Синтаксис | Количество битов | Мнемоника |
channel_pair_element() | ||
{ | ||
element_instance_tag; | 4 | uimsbf |
common_window; | 1 | uimsbf |
if (common_window) { | ||
ics_info(); | ||
ms_mask_present; | 2 | uimsbf |
if (ms_mask_present == 1) { | ||
for (g = 0; g < num_window_groups; g++) { | ||
for (sfb = 0; sfb < max_sfb; sfb++) { | ||
ms_used[g][sfb]; | 1 | uimsbf |
} | ||
} | ||
} | ||
} | ||
individual_channel_stream(common_window); | ||
individual_channel stream(common_window); | ||
} |
Таблица 15 - Синтаксис ics_info ()
Синтаксис | Количество битов | Мнемоника |
ics_info() | ||
{ | ||
ics_reserved_bit; | 1 | bslbf |
window_sequence; | 2 | uimsbf |
window shape; | 1 | uimsbf |
if (window sequence == EIGHT SHORT SEQUENCE) { | ||
max sfb; | ||
scale factor grouping; | 4 | uimsbf |
} | 7 | uimsbf |
else { | ||
max sfb; | 6 | uimsbf |
predictor data present; | 1 | uimsbf |
if (predictor data present) { | ||
predictor reset; | 1 | uimsbf |
if (predictor reset) { | ||
predictor reset group number; | 5 | uimsbf |
} | ||
for (sfb = 0; sfb< min(max sfb, | ||
PRED SFB MAX); sfb++) { | ||
prediction used[sfb]; | 1 | uimsbf |
} | ||
} | ||
} | ||
} |
Таблица 16 - Синтаксис individual_channel_stream ()
Синтаксис | Количество битов | Мнемоника |
individual_channel_stream(common_window) | ||
{ | ||
global_gain; | 8 | uimsbf |
if (!common_window) | ||
ics_info(); | ||
section_data(); | 1 | uismbf |
scale_factor_data(); | ||
pulse_data_present; | ||
if (pulse_data_present) { | ||
pulse data(); | 1 | uimsbf |
} | ||
tns_data_present; | ||
if (tns_data_present) { | ||
tns data(); | 1 | uimsbf |
} | ||
gain_control_data_present; | ||
if (gain_control_data_present) { | ||
gain control data(); | ||
} | ||
spectral data(); | ||
} |
Таблица 17 - Синтаксис section_data()
Синтаксис | Количество битов | Мнемоника |
section_data() | ||
{ | ||
if (window_sequence == EIGHT_SHORT_SEQUENCE) | ||
sect_esc_val = (1<<3) -1; | ||
else sect_esc_val = (1<<5) -1; | ||
for (g = 0; g < num window groups; g++) { | ||
k = 0; | ||
i = 0; | ||
while (k < max_sfb) { | ||
sect_cb[g][i]; | ||
sect_len = 0; | ||
while (sect_len _incr == sect_esc_val) { | 4 | uimsbf |
sect_len += sect_esc_val; | ||
} | {3; 5} | uismbf |
sect_len += sect_len_incr; | ||
sect_start[g][i] = k; | ||
sect_end[g][i] = k+sect_len; | ||
for (sfb = k; sfb < k+sect_len; sfb++) | ||
sfb_cb[g][sfb] = sect_cb[g][i]; | ||
к += sect_len; | ||
/++; | ||
} | ||
num_sec[g] = i; | ||
} | ||
} |