/* * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. * * Use of this source code is governed by a BSD-style license * that can be found in the LICENSE file in the root of the source * tree. An additional intellectual property rights grant can be found * in the file PATENTS. All contributing project authors may * be found in the AUTHORS file in the root of the source tree. */ #ifndef WEBRTC_MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_UTIL_UTILITY_H_ #define WEBRTC_MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_UTIL_UTILITY_H_ #include #include #if defined(__cplusplus) extern "C" { #endif #define OPEN_FILE_WB(filePtr, fullPath) \ do \ { \ if(fullPath != NULL) \ { \ filePtr = fopen(fullPath, "wb"); \ if(filePtr == NULL) \ { \ printf("could not open %s to write to.", fullPath); \ return -1; \ } \ } \ else \ { \ filePtr = NULL; \ } \ }while(0) #define OPEN_FILE_AB(filePtr, fullPath) \ do \ { \ if(fullPath != NULL) \ { \ filePtr = fopen(fullPath, "ab"); \ if(filePtr == NULL) \ { \ printf("could not open %s to write to.", fullPath); \ return -1; \ } \ } \ else \ { \ filePtr = NULL; \ } \ }while(0) #define OPEN_FILE_RB(filePtr, fullPath) \ do \ { \ if(fullPath != NULL) \ { \ filePtr = fopen(fullPath, "rb"); \ if(filePtr == NULL) \ { \ printf("could not open %s to read from.", fullPath); \ return -1; \ } \ } \ else \ { \ filePtr = NULL; \ } \ }while(0) #define WRITE_FILE_D(bufferPtr, len, filePtr) \ do \ { \ if(filePtr != NULL) \ { \ double dummy[1000]; \ int cntr; \ for(cntr = 0; cntr < (len); cntr++) \ { \ dummy[cntr] = (double)bufferPtr[cntr]; \ } \ fwrite(dummy, sizeof(double), len, filePtr); \ fflush(filePtr); \ } \ } while(0) typedef struct { unsigned int whenPackGeneratedMs; unsigned int whenPrevPackLeftMs; unsigned int sendTimeMs ; /* milisecond */ unsigned int arrival_time; /* samples */ unsigned int sample_count; /* samples, also used as "send time stamp" */ unsigned int rtp_number; } BottleNeckModel; void get_arrival_time( int current_framesamples, /* samples */ size_t packet_size, /* bytes */ int bottleneck, /* excluding headers; bits/s */ BottleNeckModel* BN_data, short senderSampFreqHz, short receiverSampFreqHz); /* function for reading audio data from PCM file */ int readframe( short* data, FILE* inp, int length); short readSwitch( int argc, char* argv[], char* strID); double readParamDouble( int argc, char* argv[], char* strID, double defaultVal); int readParamInt( int argc, char* argv[], char* strID, int defaultVal); int readParamString( int argc, char* argv[], char* strID, char* stringParam, int maxSize); #if defined(__cplusplus) } #endif #endif