partial clean up
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36198 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -191,7 +191,7 @@ WebCamMediaAddOn::FillDefaultFlavorInfo(flavor_info* info)
|
|||||||
|
|
||||||
|
|
||||||
BMediaAddOn *
|
BMediaAddOn *
|
||||||
make_media_addon(image_id imid)
|
make_media_addon(image_id id)
|
||||||
{
|
{
|
||||||
return new WebCamMediaAddOn(imid);
|
return new WebCamMediaAddOn(id);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,8 +14,7 @@ extern "C" _EXPORT BMediaAddOn *make_media_addon(image_id you);
|
|||||||
class CamRoster;
|
class CamRoster;
|
||||||
class CamDevice;
|
class CamDevice;
|
||||||
|
|
||||||
class WebCamMediaAddOn : public BMediaAddOn
|
class WebCamMediaAddOn : public BMediaAddOn {
|
||||||
{
|
|
||||||
public:
|
public:
|
||||||
WebCamMediaAddOn(image_id imid);
|
WebCamMediaAddOn(image_id imid);
|
||||||
virtual ~WebCamMediaAddOn();
|
virtual ~WebCamMediaAddOn();
|
||||||
|
|||||||
@@ -10,8 +10,7 @@
|
|||||||
#include <interface/Rect.h>
|
#include <interface/Rect.h>
|
||||||
#include "CamFilterInterface.h"
|
#include "CamFilterInterface.h"
|
||||||
|
|
||||||
class CamBufferedFilterInterface : public CamFilterInterface
|
class CamBufferedFilterInterface : public CamFilterInterface {
|
||||||
{
|
|
||||||
public:
|
public:
|
||||||
CamBufferedFilterInterface(CamDevice *device, bool allowWrite);
|
CamBufferedFilterInterface(CamDevice *device, bool allowWrite);
|
||||||
virtual ~CamBufferedFilterInterface();
|
virtual ~CamBufferedFilterInterface();
|
||||||
|
|||||||
@@ -126,4 +126,3 @@ CamBufferingDeframer::DiscardFromInput(size_t size)
|
|||||||
fInputBuffIndex = next;
|
fInputBuffIndex = next;
|
||||||
return size;
|
return size;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -7,8 +7,7 @@
|
|||||||
|
|
||||||
#include "CamDeframer.h"
|
#include "CamDeframer.h"
|
||||||
|
|
||||||
class CamBufferingDeframer : public CamDeframer
|
class CamBufferingDeframer : public CamDeframer {
|
||||||
{
|
|
||||||
public:
|
public:
|
||||||
CamBufferingDeframer(CamDevice *device);
|
CamBufferingDeframer(CamDevice *device);
|
||||||
virtual ~CamBufferingDeframer();
|
virtual ~CamBufferingDeframer();
|
||||||
|
|||||||
@@ -68,12 +68,9 @@ CamColorSpaceTransform::SetVideoFrame(BRect rect)
|
|||||||
CamColorSpaceTransform *
|
CamColorSpaceTransform *
|
||||||
CamColorSpaceTransform::Create(const char *name)
|
CamColorSpaceTransform::Create(const char *name)
|
||||||
{
|
{
|
||||||
int i;
|
for (int i = 0; kTransformTable[i].name; i++) {
|
||||||
for (i = 0; kTransformTable[i].name; i++) {
|
|
||||||
if (!strcmp(kTransformTable[i].name, name))
|
if (!strcmp(kTransformTable[i].name, name))
|
||||||
return kTransformTable[i].instfunc();
|
return kTransformTable[i].instfunc();
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -9,8 +9,7 @@
|
|||||||
#include <Rect.h>
|
#include <Rect.h>
|
||||||
|
|
||||||
// This class represents the camera's (cmos or whatever) sensor chip
|
// This class represents the camera's (cmos or whatever) sensor chip
|
||||||
class CamColorSpaceTransform
|
class CamColorSpaceTransform {
|
||||||
{
|
|
||||||
public:
|
public:
|
||||||
CamColorSpaceTransform();
|
CamColorSpaceTransform();
|
||||||
virtual ~CamColorSpaceTransform();
|
virtual ~CamColorSpaceTransform();
|
||||||
|
|||||||
@@ -217,4 +217,3 @@ CamDeframer::AllocFrame()
|
|||||||
{
|
{
|
||||||
return new CamFrame();
|
return new CamFrame();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -22,8 +22,7 @@ ST_FRAME
|
|||||||
|
|
||||||
|
|
||||||
/* should have a real Frame class someday */
|
/* should have a real Frame class someday */
|
||||||
class CamFrame : public BMallocIO
|
class CamFrame : public BMallocIO {
|
||||||
{
|
|
||||||
public:
|
public:
|
||||||
CamFrame() : BMallocIO() { fStamp = system_time(); };
|
CamFrame() : BMallocIO() { fStamp = system_time(); };
|
||||||
virtual ~CamFrame() {};
|
virtual ~CamFrame() {};
|
||||||
@@ -31,8 +30,7 @@ bigtime_t Stamp() const { return fStamp; };
|
|||||||
bigtime_t fStamp;
|
bigtime_t fStamp;
|
||||||
};
|
};
|
||||||
|
|
||||||
class CamDeframer : public CamFilterInterface
|
class CamDeframer : public CamFilterInterface {
|
||||||
{
|
|
||||||
public:
|
public:
|
||||||
CamDeframer(CamDevice *device);
|
CamDeframer(CamDevice *device);
|
||||||
virtual ~CamDeframer();
|
virtual ~CamDeframer();
|
||||||
|
|||||||
@@ -233,12 +233,14 @@ CamDevice::AddParameters(BParameterGroup *group, int32 &index)
|
|||||||
fFirstParameterID = index;
|
fFirstParameterID = index;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
CamDevice::GetParameterValue(int32 id, bigtime_t *last_change, void *value, size_t *size)
|
CamDevice::GetParameterValue(int32 id, bigtime_t *last_change, void *value, size_t *size)
|
||||||
{
|
{
|
||||||
return B_BAD_VALUE;
|
return B_BAD_VALUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
CamDevice::SetParameterValue(int32 id, bigtime_t when, const void *value, size_t size)
|
CamDevice::SetParameterValue(int32 id, bigtime_t when, const void *value, size_t size)
|
||||||
{
|
{
|
||||||
@@ -246,7 +248,6 @@ CamDevice::SetParameterValue(int32 id, bigtime_t when, const void *value, size_t
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
size_t
|
size_t
|
||||||
CamDevice::MinRawFrameSize()
|
CamDevice::MinRawFrameSize()
|
||||||
{
|
{
|
||||||
@@ -395,6 +396,7 @@ CamDevice::WriteIIC8(uint8 address, uint8 data)
|
|||||||
return WriteIIC(address, &data, 1);
|
return WriteIIC(address, &data, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
ssize_t
|
ssize_t
|
||||||
CamDevice::WriteIIC16(uint8 address, uint16 data)
|
CamDevice::WriteIIC16(uint8 address, uint16 data)
|
||||||
{
|
{
|
||||||
@@ -406,8 +408,6 @@ CamDevice::WriteIIC16(uint8 address, uint16 data)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ssize_t
|
ssize_t
|
||||||
CamDevice::ReadIIC(uint8 address, uint8 *data)
|
CamDevice::ReadIIC(uint8 address, uint8 *data)
|
||||||
{
|
{
|
||||||
@@ -653,8 +653,7 @@ CamDeviceAddon::Sniff(BUSBDevice *device)
|
|||||||
return EINVAL;
|
return EINVAL;
|
||||||
|
|
||||||
bool supported = false;
|
bool supported = false;
|
||||||
for (uint32 i = 0; !supported && fSupportedDevices[i].vendor; i++)
|
for (uint32 i = 0; !supported && fSupportedDevices[i].vendor; i++) {
|
||||||
{
|
|
||||||
if ((fSupportedDevices[i].desc.vendor != 0
|
if ((fSupportedDevices[i].desc.vendor != 0
|
||||||
&& device->VendorID() != fSupportedDevices[i].desc.vendor)
|
&& device->VendorID() != fSupportedDevices[i].desc.vendor)
|
||||||
|| (fSupportedDevices[i].desc.product != 0
|
|| (fSupportedDevices[i].desc.product != 0
|
||||||
@@ -711,4 +710,3 @@ CamDeviceAddon::SetSupportedDevices(const usb_webcam_support_descriptor *devs)
|
|||||||
{
|
{
|
||||||
fSupportedDevices = devs;
|
fSupportedDevices = devs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -145,4 +145,3 @@ CamFilterInterface::SetVideoFrame(BRect frame)
|
|||||||
fVideoFrame = frame;
|
fVideoFrame = frame;
|
||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -10,8 +10,7 @@
|
|||||||
#include <interface/Rect.h>
|
#include <interface/Rect.h>
|
||||||
class CamDevice;
|
class CamDevice;
|
||||||
|
|
||||||
class CamFilterInterface : public BPositionIO
|
class CamFilterInterface : public BPositionIO {
|
||||||
{
|
|
||||||
public:
|
public:
|
||||||
CamFilterInterface(CamDevice *device);
|
CamFilterInterface(CamDevice *device);
|
||||||
virtual ~CamFilterInterface();
|
virtual ~CamFilterInterface();
|
||||||
|
|||||||
@@ -18,7 +18,6 @@ extern "C" status_t get_webcam_addon_##modname(WebCamMediaAddOn* webcam, CamDevi
|
|||||||
#undef B_WEBCAM_MKINTFUNC
|
#undef B_WEBCAM_MKINTFUNC
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CamRoster::CamRoster(WebCamMediaAddOn* _addon)
|
CamRoster::CamRoster(WebCamMediaAddOn* _addon)
|
||||||
: BUSBRoster(),
|
: BUSBRoster(),
|
||||||
fLocker("WebcamRosterLock"),
|
fLocker("WebcamRosterLock"),
|
||||||
@@ -40,8 +39,7 @@ CamRoster::DeviceAdded(BUSBDevice* _device)
|
|||||||
{
|
{
|
||||||
PRINT((CH "()" CT));
|
PRINT((CH "()" CT));
|
||||||
status_t err;
|
status_t err;
|
||||||
for( int16 i = fCamerasAddons.CountItems()-1; i >= 0; --i )
|
for (int16 i = fCamerasAddons.CountItems() - 1; i >= 0; --i ) {
|
||||||
{
|
|
||||||
CamDeviceAddon *ao = (CamDeviceAddon *)fCamerasAddons.ItemAt(i);
|
CamDeviceAddon *ao = (CamDeviceAddon *)fCamerasAddons.ItemAt(i);
|
||||||
PRINT((CH ": checking %s for support..." CT, ao->BrandName()));
|
PRINT((CH ": checking %s for support..." CT, ao->BrandName()));
|
||||||
err = ao->Sniff(_device);
|
err = ao->Sniff(_device);
|
||||||
@@ -50,8 +48,7 @@ CamRoster::DeviceAdded(BUSBDevice* _device)
|
|||||||
CamDevice *cam = ao->Instantiate(*this, _device);
|
CamDevice *cam = ao->Instantiate(*this, _device);
|
||||||
PRINT((CH ": found camera %s:%s!" CT, cam->BrandName(), cam->ModelName()));
|
PRINT((CH ": found camera %s:%s!" CT, cam->BrandName(), cam->ModelName()));
|
||||||
err = cam->InitCheck();
|
err = cam->InitCheck();
|
||||||
if (err >= B_OK)
|
if (err >= B_OK) {
|
||||||
{
|
|
||||||
fCameras.AddItem(cam);
|
fCameras.AddItem(cam);
|
||||||
fAddon->CameraAdded(cam);
|
fAddon->CameraAdded(cam);
|
||||||
return B_OK;
|
return B_OK;
|
||||||
@@ -66,11 +63,9 @@ void
|
|||||||
CamRoster::DeviceRemoved(BUSBDevice* _device)
|
CamRoster::DeviceRemoved(BUSBDevice* _device)
|
||||||
{
|
{
|
||||||
PRINT((CH "()" CT));
|
PRINT((CH "()" CT));
|
||||||
for(int32 i = 0; i < fCameras.CountItems(); ++i)
|
for (int32 i = 0; i < fCameras.CountItems(); ++i) {
|
||||||
{
|
|
||||||
CamDevice* cam = (CamDevice *)fCameras.ItemAt(i);
|
CamDevice* cam = (CamDevice *)fCameras.ItemAt(i);
|
||||||
if( cam->Matches(_device) )
|
if (cam->Matches(_device)) {
|
||||||
{
|
|
||||||
PRINT((CH ": camera %s:%s removed" CT, cam->BrandName(), cam->ModelName()));
|
PRINT((CH ": camera %s:%s removed" CT, cam->BrandName(), cam->ModelName()));
|
||||||
fCameras.RemoveItem(i);
|
fCameras.RemoveItem(i);
|
||||||
fAddon->CameraRemoved(cam);
|
fAddon->CameraRemoved(cam);
|
||||||
|
|||||||
@@ -14,8 +14,7 @@
|
|||||||
class WebCamMediaAddOn;
|
class WebCamMediaAddOn;
|
||||||
class CamDeviceAddon;
|
class CamDeviceAddon;
|
||||||
|
|
||||||
class CamRoster : public BUSBRoster
|
class CamRoster : public BUSBRoster {
|
||||||
{
|
|
||||||
public:
|
public:
|
||||||
CamRoster(WebCamMediaAddOn* _addon);
|
CamRoster(WebCamMediaAddOn* _addon);
|
||||||
virtual ~CamRoster();
|
virtual ~CamRoster();
|
||||||
|
|||||||
@@ -130,9 +130,7 @@ status_t
|
|||||||
CamSensor::ProbeByIICSignature(const uint8 *regList, const uint8 *matchList,
|
CamSensor::ProbeByIICSignature(const uint8 *regList, const uint8 *matchList,
|
||||||
size_t count)
|
size_t count)
|
||||||
{
|
{
|
||||||
int i;
|
for (int i = 0; i < count; i++) {
|
||||||
|
|
||||||
for (i = 0; i < count; i++) {
|
|
||||||
uint8 value = 0;
|
uint8 value = 0;
|
||||||
ssize_t len;
|
ssize_t len;
|
||||||
len = Device()->ReadIIC8(regList[i], &value);
|
len = Device()->ReadIIC8(regList[i], &value);
|
||||||
|
|||||||
@@ -9,8 +9,7 @@
|
|||||||
#include <Rect.h>
|
#include <Rect.h>
|
||||||
|
|
||||||
// This class represents the camera's (cmos or whatever) sensor chip
|
// This class represents the camera's (cmos or whatever) sensor chip
|
||||||
class CamSensor
|
class CamSensor {
|
||||||
{
|
|
||||||
public:
|
public:
|
||||||
CamSensor(CamDevice *_camera);
|
CamSensor(CamDevice *_camera);
|
||||||
virtual ~CamSensor();
|
virtual ~CamSensor();
|
||||||
|
|||||||
@@ -196,4 +196,3 @@ CamStreamingDeframer::Write(const void *buffer, size_t size)
|
|||||||
fInputBuff.SetSize(bufsize - end);
|
fInputBuff.SetSize(bufsize - end);
|
||||||
return size;
|
return size;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -7,8 +7,7 @@
|
|||||||
|
|
||||||
#include "CamDeframer.h"
|
#include "CamDeframer.h"
|
||||||
|
|
||||||
class CamStreamingDeframer : public CamDeframer
|
class CamStreamingDeframer : public CamDeframer {
|
||||||
{
|
|
||||||
public:
|
public:
|
||||||
CamStreamingDeframer(CamDevice *device);
|
CamStreamingDeframer(CamDevice *device);
|
||||||
virtual ~CamStreamingDeframer();
|
virtual ~CamStreamingDeframer();
|
||||||
|
|||||||
@@ -49,8 +49,10 @@
|
|||||||
//#define FIELD_RATE 29.97f
|
//#define FIELD_RATE 29.97f
|
||||||
#define FIELD_RATE 5.f
|
#define FIELD_RATE 5.f
|
||||||
|
|
||||||
|
|
||||||
int32 VideoProducer::fInstances = 0;
|
int32 VideoProducer::fInstances = 0;
|
||||||
|
|
||||||
|
|
||||||
VideoProducer::VideoProducer(
|
VideoProducer::VideoProducer(
|
||||||
BMediaAddOn *addon, CamDevice *dev, const char *name, int32 internal_id)
|
BMediaAddOn *addon, CamDevice *dev, const char *name, int32 internal_id)
|
||||||
: BMediaNode(name),
|
: BMediaNode(name),
|
||||||
@@ -88,6 +90,7 @@ VideoProducer::VideoProducer(
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
VideoProducer::~VideoProducer()
|
VideoProducer::~VideoProducer()
|
||||||
{
|
{
|
||||||
if (fInitStatus == B_OK) {
|
if (fInitStatus == B_OK) {
|
||||||
@@ -102,14 +105,15 @@ VideoProducer::~VideoProducer()
|
|||||||
atomic_add(&fInstances, -1);
|
atomic_add(&fInstances, -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* BMediaNode */
|
|
||||||
|
|
||||||
|
/* BMediaNode */
|
||||||
port_id
|
port_id
|
||||||
VideoProducer::ControlPort() const
|
VideoProducer::ControlPort() const
|
||||||
{
|
{
|
||||||
return BMediaNode::ControlPort();
|
return BMediaNode::ControlPort();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
BMediaAddOn *
|
BMediaAddOn *
|
||||||
VideoProducer::AddOn(int32 *internal_id) const
|
VideoProducer::AddOn(int32 *internal_id) const
|
||||||
{
|
{
|
||||||
@@ -118,12 +122,14 @@ VideoProducer::AddOn(int32 *internal_id) const
|
|||||||
return fAddOn;
|
return fAddOn;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
VideoProducer::HandleMessage(int32 /*message*/, const void* /*data*/, size_t /*size*/)
|
VideoProducer::HandleMessage(int32 /*message*/, const void* /*data*/, size_t /*size*/)
|
||||||
{
|
{
|
||||||
return B_ERROR;
|
return B_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
VideoProducer::Preroll()
|
VideoProducer::Preroll()
|
||||||
{
|
{
|
||||||
@@ -131,6 +137,7 @@ VideoProducer::Preroll()
|
|||||||
* a chance to start. */
|
* a chance to start. */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
VideoProducer::SetTimeSource(BTimeSource* /*time_source*/)
|
VideoProducer::SetTimeSource(BTimeSource* /*time_source*/)
|
||||||
{
|
{
|
||||||
@@ -138,14 +145,17 @@ VideoProducer::SetTimeSource(BTimeSource* /*time_source*/)
|
|||||||
release_sem(fFrameSync);
|
release_sem(fFrameSync);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
VideoProducer::RequestCompleted(const media_request_info &info)
|
VideoProducer::RequestCompleted(const media_request_info &info)
|
||||||
{
|
{
|
||||||
return BMediaNode::RequestCompleted(info);
|
return BMediaNode::RequestCompleted(info);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* BMediaEventLooper */
|
/* BMediaEventLooper */
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
VideoProducer::NodeRegistered()
|
VideoProducer::NodeRegistered()
|
||||||
{
|
{
|
||||||
@@ -213,50 +223,56 @@ VideoProducer::NodeRegistered()
|
|||||||
Run();
|
Run();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
VideoProducer::Start(bigtime_t performance_time)
|
VideoProducer::Start(bigtime_t performance_time)
|
||||||
{
|
{
|
||||||
BMediaEventLooper::Start(performance_time);
|
BMediaEventLooper::Start(performance_time);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
VideoProducer::Stop(bigtime_t performance_time, bool immediate)
|
VideoProducer::Stop(bigtime_t performance_time, bool immediate)
|
||||||
{
|
{
|
||||||
BMediaEventLooper::Stop(performance_time, immediate);
|
BMediaEventLooper::Stop(performance_time, immediate);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
VideoProducer::Seek(bigtime_t media_time, bigtime_t performance_time)
|
VideoProducer::Seek(bigtime_t media_time, bigtime_t performance_time)
|
||||||
{
|
{
|
||||||
BMediaEventLooper::Seek(media_time, performance_time);
|
BMediaEventLooper::Seek(media_time, performance_time);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
VideoProducer::TimeWarp(bigtime_t at_real_time, bigtime_t to_performance_time)
|
VideoProducer::TimeWarp(bigtime_t at_real_time, bigtime_t to_performance_time)
|
||||||
{
|
{
|
||||||
BMediaEventLooper::TimeWarp(at_real_time, to_performance_time);
|
BMediaEventLooper::TimeWarp(at_real_time, to_performance_time);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
VideoProducer::AddTimer(bigtime_t at_performance_time, int32 cookie)
|
VideoProducer::AddTimer(bigtime_t at_performance_time, int32 cookie)
|
||||||
{
|
{
|
||||||
return BMediaEventLooper::AddTimer(at_performance_time, cookie);
|
return BMediaEventLooper::AddTimer(at_performance_time, cookie);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
VideoProducer::SetRunMode(run_mode mode)
|
VideoProducer::SetRunMode(run_mode mode)
|
||||||
{
|
{
|
||||||
BMediaEventLooper::SetRunMode(mode);
|
BMediaEventLooper::SetRunMode(mode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
VideoProducer::HandleEvent(const media_timed_event *event,
|
VideoProducer::HandleEvent(const media_timed_event *event,
|
||||||
bigtime_t lateness, bool realTimeEvent)
|
bigtime_t lateness, bool realTimeEvent)
|
||||||
{
|
{
|
||||||
TOUCH(lateness); TOUCH(realTimeEvent);
|
TOUCH(lateness); TOUCH(realTimeEvent);
|
||||||
|
|
||||||
switch(event->type)
|
switch(event->type) {
|
||||||
{
|
|
||||||
case BTimedEventQueue::B_START:
|
case BTimedEventQueue::B_START:
|
||||||
HandleStart(event->event_time);
|
HandleStart(event->event_time);
|
||||||
break;
|
break;
|
||||||
@@ -278,32 +294,38 @@ VideoProducer::HandleEvent(const media_timed_event *event,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
VideoProducer::CleanUpEvent(const media_timed_event *event)
|
VideoProducer::CleanUpEvent(const media_timed_event *event)
|
||||||
{
|
{
|
||||||
BMediaEventLooper::CleanUpEvent(event);
|
BMediaEventLooper::CleanUpEvent(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bigtime_t
|
bigtime_t
|
||||||
VideoProducer::OfflineTime()
|
VideoProducer::OfflineTime()
|
||||||
{
|
{
|
||||||
return BMediaEventLooper::OfflineTime();
|
return BMediaEventLooper::OfflineTime();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
VideoProducer::ControlLoop()
|
VideoProducer::ControlLoop()
|
||||||
{
|
{
|
||||||
BMediaEventLooper::ControlLoop();
|
BMediaEventLooper::ControlLoop();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
VideoProducer::DeleteHook(BMediaNode * node)
|
VideoProducer::DeleteHook(BMediaNode * node)
|
||||||
{
|
{
|
||||||
return BMediaEventLooper::DeleteHook(node);
|
return BMediaEventLooper::DeleteHook(node);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* BBufferProducer */
|
/* BBufferProducer */
|
||||||
|
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
VideoProducer::FormatSuggestionRequested(
|
VideoProducer::FormatSuggestionRequested(
|
||||||
media_type type, int32 quality, media_format *format)
|
media_type type, int32 quality, media_format *format)
|
||||||
@@ -326,6 +348,7 @@ VideoProducer::FormatSuggestionRequested(
|
|||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
VideoProducer::FormatProposal(const media_source &output, media_format *format)
|
VideoProducer::FormatProposal(const media_source &output, media_format *format)
|
||||||
{
|
{
|
||||||
@@ -365,6 +388,7 @@ VideoProducer::FormatProposal(const media_source &output, media_format *format)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
VideoProducer::FormatChangeRequested(const media_source &source,
|
VideoProducer::FormatChangeRequested(const media_source &source,
|
||||||
const media_destination &destination, media_format *io_format,
|
const media_destination &destination, media_format *io_format,
|
||||||
@@ -377,6 +401,7 @@ VideoProducer::FormatChangeRequested(const media_source &source,
|
|||||||
return B_ERROR;
|
return B_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
VideoProducer::GetNextOutput(int32 *cookie, media_output *out_output)
|
VideoProducer::GetNextOutput(int32 *cookie, media_output *out_output)
|
||||||
{
|
{
|
||||||
@@ -391,6 +416,7 @@ VideoProducer::GetNextOutput(int32 *cookie, media_output *out_output)
|
|||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
VideoProducer::DisposeOutputCookie(int32 cookie)
|
VideoProducer::DisposeOutputCookie(int32 cookie)
|
||||||
{
|
{
|
||||||
@@ -399,6 +425,7 @@ VideoProducer::DisposeOutputCookie(int32 cookie)
|
|||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
VideoProducer::SetBufferGroup(const media_source &for_source,
|
VideoProducer::SetBufferGroup(const media_source &for_source,
|
||||||
BBufferGroup *group)
|
BBufferGroup *group)
|
||||||
@@ -408,6 +435,7 @@ VideoProducer::SetBufferGroup(const media_source &for_source,
|
|||||||
return B_ERROR;
|
return B_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
VideoProducer::VideoClippingChanged(const media_source &for_source,
|
VideoProducer::VideoClippingChanged(const media_source &for_source,
|
||||||
int16 num_shorts, int16 *clip_data,
|
int16 num_shorts, int16 *clip_data,
|
||||||
@@ -419,6 +447,7 @@ VideoProducer::VideoClippingChanged(const media_source &for_source,
|
|||||||
return B_ERROR;
|
return B_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
VideoProducer::GetLatency(bigtime_t *out_latency)
|
VideoProducer::GetLatency(bigtime_t *out_latency)
|
||||||
{
|
{
|
||||||
@@ -426,6 +455,7 @@ VideoProducer::GetLatency(bigtime_t *out_latency)
|
|||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
VideoProducer::PrepareToConnect(const media_source &source,
|
VideoProducer::PrepareToConnect(const media_source &source,
|
||||||
const media_destination &destination, media_format *format,
|
const media_destination &destination, media_format *format,
|
||||||
@@ -502,6 +532,7 @@ VideoProducer::PrepareToConnect(const media_source &source,
|
|||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
VideoProducer::Connect(status_t error, const media_source &source,
|
VideoProducer::Connect(status_t error, const media_source &source,
|
||||||
const media_destination &destination, const media_format &format,
|
const media_destination &destination, const media_format &format,
|
||||||
@@ -522,8 +553,8 @@ VideoProducer::Connect(status_t error, const media_source &source,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( (source != fOutput.source) || (error < B_OK) ||
|
if (source != fOutput.source || error < B_OK
|
||||||
!const_cast<media_format *>(&format)->Matches(&fOutput.format)) {
|
|| !const_cast<media_format *>(&format)->Matches(&fOutput.format)) {
|
||||||
PRINTF(1, ("Connect: Connect error\n"));
|
PRINTF(1, ("Connect: Connect error\n"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -611,6 +642,7 @@ VideoProducer::Disconnect(const media_source &source,
|
|||||||
fConnected = false;
|
fConnected = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
VideoProducer::LateNoticeReceived(const media_source &source,
|
VideoProducer::LateNoticeReceived(const media_source &source,
|
||||||
bigtime_t how_much, bigtime_t performance_time)
|
bigtime_t how_much, bigtime_t performance_time)
|
||||||
@@ -618,6 +650,7 @@ VideoProducer::LateNoticeReceived(const media_source &source,
|
|||||||
TOUCH(source); TOUCH(how_much); TOUCH(performance_time);
|
TOUCH(source); TOUCH(how_much); TOUCH(performance_time);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
VideoProducer::EnableOutput(const media_source &source, bool enabled,
|
VideoProducer::EnableOutput(const media_source &source, bool enabled,
|
||||||
int32 *_deprecated_)
|
int32 *_deprecated_)
|
||||||
@@ -630,6 +663,7 @@ VideoProducer::EnableOutput(const media_source &source, bool enabled,
|
|||||||
fEnabled = enabled;
|
fEnabled = enabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
VideoProducer::SetPlayRate(int32 numer, int32 denom)
|
VideoProducer::SetPlayRate(int32 numer, int32 denom)
|
||||||
{
|
{
|
||||||
@@ -638,6 +672,7 @@ VideoProducer::SetPlayRate(int32 numer, int32 denom)
|
|||||||
return B_ERROR;
|
return B_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
VideoProducer::AdditionalBufferRequested(const media_source &source,
|
VideoProducer::AdditionalBufferRequested(const media_source &source,
|
||||||
media_buffer_id prev_buffer, bigtime_t prev_time,
|
media_buffer_id prev_buffer, bigtime_t prev_time,
|
||||||
@@ -646,6 +681,7 @@ VideoProducer::AdditionalBufferRequested(const media_source &source,
|
|||||||
TOUCH(source); TOUCH(prev_buffer); TOUCH(prev_time); TOUCH(prev_tag);
|
TOUCH(source); TOUCH(prev_buffer); TOUCH(prev_time); TOUCH(prev_tag);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
VideoProducer::LatencyChanged(const media_source &source,
|
VideoProducer::LatencyChanged(const media_source &source,
|
||||||
const media_destination &destination, bigtime_t new_latency,
|
const media_destination &destination, bigtime_t new_latency,
|
||||||
@@ -654,8 +690,10 @@ VideoProducer::LatencyChanged(const media_source &source,
|
|||||||
TOUCH(source); TOUCH(destination); TOUCH(new_latency); TOUCH(flags);
|
TOUCH(source); TOUCH(destination); TOUCH(new_latency); TOUCH(flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* BControllable */
|
/* BControllable */
|
||||||
|
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
VideoProducer::GetParameterValue(
|
VideoProducer::GetParameterValue(
|
||||||
int32 id, bigtime_t *last_change, void *value, size_t *size)
|
int32 id, bigtime_t *last_change, void *value, size_t *size)
|
||||||
@@ -694,6 +732,7 @@ VideoProducer::GetParameterValue(
|
|||||||
return B_BAD_VALUE;
|
return B_BAD_VALUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
VideoProducer::SetParameterValue(
|
VideoProducer::SetParameterValue(
|
||||||
int32 id, bigtime_t when, const void *value, size_t size)
|
int32 id, bigtime_t when, const void *value, size_t size)
|
||||||
@@ -729,14 +768,17 @@ VideoProducer::SetParameterValue(
|
|||||||
BroadcastNewParameterValue(when, id, (void *)value, size);
|
BroadcastNewParameterValue(when, id, (void *)value, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
VideoProducer::StartControlPanel(BMessenger *out_messenger)
|
VideoProducer::StartControlPanel(BMessenger *out_messenger)
|
||||||
{
|
{
|
||||||
return BControllable::StartControlPanel(out_messenger);
|
return BControllable::StartControlPanel(out_messenger);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* VideoProducer */
|
/* VideoProducer */
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
VideoProducer::HandleStart(bigtime_t performance_time)
|
VideoProducer::HandleStart(bigtime_t performance_time)
|
||||||
{
|
{
|
||||||
@@ -778,6 +820,7 @@ err1:
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
VideoProducer::HandleStop(void)
|
VideoProducer::HandleStop(void)
|
||||||
{
|
{
|
||||||
@@ -797,6 +840,7 @@ VideoProducer::HandleStop(void)
|
|||||||
fRunning = false;
|
fRunning = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
VideoProducer::HandleTimeWarp(bigtime_t performance_time)
|
VideoProducer::HandleTimeWarp(bigtime_t performance_time)
|
||||||
{
|
{
|
||||||
@@ -807,6 +851,7 @@ VideoProducer::HandleTimeWarp(bigtime_t performance_time)
|
|||||||
release_sem(fFrameSync);
|
release_sem(fFrameSync);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
VideoProducer::HandleSeek(bigtime_t performance_time)
|
VideoProducer::HandleSeek(bigtime_t performance_time)
|
||||||
{
|
{
|
||||||
@@ -817,6 +862,7 @@ VideoProducer::HandleSeek(bigtime_t performance_time)
|
|||||||
release_sem(fFrameSync);
|
release_sem(fFrameSync);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
VideoProducer::_UpdateStats()
|
VideoProducer::_UpdateStats()
|
||||||
{
|
{
|
||||||
@@ -834,7 +880,6 @@ VideoProducer::_UpdateStats()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* The following functions form the thread that generates frames. You should
|
/* The following functions form the thread that generates frames. You should
|
||||||
* replace this with the code that interfaces to your hardware. */
|
* replace this with the code that interfaces to your hardware. */
|
||||||
int32
|
int32
|
||||||
@@ -982,6 +1027,7 @@ PRINT(("PS: %Ld\n", fProcessingLatency));
|
|||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int32
|
int32
|
||||||
VideoProducer::_frame_generator_(void *data)
|
VideoProducer::_frame_generator_(void *data)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -21,8 +21,7 @@ class BTextParameter;
|
|||||||
class VideoProducer :
|
class VideoProducer :
|
||||||
public virtual BMediaEventLooper,
|
public virtual BMediaEventLooper,
|
||||||
public virtual BBufferProducer,
|
public virtual BBufferProducer,
|
||||||
public virtual BControllable
|
public virtual BControllable {
|
||||||
{
|
|
||||||
public:
|
public:
|
||||||
VideoProducer(BMediaAddOn *addon, CamDevice *dev,
|
VideoProducer(BMediaAddOn *addon, CamDevice *dev,
|
||||||
const char *name, int32 internal_id);
|
const char *name, int32 internal_id);
|
||||||
|
|||||||
@@ -26,8 +26,7 @@
|
|||||||
|
|
||||||
|
|
||||||
// This class represents each webcam
|
// This class represents each webcam
|
||||||
class NW80xCamDevice : public CamDevice
|
class NW80xCamDevice : public CamDevice {
|
||||||
{
|
|
||||||
public:
|
public:
|
||||||
NW80xCamDevice(CamDeviceAddon &_addon, BUSBDevice* _device);
|
NW80xCamDevice(CamDeviceAddon &_addon, BUSBDevice* _device);
|
||||||
~NW80xCamDevice();
|
~NW80xCamDevice();
|
||||||
|
|||||||
@@ -26,8 +26,7 @@
|
|||||||
|
|
||||||
|
|
||||||
// This class represents each webcam
|
// This class represents each webcam
|
||||||
class QuickCamDevice : public CamDevice
|
class QuickCamDevice : public CamDevice {
|
||||||
{
|
|
||||||
public:
|
public:
|
||||||
QuickCamDevice(CamDeviceAddon &_addon, BUSBDevice* _device);
|
QuickCamDevice(CamDeviceAddon &_addon, BUSBDevice* _device);
|
||||||
~QuickCamDevice();
|
~QuickCamDevice();
|
||||||
@@ -56,8 +55,7 @@ class QuickCamDevice : public CamDevice
|
|||||||
|
|
||||||
// the addon itself, that instanciate
|
// the addon itself, that instanciate
|
||||||
|
|
||||||
class QuickCamDeviceAddon : public CamDeviceAddon
|
class QuickCamDeviceAddon : public CamDeviceAddon {
|
||||||
{
|
|
||||||
public:
|
public:
|
||||||
QuickCamDeviceAddon(WebCamMediaAddOn* webcam);
|
QuickCamDeviceAddon(WebCamMediaAddOn* webcam);
|
||||||
virtual ~QuickCamDeviceAddon();
|
virtual ~QuickCamDeviceAddon();
|
||||||
|
|||||||
@@ -996,5 +996,3 @@ void bayer2rgb32le(unsigned char *dst, unsigned char *src, long int WIDTH, long
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -54,8 +54,7 @@
|
|||||||
#define SN9C102_RGB_GAIN_MAX 0x7f
|
#define SN9C102_RGB_GAIN_MAX 0x7f
|
||||||
|
|
||||||
// This class represents each webcam
|
// This class represents each webcam
|
||||||
class SonixCamDevice : public CamDevice
|
class SonixCamDevice : public CamDevice {
|
||||||
{
|
|
||||||
public:
|
public:
|
||||||
SonixCamDevice(CamDeviceAddon &_addon, BUSBDevice* _device);
|
SonixCamDevice(CamDeviceAddon &_addon, BUSBDevice* _device);
|
||||||
~SonixCamDevice();
|
~SonixCamDevice();
|
||||||
@@ -115,8 +114,7 @@ class SonixCamDevice : public CamDevice
|
|||||||
|
|
||||||
// the addon itself, that instanciate
|
// the addon itself, that instanciate
|
||||||
|
|
||||||
class SonixCamDeviceAddon : public CamDeviceAddon
|
class SonixCamDeviceAddon : public CamDeviceAddon {
|
||||||
{
|
|
||||||
public:
|
public:
|
||||||
SonixCamDeviceAddon(WebCamMediaAddOn* webcam);
|
SonixCamDeviceAddon(WebCamMediaAddOn* webcam);
|
||||||
virtual ~SonixCamDeviceAddon();
|
virtual ~SonixCamDeviceAddon();
|
||||||
|
|||||||
@@ -3,10 +3,13 @@
|
|||||||
* Distributed under the terms of the MIT License.
|
* Distributed under the terms of the MIT License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include "UVCCamDevice.h"
|
#include "UVCCamDevice.h"
|
||||||
#include "USB_video.h"
|
#include "USB_video.h"
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
|
|
||||||
usb_webcam_support_descriptor kSupportedDevices[] = {
|
usb_webcam_support_descriptor kSupportedDevices[] = {
|
||||||
// ofcourse we support a generic UVC device...
|
// ofcourse we support a generic UVC device...
|
||||||
{{ CC_VIDEO, SC_VIDEOCONTROL, 0, 0, 0 }, "USB", "Video Class", "??" },
|
{{ CC_VIDEO, SC_VIDEOCONTROL, 0, 0, 0 }, "USB", "Video Class", "??" },
|
||||||
@@ -33,7 +36,9 @@ usb_webcam_support_descriptor kSupportedDevices[] = {
|
|||||||
{{ 0, 0, 0, 0, 0}, NULL, NULL, NULL }
|
{{ 0, 0, 0, 0, 0}, NULL, NULL, NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
static void print_guid(const uint8* buf)
|
|
||||||
|
static void
|
||||||
|
print_guid(const uint8* buf)
|
||||||
{
|
{
|
||||||
printf("%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x",
|
printf("%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x",
|
||||||
buf[0], buf[1], buf[2], buf[3], buf[4], buf[5], buf[6], buf[7],
|
buf[0], buf[1], buf[2], buf[3], buf[4], buf[5], buf[6], buf[7],
|
||||||
@@ -78,7 +83,9 @@ UVCCamDevice::UVCCamDevice(CamDeviceAddon &_addon, BUSBDevice* _device)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UVCCamDevice::ParseVideoStreaming(const uint8* buffer, size_t len)
|
|
||||||
|
void
|
||||||
|
UVCCamDevice::ParseVideoStreaming(const uint8* buffer, size_t len)
|
||||||
{
|
{
|
||||||
int c, i, sz;
|
int c, i, sz;
|
||||||
|
|
||||||
@@ -198,7 +205,9 @@ void UVCCamDevice::ParseVideoStreaming(const uint8* buffer, size_t len)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UVCCamDevice::ParseVideoControl(const uint8* buffer, size_t len)
|
|
||||||
|
void
|
||||||
|
UVCCamDevice::ParseVideoControl(const uint8* buffer, size_t len)
|
||||||
{
|
{
|
||||||
int c, i;
|
int c, i;
|
||||||
|
|
||||||
@@ -283,25 +292,33 @@ void UVCCamDevice::ParseVideoControl(const uint8* buffer, size_t len)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
UVCCamDevice::~UVCCamDevice()
|
UVCCamDevice::~UVCCamDevice()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
bool UVCCamDevice::SupportsIsochronous()
|
|
||||||
|
bool
|
||||||
|
UVCCamDevice::SupportsIsochronous()
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
status_t UVCCamDevice::StartTransfer()
|
|
||||||
|
status_t
|
||||||
|
UVCCamDevice::StartTransfer()
|
||||||
{
|
{
|
||||||
return CamDevice::StartTransfer();
|
return CamDevice::StartTransfer();
|
||||||
}
|
}
|
||||||
|
|
||||||
status_t UVCCamDevice::StopTransfer()
|
|
||||||
|
status_t
|
||||||
|
UVCCamDevice::StopTransfer()
|
||||||
{
|
{
|
||||||
return CamDevice::StopTransfer();
|
return CamDevice::StopTransfer();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
UVCCamDeviceAddon::UVCCamDeviceAddon(WebCamMediaAddOn* webcam)
|
UVCCamDeviceAddon::UVCCamDeviceAddon(WebCamMediaAddOn* webcam)
|
||||||
: CamDeviceAddon(webcam)
|
: CamDeviceAddon(webcam)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -8,8 +8,7 @@
|
|||||||
|
|
||||||
#include "CamDevice.h"
|
#include "CamDevice.h"
|
||||||
|
|
||||||
class UVCCamDevice : public CamDevice
|
class UVCCamDevice : public CamDevice {
|
||||||
{
|
|
||||||
public:
|
public:
|
||||||
UVCCamDevice(CamDeviceAddon &_addon, BUSBDevice* _device);
|
UVCCamDevice(CamDeviceAddon &_addon, BUSBDevice* _device);
|
||||||
~UVCCamDevice();
|
~UVCCamDevice();
|
||||||
@@ -22,8 +21,7 @@ private:
|
|||||||
void ParseVideoStreaming(const uint8* buf, size_t len);
|
void ParseVideoStreaming(const uint8* buf, size_t len);
|
||||||
};
|
};
|
||||||
|
|
||||||
class UVCCamDeviceAddon : public CamDeviceAddon
|
class UVCCamDeviceAddon : public CamDeviceAddon {
|
||||||
{
|
|
||||||
public:
|
public:
|
||||||
UVCCamDeviceAddon(WebCamMediaAddOn* webcam);
|
UVCCamDeviceAddon(WebCamMediaAddOn* webcam);
|
||||||
virtual ~UVCCamDeviceAddon();
|
virtual ~UVCCamDeviceAddon();
|
||||||
|
|||||||
Reference in New Issue
Block a user