aboutsummaryrefslogtreecommitdiffstats
path: root/src/dabInputFifo.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/dabInputFifo.h')
-rw-r--r--src/dabInputFifo.h101
1 files changed, 101 insertions, 0 deletions
diff --git a/src/dabInputFifo.h b/src/dabInputFifo.h
new file mode 100644
index 0000000..1844d1e
--- /dev/null
+++ b/src/dabInputFifo.h
@@ -0,0 +1,101 @@
+/*
+ Copyright (C) 2009 Her Majesty the Queen in Right of Canada (Communications
+ Research Center Canada)
+ */
+/*
+ This file is part of CRC-DabMux.
+
+ CRC-DabMux is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as
+ published by the Free Software Foundation, either version 3 of the
+ License, or (at your option) any later version.
+
+ CRC-DabMux is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with CRC-DabMux. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef DAB_INPUT_FIFO_H
+#define DAB_INPUT_FIFO_H
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+#include "dabInputFile.h"
+#include "TcpLog.h"
+extern TcpLog etiLog;
+
+
+#ifdef _WIN32
+# include <io.h>
+
+# define sem_t HANDLE
+# define O_NONBLOCK 0
+#else
+# include <semaphore.h>
+# define O_BINARY 0
+#endif
+
+
+#ifdef HAVE_FORMAT_PACKET
+# ifdef HAVE_INPUT_FIFO
+extern struct dabInputOperations dabInputFifoOperations;
+
+
+struct dabInputFifoStatRecord {
+ int curSize;
+ int maxSize;
+};
+
+
+#define NB_RECORDS 10
+struct dabInputFifoStats {
+ int id;
+ bool full;
+ bool empty;
+ bool error;
+ bool input;
+ int bufferCount;
+ dabInputFifoStatRecord bufferRecords[NB_RECORDS];
+ int frameCount;
+ dabInputFifoStatRecord frameRecords[NB_RECORDS];
+};
+
+
+struct dabInputFifoData : dabInputFileData {
+ static int nb;
+ int maxSize;
+ int curSize;
+ int head;
+ int tail;
+ dabInputFifoStats stats;
+ unsigned char* buffer;
+ pthread_t thread;
+ sem_t semInfo;
+ sem_t semBuffer;
+ sem_t semFull;
+ bool full;
+ bool running;
+};
+
+
+int dabInputFifoInit(void** args);
+int dabInputFifoOpen(void* args, const char* filename);
+int dabInputFifoSetbuf(void* args, int size);
+int dabInputFifoRead(void* args, void* buffer, int size);
+int dabInputFifoLock(void* args);
+int dabInputFifoUnlock(void* args);
+int dabInputFifoClose(void* args);
+int dabInputFifoClean(void** args);
+int dabInputFifoRewind(void* args);
+void* dabInputFifoThread(void* args);
+
+
+# endif
+#endif
+
+#endif // DAB_INPUT_FIFO_H