get_number_frames

Signal Processing Library

Program name: get_number_frames

Language: C

In file: window_lib.c

Objective: Calculate number of frames available in data file.

Usage: get_number_frames(FILE *in_file, int header_length, int data_length, int sample_rate, int window_size, int overlap);

Parameters:

  • in_file - The (open) input file pointer
  • header_length - The length of the header
  • data_length - The length of the data (typically 2 bytes)
  • sample_rate - Number of data samples per second (25K or 50K)
  • window_size - The size of the frame (window)
  • overlap - The type of overlap used (2 in our case)
Return
  • Number of frames

Mathematical Description:

Comments: Routine is used to calculate the number of frames in the file

User Comments

Code:

int get_number_frames(FILE *in_file, int header_length, int data_length,
 int sample_rate, int window_size, int overlap)
{
        int number;

        fseek(in_file, 0, SEEK_END);
        number = ftell(in_file);

        number -= header_length;

        /* if sample rate = 50K, use half of the values */
        if(sample_rate == 50000) number /= 2;

        /* Truncate number to a multiple of data_length */
        number /= data_length;

        /* Truncate number to a multiple of window_size */
        switch(overlap) {
        case 2:
                number = (number * 2) / window_size;
                number--;
                break;
        case 1:
        default:
                number /= window_size;
                break;
        }

        /* seek to beginning of data segment */
        fseek(in_file, header_length, SEEK_SET);

        return(number);
}