19 #ifndef INCLUDEDSTREAMPLAYERH
20 #define INCLUDEDSTREAMPLAYERH
27 #include <boost/thread.hpp>
28 #include <boost/date_time.hpp>
34 #include "features/spectrum.h"
36 const int DEFAULT_AUDIO_CHUNK_SIZE = 1024;
37 const int VLC_DEFAULT_VOLUME = 80;
44 void handleStream(
void* p_audio_data, uint8_t* p_pcm_buffer,
unsigned int channels,
unsigned int rate,
45 unsigned int nb_samples,
unsigned int bits_per_sample,
unsigned int size, int64_t pts);
46 void prepareRender(
void* p_audio_data, uint8_t** pp_pcm_buffer ,
unsigned int size);
70 string url() {
return mUrl; }
72 void setUrl(
string url) { mUrl = url; }
74 void setOverlapping(
float factor);
76 void setChunkSize(
int size);
83 libvlc_time_t playingTime();
85 libvlc_time_t totalTime();
91 void setVolume(
int vol);
110 static uint16_t* convert8to16(
const uint8_t* source,
int size);
115 static uint16_t* average(uint16_t* source,
int size,
int passes,
int scale= 1);
117 static void reduce(uint16_t* source, uint16_t* dest,
int size,
int passes,
int scale=1);
119 static void addOffset(uint16_t* source, uint16_t* dest,
int size,
int offset);
121 static int pow2(
int n);
127 inline uint16_t buffer(
int i);
129 inline int bufferSize();
131 inline void fillBuffer(uint16_t value);
133 inline void flushBuffer();
141 unsigned int mAudioDataSize;
142 unsigned int mFrequency;
158 libvlc_instance_t *mVlcInstance;
159 libvlc_media_player_t *mMp;
160 libvlc_media_t *mMedia;
162 boost::thread mWatchThread;
163 boost::mutex mPlayingLock;