Gnash  0.8.11dev
AuxStream.h
Go to the documentation of this file.
1 // AuxStream.h - external sound input stream
2 //
3 // Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
4 // Free Software Foundation, Inc
5 //
6 // This program is free software; you can redistribute it and/or modify
7 // it under the terms of the GNU General Public License as published by
8 // the Free Software Foundation; either version 3 of the License, or
9 // (at your option) any later version.
10 //
11 // This program is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 // GNU General Public License for more details.
15 //
16 // You should have received a copy of the GNU General Public License
17 // along with this program; if not, write to the Free Software
18 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19 
20 #ifndef SOUND_AUXSTREAM_H
21 #define SOUND_AUXSTREAM_H
22 
23 #include "InputStream.h" // for inheritance
24 
25 #include <cstdint> // For C99 int types
26 
27 namespace gnash {
28 namespace sound {
29 
31 typedef unsigned int (*aux_streamer_ptr)(void *udata,
32  std::int16_t* samples, unsigned int nSamples, bool& eof);
33 
34 class AuxStream : public InputStream {
35 public:
36  AuxStream(aux_streamer_ptr cb, void* arg)
37  :
38  _samplesFetched(0),
39  _eof(false),
40  _cb(cb),
41  _cbArg(arg)
42  {}
43 
44  // See dox in InputStream.h
45  unsigned int fetchSamples(std::int16_t* to, unsigned int nSamples)
46  {
47  unsigned int wrote = _cb(_cbArg, to, nSamples, _eof);
48  _samplesFetched += wrote;
49  return wrote;
50  }
51 
52  // See dox in InputStream.h
53  unsigned int samplesFetched() const
54  {
55  return _samplesFetched;
56  }
57 
58  // See dox in InputStream.h
59  bool eof() const
60  {
61  return _eof;
62  }
63 
64 private:
65  unsigned int _samplesFetched;
66  bool _eof;
67  aux_streamer_ptr _cb;
68  void* _cbArg;
69 };
70 
71 } // gnash.sound namespace
72 } // namespace gnash
73 
74 #endif // SOUND_AUXSTREAM_H
A sound input stream.
Definition: InputStream.h:47
Definition: AuxStream.h:34
AuxStream(aux_streamer_ptr cb, void *arg)
Definition: AuxStream.h:36
unsigned int(* aux_streamer_ptr)(void *udata, std::int16_t *samples, unsigned int nSamples, bool &eof)
Definition: AuxStream.h:31
Anonymous namespace for callbacks, local functions, event handlers etc.
Definition: dbus_ext.cpp:40
unsigned int fetchSamples(std::int16_t *to, unsigned int nSamples)
Fetch the given amount of samples, non-blocking and thread-safe.
Definition: AuxStream.h:45
bool eof() const
Return true if there&#39;ll be no more data to fetch.
Definition: AuxStream.h:59
unsigned int samplesFetched() const
Return number of samples fetched from this stream.
Definition: AuxStream.h:53