blob: 07db788047ff3683a6ef9904c7c3e2588882fa0a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
|
/*
videodevicepool.h - Kopete Multiple Video Device handler Class
Copyright (c) 2005-2006 by Cláudio da Silveira Pinheiro <taupter@gmail.com>
Kopete (c) 2002-2003 by the Kopete developers <kopete-devel@kde.org>
*************************************************************************
* *
* This library is free software; you can redistribute it and/or *
* modify it under the terms of the GNU Lesser General Public *
* License as published by the Free Software Foundation; either *
* version 2 of the License, or (at your option) any later version. *
* *
*************************************************************************
*/
#ifndef KOPETE_AVVIDEODEVICE_H
#define KOPETE_AVVIDEODEVICE_H
#include <tqvaluevector.h>
#include <iostream>
#include "videoinput.h"
#include "videodevicemodelpool.h"
#include <tqstring.h>
#include <tqimage.h>
#include <tqvaluevector.h>
#include <tqmutex.h>
#include <kcombobox.h>
#include "videodevice.h"
#include "kopete_export.h"
#include <tdeapplication.h>
#include <tdeconfig.h>
#include <tdeglobal.h>
namespace Kopete {
namespace AV {
/**
This class allows kopete to check for the existence, open, configure, test, set parameters, grab frames from and close a given video capture card using the Video4Linux API.
@author Cláudio da Silveira Pinheiro
*/
typedef TQValueVector<Kopete::AV::VideoDevice> VideoDeviceVector;
class VideoDevicePoolPrivate;
class KOPETE_EXPORT VideoDevicePool
{
public:
static VideoDevicePool* self();
int open();
int open(unsigned int device);
bool isOpen();
int getFrame();
int width();
int minWidth();
int maxWidth();
int height();
int minHeight();
int maxHeight();
int setSize( int newwidth, int newheight);
int close();
int startCapturing();
int stopCapturing();
int readFrame();
int getImage(TQImage *qimage);
int selectInput(int newinput);
int setInputParameters();
int scanDevices();
bool hasDevices();
size_t size();
~VideoDevicePool();
VideoDeviceVector m_videodevice; // Vector to be filled with found devices
VideoDeviceModelPool m_modelvector; // Vector to be filled with unique device models
int fillDeviceKComboBox(KComboBox *combobox);
int fillInputKComboBox(KComboBox *combobox);
int fillStandardKComboBox(KComboBox *combobox);
unsigned int currentDevice();
int currentInput();
unsigned int inputs();
float getBrightness();
float setBrightness(float brightness);
float getContrast();
float setContrast(float contrast);
float getSaturation();
float setSaturation(float saturation);
float getWhiteness();
float setWhiteness(float whiteness);
float getHue();
float setHue(float hue);
bool getAutoBrightnessContrast();
bool setAutoBrightnessContrast(bool brightnesscontrast);
bool getAutoColorCorrection();
bool setAutoColorCorrection(bool colorcorrection);
bool getImageAsMirror();
bool setImageAsMirror(bool imageasmirror);
void loadConfig(); // Load configuration parameters;
void saveConfig(); // Save configuretion parameters;
protected:
int xioctl(int request, void *arg);
int errnoReturn(const char* s);
int showDeviceCapabilities(unsigned int device);
void guessDriver();
unsigned int m_current_device;
struct imagebuffer m_buffer; // only used when no devices were found
TQMutex m_ready;
private:
VideoDevicePool();
static VideoDevicePool* s_self;
static __u64 m_clients; // Number of instances
};
}
}
#endif
|