static int read_samples(short *sample_buffer, int frame_size) { int samples_read; switch(config.wave.type) { default : ERROR("[read_samples], wave filetype not supported"); case WAVE_RIFF_PCM : samples_read = fread(sample_buffer,sizeof(short),frame_size, config.wave.file); /* Microsoft PCM Samples are little-endian, */ /* we must swap if this is a big-endian machine */ if(config.byte_order==order_bigEndian) SwapBytesInWords(sample_buffer,samples_read); if(samples_read<frame_size && samples_read>0) { /* Pad sample with zero's */ while(samples_read<frame_size) sample_buffer[samples_read++] = 0; } break; } return samples_read; }
int read_samples_pcm(lame_global_flags *gfp,short sample_buffer[2304], int frame_size,int samples_to_read) { int samples_read; int rcode; int iswav=(gfp->input_format==sf_wave); samples_read = fread(sample_buffer, sizeof(short), samples_to_read, musicin); if (ferror(musicin)) { fprintf(stderr, "Error reading input file\n"); exit(2); } /* Samples are big-endian. If this is a little-endian machine we must swap */ if ( NativeByteOrder == order_unknown ) { NativeByteOrder = DetermineByteOrder(); if ( NativeByteOrder == order_unknown ) { fprintf( stderr, "byte order not determined\n" ); exit( 1 ); } } /* intel=littleEndian */ if (!iswav && ( NativeByteOrder == order_littleEndian )) SwapBytesInWords( sample_buffer, samples_read ); if (iswav && ( NativeByteOrder == order_bigEndian )) SwapBytesInWords( sample_buffer, samples_read ); if (gfp->swapbytes==TRUE) SwapBytesInWords( sample_buffer, samples_read ); rcode=samples_read; if (samples_read < frame_size) { if (samples_read<0) samples_read=0; /*fprintf(stderr,"Insufficient PCM input for one frame - fillout with zeros\n"); */ for (; samples_read < frame_size; sample_buffer[samples_read++] = 0); } return(rcode); }
int wave_get_samples(wave_info_t * wave_info, short int pcm[], int numSamples) { int samples_read; FILE *file = wave_info->soundfile; samples_read = fread(pcm, sizeof(short int), numSamples, file); if (wave_info->byteswap) { SwapBytesInWords(pcm, samples_read); } return (samples_read / wave_info->channels); }