29#include "../../utility/PEBLPath.h"
30#include "../../utility/PError.h"
31#include "../../utility/PEBLUtility.h"
34#include "../../base/Evaluator2.h"
36#include "../../base/Evaluator.h"
40#include "../../base/PEBLObject.h"
61PlatformMovie::PlatformMovie():
74PlatformMovie::PlatformMovie(PlatformMovie & pm):
78 mStream = pm.GetStream();
79 mStreamObj= pm.GetStreamingObj();
86PlatformMovie::~PlatformMovie()
93 WV_closeStream(mStream);
100 WV_freeStreamRendererObj (mStreamObj);
113void PlatformMovie::SetPosition(
int x,
int y)
118 location.h = mHeight;
124 WV_resetStreamRendererOutput(mStreamObj,mRenderer, &location);
128void PlatformMovie::SetWidth(
int w)
132 location.h = mHeight;
138 WV_resetStreamRendererOutput(mStreamObj,mRenderer, &location);
142void PlatformMovie::SetHeight(
int h)
146 location.h = mHeight;
152 WV_resetStreamRendererOutput(mStreamObj,mRenderer, &location);
158void PlatformMovie::SetPlaybackPosition(
unsigned long int x)
161 uint32_t streamDuration = WV_getStreamDuration(mStream);
162 if(x<=streamDuration)
164 WV_seekStream(mStream, x);
171void PlatformMovie::SetVolume(
long double vol)
175 WV_setVolume(mStream, vol);
181ostream & PlatformMovie::SendToStream(ostream& out)
const
184 out <<
"<SDL PlatformMovie>" << flush;
192bool PlatformMovie::LoadMovie(
const std::string & moviefilename,
194 int width,
int height)
197#if defined(PEBL_MOVIES)
209 WV_waaveInit(WAAVE_INIT_AUDIO|WAAVE_INIT_VIDEO);
210 char* fname = (
char*)(filename.c_str());
211 mStream = WV_getStream(fname);
214 SDL_RenderClear(mRenderer);
219 int streamType = WV_getStreamType(mStream);
222 if(streamType == WV_STREAM_TYPE_VIDEO || streamType ==WV_STREAM_TYPE_AUDIOVIDEO)
230 mStreamObj =WV_getStreamRendererObj(mRenderer,&location,1);
231 WV_setStreamingMethod(mStream,mStreamObj);
232 WV_loadStream(mStream);
234 mLength = WV_getStreamDuration(mStream);
236 }
else if(streamType == WV_STREAM_TYPE_AUDIO )
240 WV_loadStream(mStream);
253 WV_getStreamDuration(mStream)));
268bool PlatformMovie::LoadAudioFile(
const std::string & audiofilename)
271#if defined(PEBL_MOVIES)
283 WV_waaveInit(WAAVE_INIT_AUDIO);
284 char* fname = (
char*)(filename.c_str());
285 mStream = WV_getStream(fname);
288 int streamType = WV_getStreamType(mStream);
290 if(streamType == WV_STREAM_TYPE_VIDEO || streamType ==WV_STREAM_TYPE_AUDIOVIDEO)
292 std::cerr <<
"Warning: trying to load video file using LoadAudioFile\n";
294 }
else if(streamType == WV_STREAM_TYPE_AUDIO )
298 WV_loadStream(mStream);
309 WV_getStreamDuration(mStream)));
324void PlatformMovie::StartPlayback()
329 WV_playStream(mStream);
334void PlatformMovie::PausePlayback()
339 WV_pauseStream(mStream);
348void PlatformMovie::RefreshVideo(SDL_Event &event)
351 cerr <<
"refreshingvideo\n";
353 WV_refreshVideoFrame(&event);
359int PlatformMovie::GetState(
int interface)
const
367Variant PlatformMovie::GetProperty(std::string name)
const
371 long unsigned int pos = WV_getStreamClock(mStream);
Variant GetProperty(std::string) const
std::string FindFile(const string &filename)
virtual bool SetProperty(std::string, Variant v)
virtual void SetPlaybackPosition(unsigned long int x)
virtual void SetVolume(long double vol)
std::string ToUpper(const std::string &text)
void SignalFatalError(const std::string &message)