Lines Matching refs:st
333 static int resampler_basic_direct_single(SpeexResamplerState *st, spx_uint32_t channel_index, const… in resampler_basic_direct_single() argument
335 const int N = st->filt_len; in resampler_basic_direct_single()
337 int last_sample = st->last_sample[channel_index]; in resampler_basic_direct_single()
338 spx_uint32_t samp_frac_num = st->samp_frac_num[channel_index]; in resampler_basic_direct_single()
339 const spx_word16_t *sinc_table = st->sinc_table; in resampler_basic_direct_single()
340 const int out_stride = st->out_stride; in resampler_basic_direct_single()
341 const int int_advance = st->int_advance; in resampler_basic_direct_single()
342 const int frac_advance = st->frac_advance; in resampler_basic_direct_single()
343 const spx_uint32_t den_rate = st->den_rate; in resampler_basic_direct_single()
383 st->last_sample[channel_index] = last_sample; in resampler_basic_direct_single()
384 st->samp_frac_num[channel_index] = samp_frac_num; in resampler_basic_direct_single()
391 static int resampler_basic_direct_double(SpeexResamplerState *st, spx_uint32_t channel_index, const… in resampler_basic_direct_double() argument
393 const int N = st->filt_len; in resampler_basic_direct_double()
395 int last_sample = st->last_sample[channel_index]; in resampler_basic_direct_double()
396 spx_uint32_t samp_frac_num = st->samp_frac_num[channel_index]; in resampler_basic_direct_double()
397 const spx_word16_t *sinc_table = st->sinc_table; in resampler_basic_direct_double()
398 const int out_stride = st->out_stride; in resampler_basic_direct_double()
399 const int int_advance = st->int_advance; in resampler_basic_direct_double()
400 const int frac_advance = st->frac_advance; in resampler_basic_direct_double()
401 const spx_uint32_t den_rate = st->den_rate; in resampler_basic_direct_double()
434 st->last_sample[channel_index] = last_sample; in resampler_basic_direct_double()
435 st->samp_frac_num[channel_index] = samp_frac_num; in resampler_basic_direct_double()
440 static int resampler_basic_interpolate_single(SpeexResamplerState *st, spx_uint32_t channel_index, … in resampler_basic_interpolate_single() argument
442 const int N = st->filt_len; in resampler_basic_interpolate_single()
444 int last_sample = st->last_sample[channel_index]; in resampler_basic_interpolate_single()
445 spx_uint32_t samp_frac_num = st->samp_frac_num[channel_index]; in resampler_basic_interpolate_single()
446 const int out_stride = st->out_stride; in resampler_basic_interpolate_single()
447 const int int_advance = st->int_advance; in resampler_basic_interpolate_single()
448 const int frac_advance = st->frac_advance; in resampler_basic_interpolate_single()
449 const spx_uint32_t den_rate = st->den_rate; in resampler_basic_interpolate_single()
456 const int offset = samp_frac_num*st->oversample/st->den_rate; in resampler_basic_interpolate_single()
458 …const spx_word16_t frac = PDIV32(SHL32((samp_frac_num*st->oversample) % st->den_rate,15),st->den_r… in resampler_basic_interpolate_single()
460 … const spx_word16_t frac = ((float)((samp_frac_num*st->oversample) % st->den_rate))/st->den_rate; in resampler_basic_interpolate_single()
471 accum[0] += MULT16_16(curr_in,st->sinc_table[4+(j+1)*st->oversample-offset-2]); in resampler_basic_interpolate_single()
472 accum[1] += MULT16_16(curr_in,st->sinc_table[4+(j+1)*st->oversample-offset-1]); in resampler_basic_interpolate_single()
473 accum[2] += MULT16_16(curr_in,st->sinc_table[4+(j+1)*st->oversample-offset]); in resampler_basic_interpolate_single()
474 accum[3] += MULT16_16(curr_in,st->sinc_table[4+(j+1)*st->oversample-offset+1]); in resampler_basic_interpolate_single()
482 …sum = interpolate_product_single(iptr, st->sinc_table + st->oversample + 4 - offset - 2, N, st->ov… in resampler_basic_interpolate_single()
495 st->last_sample[channel_index] = last_sample; in resampler_basic_interpolate_single()
496 st->samp_frac_num[channel_index] = samp_frac_num; in resampler_basic_interpolate_single()
503 static int resampler_basic_interpolate_double(SpeexResamplerState *st, spx_uint32_t channel_index, … in resampler_basic_interpolate_double() argument
505 const int N = st->filt_len; in resampler_basic_interpolate_double()
507 int last_sample = st->last_sample[channel_index]; in resampler_basic_interpolate_double()
508 spx_uint32_t samp_frac_num = st->samp_frac_num[channel_index]; in resampler_basic_interpolate_double()
509 const int out_stride = st->out_stride; in resampler_basic_interpolate_double()
510 const int int_advance = st->int_advance; in resampler_basic_interpolate_double()
511 const int frac_advance = st->frac_advance; in resampler_basic_interpolate_double()
512 const spx_uint32_t den_rate = st->den_rate; in resampler_basic_interpolate_double()
519 const int offset = samp_frac_num*st->oversample/st->den_rate; in resampler_basic_interpolate_double()
521 …const spx_word16_t frac = PDIV32(SHL32((samp_frac_num*st->oversample) % st->den_rate,15),st->den_r… in resampler_basic_interpolate_double()
523 … const spx_word16_t frac = ((float)((samp_frac_num*st->oversample) % st->den_rate))/st->den_rate; in resampler_basic_interpolate_double()
534 accum[0] += MULT16_16(curr_in,st->sinc_table[4+(j+1)*st->oversample-offset-2]); in resampler_basic_interpolate_double()
535 accum[1] += MULT16_16(curr_in,st->sinc_table[4+(j+1)*st->oversample-offset-1]); in resampler_basic_interpolate_double()
536 accum[2] += MULT16_16(curr_in,st->sinc_table[4+(j+1)*st->oversample-offset]); in resampler_basic_interpolate_double()
537 accum[3] += MULT16_16(curr_in,st->sinc_table[4+(j+1)*st->oversample-offset+1]); in resampler_basic_interpolate_double()
544 …sum = interpolate_product_double(iptr, st->sinc_table + st->oversample + 4 - offset - 2, N, st->ov… in resampler_basic_interpolate_double()
557 st->last_sample[channel_index] = last_sample; in resampler_basic_interpolate_double()
558 st->samp_frac_num[channel_index] = samp_frac_num; in resampler_basic_interpolate_double()
567 static int resampler_basic_zero(SpeexResamplerState *st, spx_uint32_t channel_index, const spx_word… in resampler_basic_zero() argument
570 int last_sample = st->last_sample[channel_index]; in resampler_basic_zero()
571 spx_uint32_t samp_frac_num = st->samp_frac_num[channel_index]; in resampler_basic_zero()
572 const int out_stride = st->out_stride; in resampler_basic_zero()
573 const int int_advance = st->int_advance; in resampler_basic_zero()
574 const int frac_advance = st->frac_advance; in resampler_basic_zero()
575 const spx_uint32_t den_rate = st->den_rate; in resampler_basic_zero()
589 st->last_sample[channel_index] = last_sample; in resampler_basic_zero()
590 st->samp_frac_num[channel_index] = samp_frac_num; in resampler_basic_zero()
594 static int update_filter(SpeexResamplerState *st) in update_filter() argument
596 spx_uint32_t old_length = st->filt_len; in update_filter()
597 spx_uint32_t old_alloc_size = st->mem_alloc_size; in update_filter()
602 st->int_advance = st->num_rate/st->den_rate; in update_filter()
603 st->frac_advance = st->num_rate%st->den_rate; in update_filter()
604 st->oversample = quality_map[st->quality].oversample; in update_filter()
605 st->filt_len = quality_map[st->quality].base_length; in update_filter()
607 if (st->num_rate > st->den_rate) in update_filter()
610 st->cutoff = quality_map[st->quality].downsample_bandwidth * st->den_rate / st->num_rate; in update_filter()
612 st->filt_len = st->filt_len*st->num_rate / st->den_rate; in update_filter()
614 st->filt_len = ((st->filt_len-1)&(~0x7))+8; in update_filter()
615 if (2*st->den_rate < st->num_rate) in update_filter()
616 st->oversample >>= 1; in update_filter()
617 if (4*st->den_rate < st->num_rate) in update_filter()
618 st->oversample >>= 1; in update_filter()
619 if (8*st->den_rate < st->num_rate) in update_filter()
620 st->oversample >>= 1; in update_filter()
621 if (16*st->den_rate < st->num_rate) in update_filter()
622 st->oversample >>= 1; in update_filter()
623 if (st->oversample < 1) in update_filter()
624 st->oversample = 1; in update_filter()
627 st->cutoff = quality_map[st->quality].upsample_bandwidth; in update_filter()
633 if (INT_MAX/sizeof(spx_word16_t)/st->den_rate < st->filt_len) in update_filter()
636 use_direct = st->filt_len*st->den_rate <= st->filt_len*st->oversample+8 in update_filter()
637 && INT_MAX/sizeof(spx_word16_t)/st->den_rate >= st->filt_len; in update_filter()
641 min_sinc_table_length = st->filt_len*st->den_rate; in update_filter()
643 if ((INT_MAX/sizeof(spx_word16_t)-8)/st->oversample < st->filt_len) in update_filter()
646 min_sinc_table_length = st->filt_len*st->oversample+8; in update_filter()
648 if (st->sinc_table_length < min_sinc_table_length) in update_filter()
650 …spx_word16_t *sinc_table = (spx_word16_t *)speex_realloc(st->sinc_table,min_sinc_table_length*size… in update_filter()
654 st->sinc_table = sinc_table; in update_filter()
655 st->sinc_table_length = min_sinc_table_length; in update_filter()
660 for (i=0;i<st->den_rate;i++) in update_filter()
663 for (j=0;j<st->filt_len;j++) in update_filter()
665 …st->sinc_table[i*st->filt_len+j] = sinc(st->cutoff,((j-(spx_int32_t)st->filt_len/2+1)-((float)i)/s… in update_filter()
669 st->resampler_ptr = resampler_basic_direct_single; in update_filter()
671 if (st->quality>8) in update_filter()
672 st->resampler_ptr = resampler_basic_direct_double; in update_filter()
674 st->resampler_ptr = resampler_basic_direct_single; in update_filter()
679 for (i=-4;i<(spx_int32_t)(st->oversample*st->filt_len+4);i++) in update_filter()
680 …st->sinc_table[i+4] = sinc(st->cutoff,(i/(float)st->oversample - st->filt_len/2), st->filt_len, qu… in update_filter()
682 st->resampler_ptr = resampler_basic_interpolate_single; in update_filter()
684 if (st->quality>8) in update_filter()
685 st->resampler_ptr = resampler_basic_interpolate_double; in update_filter()
687 st->resampler_ptr = resampler_basic_interpolate_single; in update_filter()
698 min_alloc_size = st->filt_len-1 + st->buffer_size; in update_filter()
699 if (min_alloc_size > st->mem_alloc_size) in update_filter()
702 if (INT_MAX/sizeof(spx_word16_t)/st->nb_channels < min_alloc_size) in update_filter()
704 …else if (!(mem = (spx_word16_t*)speex_realloc(st->mem, st->nb_channels*min_alloc_size * sizeof(*me… in update_filter()
707 st->mem = mem; in update_filter()
708 st->mem_alloc_size = min_alloc_size; in update_filter()
710 if (!st->started) in update_filter()
713 for (i=0;i<st->nb_channels*st->mem_alloc_size;i++) in update_filter()
714 st->mem[i] = 0; in update_filter()
716 } else if (st->filt_len > old_length) in update_filter()
721 for (i=st->nb_channels;i--;) in update_filter()
730 olen = old_length + 2*st->magic_samples[i]; in update_filter()
731 for (j=old_length-1+st->magic_samples[i];j--;) in update_filter()
732 st->mem[i*st->mem_alloc_size+j+st->magic_samples[i]] = st->mem[i*old_alloc_size+j]; in update_filter()
733 for (j=0;j<st->magic_samples[i];j++) in update_filter()
734 st->mem[i*st->mem_alloc_size+j] = 0; in update_filter()
735 st->magic_samples[i] = 0; in update_filter()
737 if (st->filt_len > olen) in update_filter()
742 … st->mem[i*st->mem_alloc_size+(st->filt_len-2-j)] = st->mem[i*st->mem_alloc_size+(olen-2-j)]; in update_filter()
744 for (;j<st->filt_len-1;j++) in update_filter()
745 st->mem[i*st->mem_alloc_size+(st->filt_len-2-j)] = 0; in update_filter()
747 st->last_sample[i] += (st->filt_len - olen)/2; in update_filter()
750 st->magic_samples[i] = (olen - st->filt_len)/2; in update_filter()
751 for (j=0;j<st->filt_len-1+st->magic_samples[i];j++) in update_filter()
752 … st->mem[i*st->mem_alloc_size+j] = st->mem[i*st->mem_alloc_size+j+st->magic_samples[i]]; in update_filter()
755 } else if (st->filt_len < old_length) in update_filter()
760 for (i=0;i<st->nb_channels;i++) in update_filter()
763 spx_uint32_t old_magic = st->magic_samples[i]; in update_filter()
764 st->magic_samples[i] = (old_length - st->filt_len)/2; in update_filter()
767 for (j=0;j<st->filt_len-1+st->magic_samples[i]+old_magic;j++) in update_filter()
768 st->mem[i*st->mem_alloc_size+j] = st->mem[i*st->mem_alloc_size+j+st->magic_samples[i]]; in update_filter()
769 st->magic_samples[i] += old_magic; in update_filter()
775 st->resampler_ptr = resampler_basic_zero; in update_filter()
779 st->filt_len = old_length; in update_filter()
791 SpeexResamplerState *st; in speex_resampler_init_frac() local
800 st = (SpeexResamplerState *)speex_alloc(sizeof(SpeexResamplerState)); in speex_resampler_init_frac()
801 st->initialised = 0; in speex_resampler_init_frac()
802 st->started = 0; in speex_resampler_init_frac()
803 st->in_rate = 0; in speex_resampler_init_frac()
804 st->out_rate = 0; in speex_resampler_init_frac()
805 st->num_rate = 0; in speex_resampler_init_frac()
806 st->den_rate = 0; in speex_resampler_init_frac()
807 st->quality = -1; in speex_resampler_init_frac()
808 st->sinc_table_length = 0; in speex_resampler_init_frac()
809 st->mem_alloc_size = 0; in speex_resampler_init_frac()
810 st->filt_len = 0; in speex_resampler_init_frac()
811 st->mem = 0; in speex_resampler_init_frac()
812 st->resampler_ptr = 0; in speex_resampler_init_frac()
814 st->cutoff = 1.f; in speex_resampler_init_frac()
815 st->nb_channels = nb_channels; in speex_resampler_init_frac()
816 st->in_stride = 1; in speex_resampler_init_frac()
817 st->out_stride = 1; in speex_resampler_init_frac()
819 st->buffer_size = 160; in speex_resampler_init_frac()
822 st->last_sample = (spx_int32_t*)speex_alloc(nb_channels*sizeof(spx_int32_t)); in speex_resampler_init_frac()
823 st->magic_samples = (spx_uint32_t*)speex_alloc(nb_channels*sizeof(spx_uint32_t)); in speex_resampler_init_frac()
824 st->samp_frac_num = (spx_uint32_t*)speex_alloc(nb_channels*sizeof(spx_uint32_t)); in speex_resampler_init_frac()
827 st->last_sample[i] = 0; in speex_resampler_init_frac()
828 st->magic_samples[i] = 0; in speex_resampler_init_frac()
829 st->samp_frac_num[i] = 0; in speex_resampler_init_frac()
832 speex_resampler_set_quality(st, quality); in speex_resampler_init_frac()
833 speex_resampler_set_rate_frac(st, ratio_num, ratio_den, in_rate, out_rate); in speex_resampler_init_frac()
835 filter_err = update_filter(st); in speex_resampler_init_frac()
838 st->initialised = 1; in speex_resampler_init_frac()
840 speex_resampler_destroy(st); in speex_resampler_init_frac()
841 st = NULL; in speex_resampler_init_frac()
846 return st; in speex_resampler_init_frac()
849 EXPORT void speex_resampler_destroy(SpeexResamplerState *st) in speex_resampler_destroy() argument
851 speex_free(st->mem); in speex_resampler_destroy()
852 speex_free(st->sinc_table); in speex_resampler_destroy()
853 speex_free(st->last_sample); in speex_resampler_destroy()
854 speex_free(st->magic_samples); in speex_resampler_destroy()
855 speex_free(st->samp_frac_num); in speex_resampler_destroy()
856 speex_free(st); in speex_resampler_destroy()
859 static int speex_resampler_process_native(SpeexResamplerState *st, spx_uint32_t channel_index, spx_… in speex_resampler_process_native() argument
862 const int N = st->filt_len; in speex_resampler_process_native()
864 spx_word16_t *mem = st->mem + channel_index * st->mem_alloc_size; in speex_resampler_process_native()
867 st->started = 1; in speex_resampler_process_native()
870 out_sample = st->resampler_ptr(st, channel_index, mem, in_len, out, out_len); in speex_resampler_process_native()
872 if (st->last_sample[channel_index] < (spx_int32_t)*in_len) in speex_resampler_process_native()
873 *in_len = st->last_sample[channel_index]; in speex_resampler_process_native()
875 st->last_sample[channel_index] -= *in_len; in speex_resampler_process_native()
885 static int speex_resampler_magic(SpeexResamplerState *st, spx_uint32_t channel_index, spx_word16_t … in speex_resampler_magic() argument
886 spx_uint32_t tmp_in_len = st->magic_samples[channel_index]; in speex_resampler_magic()
887 spx_word16_t *mem = st->mem + channel_index * st->mem_alloc_size; in speex_resampler_magic()
888 const int N = st->filt_len; in speex_resampler_magic()
890 speex_resampler_process_native(st, channel_index, &tmp_in_len, *out, &out_len); in speex_resampler_magic()
892 st->magic_samples[channel_index] -= tmp_in_len; in speex_resampler_magic()
895 if (st->magic_samples[channel_index]) in speex_resampler_magic()
898 for (i=0;i<st->magic_samples[channel_index];i++) in speex_resampler_magic()
901 *out += out_len*st->out_stride; in speex_resampler_magic()
906 EXPORT int speex_resampler_process_int(SpeexResamplerState *st, spx_uint32_t channel_index, const s… in speex_resampler_process_int() argument
908 EXPORT int speex_resampler_process_float(SpeexResamplerState *st, spx_uint32_t channel_index, const… in speex_resampler_process_int()
914 spx_word16_t *x = st->mem + channel_index * st->mem_alloc_size; in speex_resampler_process_int()
915 const int filt_offs = st->filt_len - 1; in speex_resampler_process_int()
916 const spx_uint32_t xlen = st->mem_alloc_size - filt_offs; in speex_resampler_process_int()
917 const int istride = st->in_stride; in speex_resampler_process_int()
919 if (st->magic_samples[channel_index]) in speex_resampler_process_int()
920 olen -= speex_resampler_magic(st, channel_index, &out, olen); in speex_resampler_process_int()
921 if (! st->magic_samples[channel_index]) { in speex_resampler_process_int()
933 speex_resampler_process_native(st, channel_index, &ichunk, out, &ochunk); in speex_resampler_process_int()
936 out += ochunk * st->out_stride; in speex_resampler_process_int()
943 …return st->resampler_ptr == resampler_basic_zero ? RESAMPLER_ERR_ALLOC_FAILED : RESAMPLER_ERR_SUCC… in speex_resampler_process_int()
947 EXPORT int speex_resampler_process_float(SpeexResamplerState *st, spx_uint32_t channel_index, const… in speex_resampler_process_float() argument
949 EXPORT int speex_resampler_process_int(SpeexResamplerState *st, spx_uint32_t channel_index, const s… in speex_resampler_process_float()
953 const int istride_save = st->in_stride; in speex_resampler_process_float()
954 const int ostride_save = st->out_stride; in speex_resampler_process_float()
957 spx_word16_t *x = st->mem + channel_index * st->mem_alloc_size; in speex_resampler_process_float()
958 const spx_uint32_t xlen = st->mem_alloc_size - (st->filt_len - 1); in speex_resampler_process_float()
968 st->out_stride = 1; in speex_resampler_process_float()
976 if (st->magic_samples[channel_index]) { in speex_resampler_process_float()
977 omagic = speex_resampler_magic(st, channel_index, &y, ochunk); in speex_resampler_process_float()
981 if (! st->magic_samples[channel_index]) { in speex_resampler_process_float()
985 x[j+st->filt_len-1]=WORD2INT(in[j*istride_save]); in speex_resampler_process_float()
987 x[j+st->filt_len-1]=in[j*istride_save]; in speex_resampler_process_float()
991 x[j+st->filt_len-1]=0; in speex_resampler_process_float()
994 speex_resampler_process_native(st, channel_index, &ichunk, y, &ochunk); in speex_resampler_process_float()
1013 st->out_stride = ostride_save; in speex_resampler_process_float()
1017 …return st->resampler_ptr == resampler_basic_zero ? RESAMPLER_ERR_ALLOC_FAILED : RESAMPLER_ERR_SUCC… in speex_resampler_process_float()
1020 EXPORT int speex_resampler_process_interleaved_float(SpeexResamplerState *st, const float *in, spx_… in speex_resampler_process_interleaved_float() argument
1026 istride_save = st->in_stride; in speex_resampler_process_interleaved_float()
1027 ostride_save = st->out_stride; in speex_resampler_process_interleaved_float()
1028 st->in_stride = st->out_stride = st->nb_channels; in speex_resampler_process_interleaved_float()
1029 for (i=0;i<st->nb_channels;i++) in speex_resampler_process_interleaved_float()
1034 speex_resampler_process_float(st, i, in+i, in_len, out+i, out_len); in speex_resampler_process_interleaved_float()
1036 speex_resampler_process_float(st, i, NULL, in_len, out+i, out_len); in speex_resampler_process_interleaved_float()
1038 st->in_stride = istride_save; in speex_resampler_process_interleaved_float()
1039 st->out_stride = ostride_save; in speex_resampler_process_interleaved_float()
1040 …return st->resampler_ptr == resampler_basic_zero ? RESAMPLER_ERR_ALLOC_FAILED : RESAMPLER_ERR_SUCC… in speex_resampler_process_interleaved_float()
1043 EXPORT int speex_resampler_process_interleaved_int(SpeexResamplerState *st, const spx_int16_t *in, … in speex_resampler_process_interleaved_int() argument
1049 istride_save = st->in_stride; in speex_resampler_process_interleaved_int()
1050 ostride_save = st->out_stride; in speex_resampler_process_interleaved_int()
1051 st->in_stride = st->out_stride = st->nb_channels; in speex_resampler_process_interleaved_int()
1052 for (i=0;i<st->nb_channels;i++) in speex_resampler_process_interleaved_int()
1057 speex_resampler_process_int(st, i, in+i, in_len, out+i, out_len); in speex_resampler_process_interleaved_int()
1059 speex_resampler_process_int(st, i, NULL, in_len, out+i, out_len); in speex_resampler_process_interleaved_int()
1061 st->in_stride = istride_save; in speex_resampler_process_interleaved_int()
1062 st->out_stride = ostride_save; in speex_resampler_process_interleaved_int()
1063 …return st->resampler_ptr == resampler_basic_zero ? RESAMPLER_ERR_ALLOC_FAILED : RESAMPLER_ERR_SUCC… in speex_resampler_process_interleaved_int()
1066 EXPORT int speex_resampler_set_rate(SpeexResamplerState *st, spx_uint32_t in_rate, spx_uint32_t out… in speex_resampler_set_rate() argument
1068 return speex_resampler_set_rate_frac(st, in_rate, out_rate, in_rate, out_rate); in speex_resampler_set_rate()
1071 EXPORT void speex_resampler_get_rate(SpeexResamplerState *st, spx_uint32_t *in_rate, spx_uint32_t *… in speex_resampler_get_rate() argument
1073 *in_rate = st->in_rate; in speex_resampler_get_rate()
1074 *out_rate = st->out_rate; in speex_resampler_get_rate()
1077 EXPORT int speex_resampler_set_rate_frac(SpeexResamplerState *st, spx_uint32_t ratio_num, spx_uint3… in speex_resampler_set_rate_frac() argument
1082 …if (st->in_rate == in_rate && st->out_rate == out_rate && st->num_rate == ratio_num && st->den_rat… in speex_resampler_set_rate_frac()
1085 old_den = st->den_rate; in speex_resampler_set_rate_frac()
1086 st->in_rate = in_rate; in speex_resampler_set_rate_frac()
1087 st->out_rate = out_rate; in speex_resampler_set_rate_frac()
1088 st->num_rate = ratio_num; in speex_resampler_set_rate_frac()
1089 st->den_rate = ratio_den; in speex_resampler_set_rate_frac()
1091 for (fact=2;fact<=IMIN(st->num_rate, st->den_rate);fact++) in speex_resampler_set_rate_frac()
1093 while ((st->num_rate % fact == 0) && (st->den_rate % fact == 0)) in speex_resampler_set_rate_frac()
1095 st->num_rate /= fact; in speex_resampler_set_rate_frac()
1096 st->den_rate /= fact; in speex_resampler_set_rate_frac()
1102 for (i=0;i<st->nb_channels;i++) in speex_resampler_set_rate_frac()
1104 st->samp_frac_num[i]=st->samp_frac_num[i]*st->den_rate/old_den; in speex_resampler_set_rate_frac()
1106 if (st->samp_frac_num[i] >= st->den_rate) in speex_resampler_set_rate_frac()
1107 st->samp_frac_num[i] = st->den_rate-1; in speex_resampler_set_rate_frac()
1111 if (st->initialised) in speex_resampler_set_rate_frac()
1112 return update_filter(st); in speex_resampler_set_rate_frac()
1116 EXPORT void speex_resampler_get_ratio(SpeexResamplerState *st, spx_uint32_t *ratio_num, spx_uint32_… in speex_resampler_get_ratio() argument
1118 *ratio_num = st->num_rate; in speex_resampler_get_ratio()
1119 *ratio_den = st->den_rate; in speex_resampler_get_ratio()
1122 EXPORT int speex_resampler_set_quality(SpeexResamplerState *st, int quality) in speex_resampler_set_quality() argument
1126 if (st->quality == quality) in speex_resampler_set_quality()
1128 st->quality = quality; in speex_resampler_set_quality()
1129 if (st->initialised) in speex_resampler_set_quality()
1130 return update_filter(st); in speex_resampler_set_quality()
1134 EXPORT void speex_resampler_get_quality(SpeexResamplerState *st, int *quality) in speex_resampler_get_quality() argument
1136 *quality = st->quality; in speex_resampler_get_quality()
1139 EXPORT void speex_resampler_set_input_stride(SpeexResamplerState *st, spx_uint32_t stride) in speex_resampler_set_input_stride() argument
1141 st->in_stride = stride; in speex_resampler_set_input_stride()
1144 EXPORT void speex_resampler_get_input_stride(SpeexResamplerState *st, spx_uint32_t *stride) in speex_resampler_get_input_stride() argument
1146 *stride = st->in_stride; in speex_resampler_get_input_stride()
1149 EXPORT void speex_resampler_set_output_stride(SpeexResamplerState *st, spx_uint32_t stride) in speex_resampler_set_output_stride() argument
1151 st->out_stride = stride; in speex_resampler_set_output_stride()
1154 EXPORT void speex_resampler_get_output_stride(SpeexResamplerState *st, spx_uint32_t *stride) in speex_resampler_get_output_stride() argument
1156 *stride = st->out_stride; in speex_resampler_get_output_stride()
1159 EXPORT int speex_resampler_get_input_latency(SpeexResamplerState *st) in speex_resampler_get_input_latency() argument
1161 return st->filt_len / 2; in speex_resampler_get_input_latency()
1164 EXPORT int speex_resampler_get_output_latency(SpeexResamplerState *st) in speex_resampler_get_output_latency() argument
1166 return ((st->filt_len / 2) * st->den_rate + (st->num_rate >> 1)) / st->num_rate; in speex_resampler_get_output_latency()
1169 EXPORT int speex_resampler_skip_zeros(SpeexResamplerState *st) in speex_resampler_skip_zeros() argument
1172 for (i=0;i<st->nb_channels;i++) in speex_resampler_skip_zeros()
1173 st->last_sample[i] = st->filt_len/2; in speex_resampler_skip_zeros()
1177 EXPORT int speex_resampler_reset_mem(SpeexResamplerState *st) in speex_resampler_reset_mem() argument
1180 for (i=0;i<st->nb_channels;i++) in speex_resampler_reset_mem()
1182 st->last_sample[i] = 0; in speex_resampler_reset_mem()
1183 st->magic_samples[i] = 0; in speex_resampler_reset_mem()
1184 st->samp_frac_num[i] = 0; in speex_resampler_reset_mem()
1186 for (i=0;i<st->nb_channels*(st->filt_len-1);i++) in speex_resampler_reset_mem()
1187 st->mem[i] = 0; in speex_resampler_reset_mem()