2012-07-30 14:59:05 -07:00
|
|
|
/* 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/. */
|
|
|
|
|
|
|
|
#ifndef DOM_CAMERA_CAMERAPREVIEW_H
|
|
|
|
#define DOM_CAMERA_CAMERAPREVIEW_H
|
|
|
|
|
|
|
|
#include "MediaStreamGraph.h"
|
|
|
|
#include "StreamBuffer.h"
|
|
|
|
#include "nsDOMMediaStream.h"
|
|
|
|
|
|
|
|
#define DOM_CAMERA_LOG_LEVEL 3
|
|
|
|
#include "CameraCommon.h"
|
|
|
|
|
|
|
|
using namespace mozilla;
|
|
|
|
using namespace mozilla::layers;
|
|
|
|
|
|
|
|
namespace mozilla {
|
|
|
|
|
|
|
|
class CameraPreview : public nsDOMMediaStream
|
|
|
|
, public MediaStreamListener
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
NS_DECL_ISUPPORTS
|
|
|
|
|
2012-08-22 08:56:38 -07:00
|
|
|
CameraPreview(nsIThread* aCameraThread, uint32_t aWidth, uint32_t aHeight);
|
2012-07-30 14:59:05 -07:00
|
|
|
|
2012-08-22 08:56:38 -07:00
|
|
|
void SetFrameRate(uint32_t aFramesPerSecond);
|
2012-07-30 14:59:05 -07:00
|
|
|
|
|
|
|
NS_IMETHODIMP
|
|
|
|
GetCurrentTime(double* aCurrentTime) {
|
|
|
|
return nsDOMMediaStream::GetCurrentTime(aCurrentTime);
|
|
|
|
}
|
|
|
|
|
2012-08-01 11:21:27 -07:00
|
|
|
void Start();
|
|
|
|
void Stop();
|
|
|
|
|
|
|
|
virtual nsresult StartImpl() = 0;
|
|
|
|
virtual nsresult StopImpl() = 0;
|
2012-07-30 14:59:05 -07:00
|
|
|
|
|
|
|
protected:
|
|
|
|
virtual ~CameraPreview();
|
|
|
|
|
2012-08-22 08:56:38 -07:00
|
|
|
uint32_t mWidth;
|
|
|
|
uint32_t mHeight;
|
|
|
|
uint32_t mFramesPerSecond;
|
2012-07-30 14:59:05 -07:00
|
|
|
SourceMediaStream* mInput;
|
|
|
|
nsRefPtr<mozilla::layers::ImageContainer> mImageContainer;
|
|
|
|
VideoSegment mVideoSegment;
|
2012-08-22 08:56:38 -07:00
|
|
|
uint32_t mFrameCount;
|
2012-08-01 11:21:27 -07:00
|
|
|
nsCOMPtr<nsIThread> mCameraThread;
|
2012-07-30 14:59:05 -07:00
|
|
|
|
|
|
|
enum { TRACK_VIDEO = 1 };
|
|
|
|
|
|
|
|
private:
|
|
|
|
CameraPreview(const CameraPreview&) MOZ_DELETE;
|
|
|
|
CameraPreview& operator=(const CameraPreview&) MOZ_DELETE;
|
|
|
|
};
|
|
|
|
|
|
|
|
} // namespace mozilla
|
|
|
|
|
|
|
|
#endif // DOM_CAMERA_CAMERAPREVIEW_H
|