summaryrefslogtreecommitdiff
path: root/gst/siren/common.c
diff options
context:
space:
mode:
Diffstat (limited to 'gst/siren/common.c')
-rw-r--r--gst/siren/common.c96
1 files changed, 60 insertions, 36 deletions
diff --git a/gst/siren/common.c b/gst/siren/common.c
index a85e6726f..b968c5b4e 100644
--- a/gst/siren/common.c
+++ b/gst/siren/common.c
@@ -28,10 +28,10 @@ float standard_deviation[64];
float deviation_inverse[64];
float region_power_table_boundary[63];
-int expected_bits_table[8] = {52, 47, 43, 37, 29, 22, 16, 0};
-int vector_dimension[8] = {2, 2, 2, 4, 4, 5, 5, 1};
-int number_of_vectors[8] = {10, 10, 10, 5, 5, 4, 4, 20};
-float dead_zone[8] = {0.3f, 0.33f, 0.36f, 0.39f, 0.42f, 0.45f, 0.5f, 0.5f};
+int expected_bits_table[8] = { 52, 47, 43, 37, 29, 22, 16, 0 };
+int vector_dimension[8] = { 2, 2, 2, 4, 4, 5, 5, 1 };
+int number_of_vectors[8] = { 10, 10, 10, 5, 5, 4, 4, 20 };
+float dead_zone[8] = { 0.3f, 0.33f, 0.36f, 0.39f, 0.42f, 0.45f, 0.5f, 0.5f };
int max_bin[8] = {
13,
@@ -41,7 +41,8 @@ int max_bin[8] = {
3,
2,
1,
- 1};
+ 1
+};
float step_size[8] = {
0.3536f,
@@ -51,7 +52,8 @@ float step_size[8] = {
1.4141999f,
2.0f,
2.8283999f,
- 2.8283999f};
+ 2.8283999f
+};
float step_size_inverse[8];
@@ -62,7 +64,9 @@ static int siren_initialized = 0;
*/
#define STEPSIZE 0.3010299957
-void siren_init() {
+void
+siren_init ()
+{
int i;
float region_power;
@@ -70,36 +74,39 @@ void siren_init() {
return;
region_size = 20;
- region_size_inverse = 1.0f/region_size;
+ region_size_inverse = 1.0f / region_size;
for (i = 0; i < 64; i++) {
- region_power = (float) pow(10, (i-24) * STEPSIZE);
- standard_deviation[i] = (float) sqrt(region_power);
+ region_power = (float) pow (10, (i - 24) * STEPSIZE);
+ standard_deviation[i] = (float) sqrt (region_power);
deviation_inverse[i] = (float) 1.0 / standard_deviation[i];
}
for (i = 0; i < 63; i++)
- region_power_table_boundary[i] = (float) pow(10, (i-24 + 0.5) * STEPSIZE);
+ region_power_table_boundary[i] =
+ (float) pow (10, (i - 24 + 0.5) * STEPSIZE);
for (i = 0; i < 8; i++)
step_size_inverse[i] = (float) 1.0 / step_size[i];
- siren_dct4_init();
- siren_rmlt_init();
+ siren_dct4_init ();
+ siren_rmlt_init ();
siren_initialized = 1;
}
-int categorize_regions(int number_of_regions, int number_of_available_bits, int *absolute_region_power_index, int *power_categories, int *category_balance) {
+int
+categorize_regions (int number_of_regions, int number_of_available_bits,
+ int *absolute_region_power_index, int *power_categories,
+ int *category_balance)
+{
int region, delta, i, temp;
int expected_number_of_code_bits;
int min, max;
int offset,
num_rate_control_possibilities,
- raw_value,
- raw_max_idx = 0,
- raw_min_idx = 0;
+ raw_value, raw_max_idx = 0, raw_min_idx = 0;
int max_rate_categories[28];
int min_rate_categories[28];
int temp_category_balances[64];
@@ -108,12 +115,14 @@ int categorize_regions(int number_of_regions, int number_of_available_bits, int
if (number_of_regions == 14) {
num_rate_control_possibilities = 16;
- if ( number_of_available_bits > 320)
- number_of_available_bits = ((number_of_available_bits - 320) * 5/8) + 320;
+ if (number_of_available_bits > 320)
+ number_of_available_bits =
+ ((number_of_available_bits - 320) * 5 / 8) + 320;
} else {
num_rate_control_possibilities = 32;
- if (number_of_regions == 28 && number_of_available_bits > 640)
- number_of_available_bits = ((number_of_available_bits - 640) * 5/8) + 640;
+ if (number_of_regions == 28 && number_of_available_bits > 640)
+ number_of_available_bits =
+ ((number_of_available_bits - 640) * 5 / 8) + 640;
}
offset = -32;
@@ -130,30 +139,34 @@ int categorize_regions(int number_of_regions, int number_of_available_bits, int
expected_number_of_code_bits += expected_bits_table[i];
}
- if (expected_number_of_code_bits >= number_of_available_bits-32)
+ if (expected_number_of_code_bits >= number_of_available_bits - 32)
offset += delta;
}
expected_number_of_code_bits = 0;
- for (region = 0; region < number_of_regions; region++) {
+ for (region = 0; region < number_of_regions; region++) {
i = (offset - absolute_region_power_index[region]) >> 1;
if (i > 7)
i = 7;
else if (i < 0)
i = 0;
- max_rate_categories[region] = min_rate_categories[region] = power_categories[region] = i;
+ max_rate_categories[region] = min_rate_categories[region] =
+ power_categories[region] = i;
expected_number_of_code_bits += expected_bits_table[i];
}
min = max = expected_number_of_code_bits;
- min_rate_ptr = max_rate_ptr = temp_category_balances + num_rate_control_possibilities;
- for (i = 0; i < num_rate_control_possibilities -1; i++) {
+ min_rate_ptr = max_rate_ptr =
+ temp_category_balances + num_rate_control_possibilities;
+ for (i = 0; i < num_rate_control_possibilities - 1; i++) {
if (min + max > number_of_available_bits * 2) {
raw_value = -99;
- for (region = number_of_regions-1; region >= 0; region--) {
+ for (region = number_of_regions - 1; region >= 0; region--) {
if (min_rate_categories[region] < 7) {
- temp = offset - absolute_region_power_index[region] - 2*min_rate_categories[region];
+ temp =
+ offset - absolute_region_power_index[region] -
+ 2 * min_rate_categories[region];
if (temp > raw_value) {
raw_value = temp;
raw_min_idx = region;
@@ -161,13 +174,17 @@ int categorize_regions(int number_of_regions, int number_of_available_bits, int
}
}
*min_rate_ptr++ = raw_min_idx;
- min += expected_bits_table[min_rate_categories[raw_min_idx] + 1] - expected_bits_table[min_rate_categories[raw_min_idx]];
+ min +=
+ expected_bits_table[min_rate_categories[raw_min_idx] + 1] -
+ expected_bits_table[min_rate_categories[raw_min_idx]];
min_rate_categories[raw_min_idx]++;
} else {
raw_value = 99;
for (region = 0; region < number_of_regions; region++) {
- if (max_rate_categories[region] > 0 ) {
- temp = offset - absolute_region_power_index[region] - 2*max_rate_categories[region];
+ if (max_rate_categories[region] > 0) {
+ temp =
+ offset - absolute_region_power_index[region] -
+ 2 * max_rate_categories[region];
if (temp < raw_value) {
raw_value = temp;
raw_max_idx = region;
@@ -176,7 +193,9 @@ int categorize_regions(int number_of_regions, int number_of_available_bits, int
}
*--max_rate_ptr = raw_max_idx;
- max += expected_bits_table[max_rate_categories[raw_max_idx] - 1] - expected_bits_table[max_rate_categories[raw_max_idx]];
+ max +=
+ expected_bits_table[max_rate_categories[raw_max_idx] - 1] -
+ expected_bits_table[max_rate_categories[raw_max_idx]];
max_rate_categories[raw_max_idx]--;
}
}
@@ -184,7 +203,7 @@ int categorize_regions(int number_of_regions, int number_of_available_bits, int
for (region = 0; region < number_of_regions; region++)
power_categories[region] = max_rate_categories[region];
- for (i = 0; i < num_rate_control_possibilities-1; i++)
+ for (i = 0; i < num_rate_control_possibilities - 1; i++)
category_balance[i] = *max_rate_ptr++;
@@ -201,7 +220,13 @@ int categorize_regions(int number_of_regions, int number_of_available_bits, int
3 : sample rate is variable and there is one for each frame
*/
-int GetSirenCodecInfo(int flag, int sample_rate, int *number_of_coefs, int *sample_rate_bits, int *rate_control_bits, int *rate_control_possibilities, int *checksum_bits, int *esf_adjustment, int *scale_factor, int *number_of_regions, int *sample_rate_code, int *bits_per_frame ) {
+int
+GetSirenCodecInfo (int flag, int sample_rate, int *number_of_coefs,
+ int *sample_rate_bits, int *rate_control_bits,
+ int *rate_control_possibilities, int *checksum_bits, int *esf_adjustment,
+ int *scale_factor, int *number_of_regions, int *sample_rate_code,
+ int *bits_per_frame)
+{
switch (flag) {
case 0:
*number_of_coefs = 320;
@@ -499,7 +524,6 @@ int GetSirenCodecInfo(int flag, int sample_rate, int *number_of_coefs, int *samp
return 6;
}
- *bits_per_frame = sample_rate / 50;
+ *bits_per_frame = sample_rate / 50;
return 0;
}
-