diff options
| author | Sergio <sergio@sergione.(none)> | 2014-06-16 15:48:00 +0200 | 
|---|---|---|
| committer | Matthias P. Braendli <matthias.braendli@mpb.li> | 2014-06-16 20:31:11 +0200 | 
| commit | 8af4aca43ad1939c578f24e998d2d2ff58e7cc2c (patch) | |
| tree | 525946c4d8a67a42ab2d3456ccb1ddcce896facc /src | |
| parent | 039b48b75d8b26d4a15c01be7513140a6be493da (diff) | |
| download | ODR-AudioEnc-8af4aca43ad1939c578f24e998d2d2ff58e7cc2c.tar.gz ODR-AudioEnc-8af4aca43ad1939c578f24e998d2d2ff58e7cc2c.tar.bz2 ODR-AudioEnc-8af4aca43ad1939c578f24e998d2d2ff58e7cc2c.zip  | |
fifo silence bug fix
Diffstat (limited to 'src')
| -rw-r--r-- | src/FileInput.cpp | 8 | ||||
| -rw-r--r-- | src/FileInput.h | 1 | ||||
| -rw-r--r-- | src/dabplus-enc.cpp | 3 | 
3 files changed, 11 insertions, 1 deletions
diff --git a/src/FileInput.cpp b/src/FileInput.cpp index 9ec988b..b116e80 100644 --- a/src/FileInput.cpp +++ b/src/FileInput.cpp @@ -96,6 +96,14 @@ ssize_t FileInput::read(uint8_t* buf, size_t length)      return pcmread;  } +int FileInput::eof() +{ +   int eof=feof(m_in_fh); +   clearerr(m_in_fh); +   return eof; +} + +  FileInput::~FileInput()  {      if (m_raw_input && m_in_fh) { diff --git a/src/FileInput.h b/src/FileInput.h index 9330577..4f6f75e 100644 --- a/src/FileInput.h +++ b/src/FileInput.h @@ -45,6 +45,7 @@ class FileInput           * Returns the number of bytes read.           */          ssize_t read(uint8_t* buf, size_t length); +	int eof();      protected:          const char* m_filename; diff --git a/src/dabplus-enc.cpp b/src/dabplus-enc.cpp index f186dbe..9cb9333 100644 --- a/src/dabplus-enc.cpp +++ b/src/dabplus-enc.cpp @@ -597,9 +597,10 @@ int main(int argc, char *argv[])                  break;              }              else if (read != input_size) { -                if (inFifoSilence && ((errno==EAGAIN)||(errno==0))) { +                if (inFifoSilence && file_in.eof()) {                     memset(input_buf, 0, input_size);                     read = input_size; +                   usleep((long int)input_size*1000000/(bytes_per_sample*channels*sample_rate));                  } else {                     fprintf(stderr, "Short file read !\n");                     break;  | 
