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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
|
--- Makefile.orig 2014-10-20 23:30:44.519948012 +0200
+++ Makefile 2014-10-20 23:33:09.112946387 +0200
@@ -1,7 +1,7 @@
KERNELRELEASE ?= `uname -r`
KERNEL_DIR ?= /lib/modules/$(KERNELRELEASE)/build
PWD := $(shell pwd)
-obj-m := v4l2loopback.o
+obj-m := webcamstudio.o
PREFIX ?= /usr/local
BINDIR = $(PREFIX)/bin
@@ -30,16 +30,16 @@ MODULE_OPTIONS = devices=2
.PHONY: all install clean distclean
.PHONY: install-all install-utils install-man
-.PHONY: modprobe v4l2loopback
+.PHONY: modprobe webcamstudio
# we don't control the .ko file dependencies, as it is done by kernel
-# makefiles. therefore v4l2loopback.ko is a phony target actually
-.PHONY: v4l2loopback.ko
+# makefiles. therefore webcamstudio.ko is a phony target actually
+.PHONY: webcamstudio.ko
-all: v4l2loopback.ko
-v4l2loopback: v4l2loopback.ko
-v4l2loopback.ko:
- @echo "Building v4l2-loopback driver..."
+all: webcamstudio.ko
+webcamstudio: webcamstudio.ko
+webcamstudio.ko:
+ @echo "Building webcamstudio driver..."
$(MAKE) -C $(KERNEL_DIR) M=$(PWD) modules
install-all: install install-utils install-man
--- v4l2loopback.c.orig 2014-10-20 23:19:25.510955644 +0200
+++ v4l2loopback.c 2014-10-20 23:30:08.070948422 +0200
@@ -55,11 +55,12 @@ void *v4l2l_vzalloc(unsigned long size)
#define V4L2LOOPBACK_VERSION_CODE KERNEL_VERSION(0, 8, 0)
-MODULE_DESCRIPTION("V4L2 loopback video device");
+MODULE_DESCRIPTION("Webcamstudio video device");
MODULE_AUTHOR("Vasily Levin, " \
"IOhannes m zmoelnig <zmoelnig@iem.at>," \
"Stefan Diewald," \
- "Anton Novikov" \
+ "Anton Novikov," \
+ "Modified by Dustin Polke <DuPol@gmx.de>"
);
MODULE_LICENSE("GPL");
@@ -70,7 +71,7 @@ MODULE_LICENSE("GPL");
#define dprintk(fmt, args...) \
do { if (debug > 0) { \
- printk(KERN_INFO "v4l2-loopback[" STRINGIFY2(__LINE__) "]: " fmt, ##args); \
+ printk(KERN_INFO "webcamstudio[" STRINGIFY2(__LINE__) "]: " fmt, ##args); \
} } while (0)
#define MARK() \
@@ -80,7 +81,7 @@ MODULE_LICENSE("GPL");
#define dprintkrw(fmt, args...) \
do { if (debug > 2) { \
- printk(KERN_INFO "v4l2-loopback[" STRINGIFY2(__LINE__)"]: " fmt, ##args); \
+ printk(KERN_INFO "webcamstudio[" STRINGIFY2(__LINE__)"]: " fmt, ##args); \
} } while (0)
@@ -546,7 +547,7 @@ static struct v4l2_loopback_device *v4l2
int nr = ptr->devicenr;
if (nr < 0 || nr >= devices) {
- printk(KERN_ERR "v4l2-loopback: illegal device %d\n", nr);
+ printk(KERN_ERR "webcamstudio: illegal device %d\n", nr);
return NULL;
}
return devs[nr];
@@ -560,7 +561,7 @@ static struct v4l2_loopback_device *v4l2
int nr = ptr->devicenr;
if (nr < 0 || nr >= devices) {
- printk(KERN_ERR "v4l2-loopback: illegal device %d\n", nr);
+ printk(KERN_ERR "webcamstudio: illegal device %d\n", nr);
return NULL;
}
return devs[nr];
@@ -605,15 +606,15 @@ static int vidioc_querycap(struct file *
struct v4l2_loopback_device *dev = v4l2loopback_getdevice(file);
int devnr = ((struct v4l2loopback_private *)video_get_drvdata(dev->vdev))->devicenr;
- strlcpy(cap->driver, "v4l2 loopback", sizeof(cap->driver));
+ strlcpy(cap->driver, "Webcamstudio", sizeof(cap->driver));
if (card_label[devnr] != NULL) {
snprintf(cap->card, sizeof(cap->card), card_label[devnr]);
} else {
- snprintf(cap->card, sizeof(cap->card), "Dummy video device (0x%04X)", devnr);
+ snprintf(cap->card, sizeof(cap->card), "Webcamstudio video device (0x%04X)", devnr);
}
- snprintf(cap->bus_info, sizeof(cap->bus_info), "v4l2loopback:%d", devnr);
+ snprintf(cap->bus_info, sizeof(cap->bus_info), "webcamstudio:%d", devnr);
cap->version = V4L2LOOPBACK_VERSION_CODE;
cap->capabilities =
@@ -1817,7 +1818,7 @@ static ssize_t v4l2_loopback_read(struct
if (copy_to_user((void *)buf, (void *)(dev->image +
dev->buffers[read_index].buffer.m.offset), count)) {
printk(KERN_ERR
- "v4l2-loopback: failed copy_from_user() in write buf\n");
+ "webcamstudio: failed copy_from_user() in write buf\n");
return -EFAULT;
}
dprintkrw("leave v4l2_loopback_read()\n");
@@ -1853,7 +1854,7 @@ static ssize_t v4l2_loopback_write(struc
if (copy_from_user((void *)(dev->image + b->m.offset), (void *)buf, count)) {
printk(KERN_ERR
- "v4l2-loopback: failed copy_from_user() in write buf, could not write %zu\n",
+ "webcamstudio: failed copy_from_user() in write buf, could not write %zu\n",
count);
return -EFAULT;
}
@@ -2257,31 +2258,31 @@ int __init init_module(void)
if (devices > MAX_DEVICES) {
devices = MAX_DEVICES;
- printk(KERN_INFO "v4l2loopback: number of devices is limited to: %d\n", MAX_DEVICES);
+ printk(KERN_INFO "webcamstudio: number of devices is limited to: %d\n", MAX_DEVICES);
}
if (max_buffers > MAX_BUFFERS) {
max_buffers = MAX_BUFFERS;
- printk(KERN_INFO "v4l2loopback: number of buffers is limited to: %d\n", MAX_BUFFERS);
+ printk(KERN_INFO "webcamstudio: number of buffers is limited to: %d\n", MAX_BUFFERS);
}
if (max_openers < 0) {
- printk(KERN_INFO "v4l2loopback: allowing %d openers rather than %d\n", 2, max_openers);
+ printk(KERN_INFO "webcamstudio: allowing %d openers rather than %d\n", 2, max_openers);
max_openers = 2;
}
if (max_width < 1) {
max_width = V4L2LOOPBACK_SIZE_MAX_WIDTH;
- printk(KERN_INFO "v4l2loopback: using max_width %d\n", max_width);
+ printk(KERN_INFO "webcamstudio: using max_width %d\n", max_width);
}
if (max_height < 1) {
max_height = V4L2LOOPBACK_SIZE_MAX_HEIGHT;
- printk(KERN_INFO "v4l2loopback: using max_height %d\n", max_height);
+ printk(KERN_INFO "webcamstudio: using max_height %d\n", max_height);
}
/* kfree on module release */
for (i = 0; i < devices; i++) {
- dprintk("creating v4l2loopback-device #%d\n", i);
+ dprintk("creating webcamstudio-device #%d\n", i);
devs[i] = kzalloc(sizeof(*devs[i]), GFP_KERNEL);
if (devs[i] == NULL) {
free_devices();
@@ -2295,7 +2296,7 @@ int __init init_module(void)
/* register the device -> it creates /dev/video* */
if (video_register_device(devs[i]->vdev, VFL_TYPE_GRABBER, video_nr[i]) < 0) {
video_device_release(devs[i]->vdev);
- printk(KERN_ERR "v4l2loopback: failed video_register_device()\n");
+ printk(KERN_ERR "webcamstudio: failed video_register_device()\n");
free_devices();
return -EFAULT;
}
@@ -2304,7 +2305,7 @@ int __init init_module(void)
dprintk("module installed\n");
- printk(KERN_INFO "v4l2loopback driver version %d.%d.%d loaded\n",
+ printk(KERN_INFO "webcamstudio driver version %d.%d.%d loaded\n",
(V4L2LOOPBACK_VERSION_CODE >> 16) & 0xff,
(V4L2LOOPBACK_VERSION_CODE >> 8) & 0xff,
(V4L2LOOPBACK_VERSION_CODE) & 0xff);
|