From 1496394c0f4be1a718fb189846c6350cbd9e43da Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Thu, 24 Oct 2002 22:37:51 +0000 Subject: First stab at porting mplex Original commit message from CVS: First stab at porting mplex --- ext/mplex/vector.hh | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 ext/mplex/vector.hh (limited to 'ext/mplex/vector.hh') diff --git a/ext/mplex/vector.hh b/ext/mplex/vector.hh new file mode 100644 index 00000000..9a4f0413 --- /dev/null +++ b/ext/mplex/vector.hh @@ -0,0 +1,71 @@ +#ifndef __AUSTREAM_H__ +#define __AUSTREAM_H__ + +#include +#include +#include "mjpeg_logging.h" +#include "aunit.hh" + +class AUStream +{ +public: + AUStream (); + + void init (Aunit * rec); + + void append (Aunit & rec) + { + if (size == BUF_SIZE) + mjpeg_error_exit1 ("INTERNAL ERROR: AU buffer overflow"); + *buf[cur_wr] = rec; + ++size; + ++cur_wr; + cur_wr = cur_wr >= BUF_SIZE ? 0 : cur_wr; + } + + inline Aunit *next () + { + if (size == 0) { + return 0; + } else { + Aunit *ret; + + ret = buf[cur_rd]; + ++cur_rd; + ++totalctr; + --size; + cur_rd = cur_rd >= BUF_SIZE ? 0 : cur_rd; + return ret; + } + } + + inline Aunit *lookahead () + { + return size == 0 ? 0 : buf[cur_rd]; + } + + inline Aunit *last () + { + int i = cur_wr - 1 < 0 ? BUF_SIZE - 1 : cur_wr - 1; + + return buf[i]; + } + + static const unsigned int BUF_SIZE = 128; + + inline unsigned int current () + { + return totalctr; + } +//private: + unsigned int cur_rd; + unsigned int cur_wr; + unsigned int totalctr; + unsigned int size; + Aunit **buf; +}; + + + + +#endif // __AUSTREAM_H__ -- cgit v1.2.1