Home | History | Annotate | Download | only in util
      1 /*
      2  *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
      3  *
      4  *  Use of this source code is governed by a BSD-style license
      5  *  that can be found in the LICENSE file in the root of the source
      6  *  tree. An additional intellectual property rights grant can be found
      7  *  in the file PATENTS.  All contributing project authors may
      8  *  be found in the AUTHORS file in the root of the source tree.
      9  */
     10 
     11 #ifndef WEBRTC_MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_UTIL_UTILITY_H_
     12 #define WEBRTC_MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_UTIL_UTILITY_H_
     13 
     14 #include <stdlib.h>
     15 #include <stdio.h>
     16 
     17 #if defined(__cplusplus)
     18 extern "C" {
     19 #endif
     20 
     21 #define OPEN_FILE_WB(filePtr, fullPath)                         \
     22   do                                                            \
     23   {                                                             \
     24     if(fullPath != NULL)                                        \
     25     {                                                           \
     26       filePtr = fopen(fullPath, "wb");                          \
     27       if(filePtr == NULL)                                       \
     28       {                                                         \
     29         printf("could not open %s to write to.", fullPath);     \
     30         return -1;                                              \
     31       }                                                         \
     32     }                                                           \
     33     else                                                        \
     34     {                                                           \
     35       filePtr = NULL;                                           \
     36     }                                                           \
     37   }while(0)
     38 
     39 #define OPEN_FILE_AB(filePtr, fullPath)                         \
     40   do                                                            \
     41   {                                                             \
     42     if(fullPath != NULL)                                        \
     43     {                                                           \
     44       filePtr = fopen(fullPath, "ab");                          \
     45       if(filePtr == NULL)                                       \
     46       {                                                         \
     47         printf("could not open %s to write to.", fullPath);     \
     48         return -1;                                              \
     49       }                                                         \
     50     }                                                           \
     51     else                                                        \
     52     {                                                           \
     53       filePtr = NULL;                                           \
     54     }                                                           \
     55   }while(0)
     56 
     57 #define OPEN_FILE_RB(filePtr, fullPath)                         \
     58   do                                                            \
     59   {                                                             \
     60     if(fullPath != NULL)                                        \
     61     {                                                           \
     62       filePtr = fopen(fullPath, "rb");                          \
     63       if(filePtr == NULL)                                       \
     64       {                                                         \
     65         printf("could not open %s to read from.", fullPath);    \
     66         return -1;                                              \
     67       }                                                         \
     68     }                                                           \
     69     else                                                        \
     70     {                                                           \
     71       filePtr = NULL;                                           \
     72     }                                                           \
     73   }while(0)
     74 
     75 #define WRITE_FILE_D(bufferPtr, len, filePtr)           \
     76   do                                                    \
     77   {                                                     \
     78     if(filePtr != NULL)                                 \
     79     {                                                   \
     80       double dummy[1000];                               \
     81       int cntr;                                         \
     82       for(cntr = 0; cntr < (len); cntr++)               \
     83       {                                                 \
     84         dummy[cntr] = (double)bufferPtr[cntr];          \
     85       }                                                 \
     86       fwrite(dummy, sizeof(double), len, filePtr);      \
     87       fflush(filePtr);                                  \
     88     }                                                   \
     89   } while(0)
     90 
     91   typedef struct {
     92     unsigned int whenPackGeneratedMs;
     93     unsigned int whenPrevPackLeftMs;
     94     unsigned int sendTimeMs ;          /* milisecond */
     95     unsigned int arrival_time;         /* samples */
     96     unsigned int sample_count;         /* samples, also used as "send time stamp" */
     97     unsigned int rtp_number;
     98   } BottleNeckModel;
     99 
    100   void get_arrival_time(
    101       int              current_framesamples,   /* samples */
    102       int              packet_size,            /* bytes */
    103       int              bottleneck,             /* excluding headers; bits/s */
    104       BottleNeckModel* BN_data,
    105       short            senderSampFreqHz,
    106       short            receiverSampFreqHz);
    107 
    108   /* function for reading audio data from PCM file */
    109   int readframe(
    110       short* data,
    111       FILE*  inp,
    112       int    length);
    113 
    114   short readSwitch(
    115       int   argc,
    116       char* argv[],
    117       char* strID);
    118 
    119   double readParamDouble(
    120       int    argc,
    121       char*  argv[],
    122       char*  strID,
    123       double defaultVal);
    124 
    125   int readParamInt(
    126       int   argc,
    127       char* argv[],
    128       char* strID,
    129       int   defaultVal);
    130 
    131   int readParamString(
    132       int   argc,
    133       char* argv[],
    134       char* strID,
    135       char* stringParam,
    136       int   maxSize);
    137 
    138 #if defined(__cplusplus)
    139 }
    140 #endif
    141 
    142 
    143 
    144 #endif
    145