#include <frame.h>
Inheritance diagram for SrcAudioResample< input_t, output_t >:


Public Member Functions | |
| SrcAudioResample (int converter) | |
| SrcAudioResample (int converter, double output_rate, bool isStreaming) | |
| virtual | ~SrcAudioResample () |
| void | Resample (input_t *input, double input_rate, int channels, int samples) |
Private Attributes | |
| SRC_STATE * | state |
| SRC_DATA | data |
| float | input_buffer [BUFFER_LEN] |
| float | output_buffer [BUFFER_LEN] |
|
||||||||||
|
Definition at line 307 of file frame.h. 00307 : AudioResample<input_t,output_t>( 0 ) 00308 { 00309 SrcAudioResample( converter, 0 ); 00310 }
|
|
||||||||||||||||||||
|
Definition at line 311 of file frame.h. References SrcAudioResample< input_t, output_t >::data, SrcAudioResample< input_t, output_t >::input_buffer, SrcAudioResample< input_t, output_t >::output_buffer, and SrcAudioResample< input_t, output_t >::state. 00311 : 00312 AudioResample<input_t,output_t>( output_rate ) 00313 { 00314 int srcError = 0; 00315 00316 state = src_new( converter, 2, &srcError ); 00317 if ( srcError != 0 ) 00318 { 00319 cerr << "SRC: " << src_strerror( srcError ) << endl; 00320 } 00321 else 00322 { 00323 data.data_in = input_buffer; 00324 data.data_out = output_buffer; 00325 data.end_of_input = isStreaming ? 0 : 1; 00326 } 00327 } virtual ~SrcAudioResample()
|
|
|||||||||
|
Definition at line 328 of file frame.h. References SrcAudioResample< input_t, output_t >::state. 00329 {
00330 src_delete( state );
00331 }
|
|
||||||||||||||||||||||||
|
Reimplemented from AudioResample< input_t, output_t >. Definition at line 332 of file frame.h. References BUFFER_LEN, SrcAudioResample< input_t, output_t >::data, SrcAudioResample< input_t, output_t >::input_buffer, AudioResample< input_t, output_t >::output, SrcAudioResample< input_t, output_t >::output_buffer, AudioResample< input_t, output_t >::output_rate, AudioResample< input_t, output_t >::size, and SrcAudioResample< input_t, output_t >::state. 00333 {
00334 for ( int i = 0; i < samples * channels; ++i )
00335 input_buffer[ i ] = ( float ) input[ i ] / 32768.0;
00336
00337 // Setup resampler
00338 data.input_frames = samples;
00339 data.output_frames = BUFFER_LEN / channels;
00340 data.src_ratio = this->output_rate / input_rate;
00341
00342 // Resample
00343 int result = src_process ( state, &data );
00344 if ( result != 0 )
00345 cerr << "SRC: " << src_strerror( result ) << endl;
00346 this->size = data.output_frames_gen * channels * sizeof(output_t);
00347
00348 // cerr << "Resample in samples " << samples << " out rate " << this->output_rate << " in rate " << input_rate << " src_ratio " << data.src_ratio << "out samples " << this->size/4 << endl;
00349
00350 for ( int i = 0; i < data.output_frames_gen * channels; ++i )
00351 {
00352 float sample = output_buffer[ i ];
00353 if ( sample > 1.0 )
00354 sample = 1.0;
00355 if ( sample < -1.0 )
00356 sample = -1.0;
00357 if ( sample >= 0 )
00358 this->output[ i ] = ( long int )( 32767.0 * sample );
00359 else
00360 this->output[ i ] = ( long int )( 32768.0 * sample );
00361 }
00362 }
|
|
|||||
|
Definition at line 366 of file frame.h. Referenced by SrcAudioResample< input_t, output_t >::Resample(), and SrcAudioResample< input_t, output_t >::SrcAudioResample(). |
|
|||||
|
Definition at line 367 of file frame.h. Referenced by SrcAudioResample< input_t, output_t >::Resample(), and SrcAudioResample< input_t, output_t >::SrcAudioResample(). |
|
|||||
|
Definition at line 368 of file frame.h. Referenced by SrcAudioResample< input_t, output_t >::Resample(), and SrcAudioResample< input_t, output_t >::SrcAudioResample(). |
|
|||||
|
Definition at line 365 of file frame.h. Referenced by SrcAudioResample< input_t, output_t >::Resample(), SrcAudioResample< input_t, output_t >::SrcAudioResample(), and SrcAudioResample< input_t, output_t >::~SrcAudioResample(). |
1.4.2