Unify playback libs with common base class

Remove duplicate code
Fix bugs in implementations (threading, logic)
Remove SetStreamVolumeMax and use SetGlobalVolume instead
This commit is contained in:
Flamefire committed 2014-05-05 02:10:15 +02:00
1 parent 0692fe3c9b
commit a4b1c3eb86
34 files changed
+1160 -1750

No files matched your search

+14 -13
View File
@@ -5,6 +5,7 @@
map<int, GstreamerAudioStream*> Streams;
queue<int> IDs;
float GlobalVolume = 1.f;
EXTERN_C IMAGE_DOS_HEADER __ImageBase;
DllExport void SetLogCallback (LogCallback Callback)
{
@@ -41,17 +42,20 @@ DllExport void SetGlobalVolume(float Volume)
map<int, GstreamerAudioStream*>::iterator p;
for(p = Streams.begin(); p != Streams.end(); p++) {
p->second->SetStreamVolume(Volume);
p->second->SetStreamVolumeMax(Volume);
}
GlobalVolume = Volume;
}
DllExport float GetGlobalVolume(){
return GlobalVolume;
}
DllExport int GetStreamCount(void)
{
return Streams.size();
}
DllExport void CloseAll(void)
{
map<int, GstreamerAudioStream*>::iterator p;
@@ -66,7 +70,10 @@ DllExport int Load(const wchar_t* Media)
GstreamerAudioStream *s = new GstreamerAudioStream(IDs.front());
Streams.insert(pair<int, GstreamerAudioStream*> (IDs.front(), s));
IDs.pop();
return s->Load(Media);
int result = s->Load(Media);
s->SetStreamVolume(1.f);
s->SetStreamVolumeMax(GlobalVolume);
return result;
}
DllExport int LoadPrescan(const wchar_t* Media, bool Prescan)
@@ -74,7 +81,10 @@ DllExport int LoadPrescan(const wchar_t* Media, bool Prescan)
GstreamerAudioStream *s = new GstreamerAudioStream(IDs.front());
Streams.insert(pair<int, GstreamerAudioStream*> (IDs.front(), s));
IDs.pop();
return s->Load(Media, Prescan);
int result = s->Load(Media, Prescan);
s->SetStreamVolume(1.f);
s->SetStreamVolumeMax(GlobalVolume);
return result;
}
DllExport void Close(int Stream)
@@ -160,15 +170,6 @@ DllExport void SetStreamVolume(int Stream, float Volume)
}
}
DllExport void SetStreamVolumeMax(int Stream, float Volume)
{
map<int,GstreamerAudioStream*>::iterator it = Streams.find(Stream);
if(it != Streams.end())
{
return it->second->SetStreamVolumeMax(Volume);
}
}
DllExport float GetLength(int Stream)
{
map<int,GstreamerAudioStream*>::iterator it = Streams.find(Stream);