diff options
author | Wim Taymans <wim.taymans@gmail.com> | 2002-10-24 22:37:51 +0000 |
---|---|---|
committer | Wim Taymans <wim.taymans@gmail.com> | 2002-10-24 22:37:51 +0000 |
commit | 1496394c0f4be1a718fb189846c6350cbd9e43da (patch) | |
tree | 7f839063fd206ad3db102a7a20c336d0c8423295 /ext/mplex/vector.hh | |
parent | 440801dd9e53284925575c2170b53bf947522414 (diff) | |
download | gst-plugins-bad-1496394c0f4be1a718fb189846c6350cbd9e43da.tar.gz gst-plugins-bad-1496394c0f4be1a718fb189846c6350cbd9e43da.tar.bz2 gst-plugins-bad-1496394c0f4be1a718fb189846c6350cbd9e43da.zip |
First stab at porting mplex
Original commit message from CVS:
First stab at porting mplex
Diffstat (limited to 'ext/mplex/vector.hh')
-rw-r--r-- | ext/mplex/vector.hh | 71 |
1 files changed, 71 insertions, 0 deletions
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 <config.h> +#include <deque> +#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__ |