3424 {
3425
3426 int tab3 = 0;
3427 int sblimit = 0;
3428
3432 sblimit = tab3 & 63;
3433 tab3 >>= 6;
3434
3435 if (self->
bound > sblimit) {
3436 self->
bound = sblimit;
3437 }
3438
3439
3440 for (
int sb = 0; sb < self->
bound; sb++) {
3443 }
3444
3445 for (
int sb = self->
bound; sb < sblimit; sb++) {
3449 }
3450
3451
3453 for (int sb = 0; sb < sblimit; sb++) {
3454 for (int ch = 0; ch < channels; ch++) {
3457 }
3458 }
3461 }
3462 }
3463
3464
3465 for (int sb = 0; sb < sblimit; sb++) {
3466 for (int ch = 0; ch < channels; ch++) {
3470 case 0:
3474 break;
3475 case 1:
3476 sf[0] =
3479 break;
3480 case 2:
3481 sf[0] =
3482 sf[1] =
3484 break;
3485 case 3:
3487 sf[1] =
3489 break;
3490 }
3491 }
3492 }
3497 }
3498 }
3499
3500
3501 int out_pos = 0;
3502 for (int part = 0; part < 3; part++) {
3503 for (int granule = 0; granule < 4; granule++) {
3504
3505
3506 for (
int sb = 0; sb < self->
bound; sb++) {
3509 }
3510 for (
int sb = self->
bound; sb < sblimit; sb++) {
3515 }
3516 for (int sb = sblimit; sb < 32; sb++) {
3517 self->
sample[0][sb][0] = 0;
3518 self->
sample[0][sb][1] = 0;
3519 self->
sample[0][sb][2] = 0;
3520 self->
sample[1][sb][0] = 0;
3521 self->
sample[1][sb][1] = 0;
3522 self->
sample[1][sb][2] = 0;
3523 }
3524
3525
3526 for (int p = 0; p < 3; p++) {
3527
3529
3530 for (int ch = 0; ch < 2; ch++) {
3532
3533
3535
3536 int d_index = 512 - (self->
v_pos >> 1);
3537 int v_index = (self->
v_pos % 128) >> 1;
3538 while (v_index < 1024) {
3539 for (int i = 0; i < 32; ++i) {
3540 self->
U[i] += self->
D[d_index++] * self->
V[ch][v_index++];
3541 }
3542
3543 v_index += 128 - 32;
3544 d_index += 64 - 32;
3545 }
3546
3547 d_index -= (512 - 32);
3548 v_index = (128 - 32 + 1024) - v_index;
3549 while (v_index < 1024) {
3550 for (int i = 0; i < 32; ++i) {
3551 self->
U[i] += self->
D[d_index++] * self->
V[ch][v_index++];
3552 }
3553
3554 v_index += 128 - 32;
3555 d_index += 64 - 32;
3556 }
3557
3558
3559 #ifdef PLM_AUDIO_SEPARATE_CHANNELS
3560 float *out_channel = ch == 0
3563 for (int j = 0; j < 32; j++) {
3564 out_channel[out_pos + j] = self->
U[j] / -1090519040.0f;
3565 }
3566 #else
3567 for (int j = 0; j < 32; j++) {
3569 self->
U[j] / -1090519040.0f;
3570 }
3571 #endif
3572 }
3573 out_pos += 32;
3574 }
3575
3576 }
3577 }
3578
3580}
void plm_audio_idct36(int s[32][3], int ss, float *d, int dp) FL_NOEXCEPT
int plm_buffer_read(plm_buffer_t *self, int count) FL_NOEXCEPT
static const int PLM_AUDIO_MODE_MONO
static const uint8_t QUANT_LUT_STEP_2[3][3]
void plm_audio_read_samples(plm_audio_t *self, int ch, int sb, int part) FL_NOEXCEPT
void plm_buffer_align(plm_buffer_t *self) FL_NOEXCEPT
const plm_quantizer_spec_t * plm_audio_read_allocation(plm_audio_t *self, int sb, int tab3) FL_NOEXCEPT
static const uint8_t PLM_AUDIO_QUANT_LUT_STEP_1[2][16]
float interleaved[PLM_AUDIO_SAMPLES_PER_FRAME *2]
const plm_quantizer_spec_t * allocation[2][32]
uint8_t scale_factor_info[2][32]
int scale_factor[2][32][3]
void * memset(void *s, int c, size_t n) FL_NOEXCEPT