diff -r 000000000000 -r 6474c204b198 content/media/webrtc/MediaEngineTabVideoSource.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/content/media/webrtc/MediaEngineTabVideoSource.h Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,66 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#include "nsIDOMEventListener.h" +#include "MediaEngine.h" +#include "ImageContainer.h" +#include "nsITimer.h" +#include "mozilla/Monitor.h" +#include "nsITabSource.h" + +namespace mozilla { + +class MediaEngineTabVideoSource : public MediaEngineVideoSource, nsIDOMEventListener, nsITimerCallback { + public: + NS_DECL_THREADSAFE_ISUPPORTS + NS_DECL_NSIDOMEVENTLISTENER + NS_DECL_NSITIMERCALLBACK + MediaEngineTabVideoSource(); + + virtual void GetName(nsAString_internal&); + virtual void GetUUID(nsAString_internal&); + virtual nsresult Allocate(const VideoTrackConstraintsN &, + const mozilla::MediaEnginePrefs&); + virtual nsresult Deallocate(); + virtual nsresult Start(mozilla::SourceMediaStream*, mozilla::TrackID); + virtual nsresult Snapshot(uint32_t, nsIDOMFile**); + virtual void NotifyPull(mozilla::MediaStreamGraph*, mozilla::SourceMediaStream*, mozilla::TrackID, mozilla::StreamTime, mozilla::TrackTicks&); + virtual nsresult Stop(mozilla::SourceMediaStream*, mozilla::TrackID); + virtual nsresult Config(bool, uint32_t, bool, uint32_t, bool, uint32_t, int32_t); + virtual bool IsFake(); + void Draw(); + + class StartRunnable : public nsRunnable { + public: + StartRunnable(MediaEngineTabVideoSource *videoSource) : mVideoSource(videoSource) {} + NS_IMETHOD Run(); + nsRefPtr mVideoSource; + }; + + class StopRunnable : public nsRunnable { + public: + StopRunnable(MediaEngineTabVideoSource *videoSource) : mVideoSource(videoSource) {} + NS_IMETHOD Run(); + nsRefPtr mVideoSource; + }; + + class InitRunnable : public nsRunnable { + public: + InitRunnable(MediaEngineTabVideoSource *videoSource) : mVideoSource(videoSource) {} + NS_IMETHOD Run(); + nsRefPtr mVideoSource; + }; + +private: + int mBufW; + int mBufH; + int mTimePerFrame; + ScopedFreePtr mData; + nsCOMPtr mWindow; + nsRefPtr mImage; + nsCOMPtr mTimer; + Monitor mMonitor; + nsCOMPtr mTabSource; + }; +}