2
// Copyright (C) 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
4
// This program is free software; you can redistribute it and/or modify
5
// it under the terms of the GNU General Public License as published by
6
// the Free Software Foundation; either version 3 of the License, or
7
// (at your option) any later version.
9
// This program is distributed in the hope that it will be useful,
10
// but WITHOUT ANY WARRANTY; without even the implied warranty of
11
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
// GNU General Public License for more details.
14
// You should have received a copy of the GNU General Public License
15
// along with this program; if not, write to the Free Software
16
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19
#ifndef __SOUNDMAD_H__
20
#define __SOUNDMAD_H__
23
#include "gnashconfig.h"
27
#include "as_object.h"
28
#include "NetConnection.h"
29
#include "Sound.h" // for inheritance
30
#include <boost/thread/thread.hpp>
31
#include <boost/bind.hpp>
32
#include <boost/thread/mutex.hpp>
38
// Forward declarations
41
class SoundMad : public Sound {
56
void loadSound(std::string file, bool streaming);
57
void start(int offset, int loops);
59
unsigned int getDuration();
60
unsigned int getPosition();
62
static void setupDecoder(SoundMad* so);
63
static bool getAudio(void *owner, boost::uint8_t *stream, int len);
68
boost::thread *setupThread;
69
boost::mutex setupMutex;
70
boost::mutex::scoped_lock *lock;
73
unsigned long bitrate;
75
int readPacket(boost::uint8_t* buf, int buf_size);
76
int seekMedia(int offset, int whence);
83
// If the decoded data doesn't fit the buffer we put the leftovers here
84
boost::uint8_t* leftOverData;
87
// Are this sound attached to the soundhandler?
94
} // end of gnash namespace