Package: camstream Version: 0.27+dfsg-3 Severity: serious Tags: patch The V4L1 API is obsolete and does not work with most new V4L drivers. You can use libv4l as an emulation layer; see the attached patch by Hans de Goede.
Ben. -- System Information: Debian Release: squeeze/sid APT prefers proposed-updates APT policy: (500, 'proposed-updates'), (500, 'unstable'), (500, 'stable'), (1, 'experimental') Architecture: i386 (x86_64) Kernel: Linux 2.6.32-2-amd64 (SMP w/2 CPU cores) Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash
diff -ur camstream-0.26.3/camstream/Makefile.in camstream-0.26.3.new/camstream/Makefile.in --- camstream-0.26.3/camstream/Makefile.in 2008-09-05 17:11:56.000000000 +0200 +++ camstream-0.26.3.new/camstream/Makefile.in 2008-09-05 17:11:22.000000000 +0200 @@ -100,10 +100,10 @@ # The programs camstream: $(STREAMOBJS) $(SUBS) - $(CXX) -o $@ $(LDFLAGS) $(STREAMOBJS) $(SUBS) $(MLIBS) $(LIBS) + $(CXX) -o $@ $(LDFLAGS) $(STREAMOBJS) $(SUBS) $(MLIBS) $(LIBS) -lv4l1 caminfo: $(INFOOBJS) $(SUBS) - $(CXX) -o $@ $(LDFLAGS) $(INFOOBJS) $(SUBS) $(MLIBS) $(LIBS) + $(CXX) -o $@ $(LDFLAGS) $(INFOOBJS) $(SUBS) $(MLIBS) $(LIBS) -lv4l1 ftpput: $(FTPOBJS) $(SUBS) $(CXX) -o $@ $(LDFLAGS) $(FTPOBJS) $(SUBS) $(MLIBS) $(LIBS) Only in camstream-0.26.3.new/camstream: Makefile.in~ diff -ur camstream-0.26.3/camstream/devices/VideoDevice.cc camstream-0.26.3.new/camstream/devices/VideoDevice.cc --- camstream-0.26.3/camstream/devices/VideoDevice.cc 2003-11-22 03:49:27.000000000 +0100 +++ camstream-0.26.3.new/camstream/devices/VideoDevice.cc 2008-09-05 17:07:18.000000000 +0200 @@ -12,6 +12,8 @@ #include <sys/stat.h> #include <unistd.h> +#include <libv4l1.h> + #undef TRACE_VIDEODEV_READ #define TRACE_VIDEODEV_MEM @@ -87,9 +89,9 @@ pNullImage = new QImage(); // Do a small test - CamFD = ::open((const char *)node_name, O_RDONLY); + CamFD = v4l1_open((const char *)node_name, O_RDONLY); if (CamFD >= 0) { - if (ioctl(CamFD, VIDIOCGCAP, &vcap) < 0) { + if (v4l1_ioctl(CamFD, VIDIOCGCAP, &vcap) < 0) { qDebug("CVideoDevice::CVideoDevice() could not query capabilities; is this really a video device?"); } else { @@ -116,7 +118,7 @@ AudioInputs.insert(i, new CVideoAudioInput(this, i)); } } - ::close(CamFD); + v4l1_close(CamFD); } else if (errno == EBUSY) @@ -135,7 +137,7 @@ qWarning("Warning: CVideoDevice `%s' was destroyed when it was in use more than once.", (const char *)NodeName); CleanUp(); if (CamFD >= 0) { - close(CamFD); + v4l1_close(CamFD); emit Closed(); } @@ -167,7 +169,7 @@ return; } - if (ioctl(CamFD, VIDIOCGPICT, &VPic) < 0) { + if (v4l1_ioctl(CamFD, VIDIOCGPICT, &VPic) < 0) { qDebug("CVideoDevice::Init: could not get picture parameters. (duh?)"); return; } @@ -175,7 +177,7 @@ HasFramerate = FALSE; memset(&vwin, 0, sizeof(struct video_window)); - if (ioctl(CamFD, VIDIOCGWIN, &vwin) == 0) { + if (v4l1_ioctl(CamFD, VIDIOCGWIN, &vwin) == 0) { #if defined(PWC_FPS_SHIFT) if ((vwin.flags & PWC_FPS_FRMASK) >> PWC_FPS_SHIFT) { HasFramerate = TRUE; @@ -191,7 +193,7 @@ VMBuf.size = 0; VMBuf.frames = 0; vid_io_buffer_size = 0; - if (ioctl(CamFD, VIDIOCGMBUF, &VMBuf) == 0) { + if (v4l1_ioctl(CamFD, VIDIOCGMBUF, &VMBuf) == 0) { qDebug("Using mmap(), VMBuf.size = %d", VMBuf.size); vid_io_buffer_size = VMBuf.size; if (Buffers > 0) { @@ -211,7 +213,7 @@ /* See if we can actually mmap() the memory */ if (VMBuf.size > 0) { - vid_io_buffer = (uchar *)mmap(NULL, vid_io_buffer_size, PROT_READ, MAP_SHARED, CamFD, 0); + vid_io_buffer = (uchar *)v4l1_mmap(NULL, vid_io_buffer_size, PROT_READ, MAP_SHARED, CamFD, 0); if (vid_io_buffer == (uchar *)-1) { qWarning("CVideoDevice::Init(): mmap() failed (%d). Falling back to non-mmap()ed mode.", errno); VMBuf.size = 0; @@ -248,7 +250,7 @@ { if (VMBuf.size > 0) { MSync(); // Just to make sure - munmap(vid_io_buffer, vid_io_buffer_size); + v4l1_munmap(vid_io_buffer, vid_io_buffer_size); VMBuf.size = 0; } else @@ -268,10 +270,10 @@ { VPic.palette = pal; VPic.depth = depth; - if (ioctl(CamFD, VIDIOCSPICT, &VPic) < 0) + if (v4l1_ioctl(CamFD, VIDIOCSPICT, &VPic) < 0) return FALSE; /* Sigh. It was to be expected. The OV511 and IBMCam don't pay attention to the palette field */ - if (ioctl(CamFD, VIDIOCGPICT, &VPic) < 0) + if (v4l1_ioctl(CamFD, VIDIOCGPICT, &VPic) < 0) return FALSE; if (VPic.palette == pal) { Palette = pal; @@ -350,7 +352,7 @@ #ifdef TRACE_VIDEODEV_READ qDebug("CVideoDevice::MCapture(): buffer %d, format %d, size (%dx%d)", buf, Palette, image_w, image_h); #endif - if (ioctl(CamFD, VIDIOCMCAPTURE, &vm) < 0) { + if (v4l1_ioctl(CamFD, VIDIOCMCAPTURE, &vm) < 0) { perror("CVideoDevice::MCapture() ioctl"); return -errno; } @@ -368,7 +370,7 @@ #ifdef TRACE_VIDEODEV_READ qDebug("CVideoDevice::MSync() : buffer %d", CurBuffer); #endif - if (ioctl(CamFD, VIDIOCSYNC, &CurBuffer) < 0) { + if (v4l1_ioctl(CamFD, VIDIOCSYNC, &CurBuffer) < 0) { perror("CVideoDevice::MSync() ioctl"); return -errno; } @@ -580,7 +582,7 @@ qWarning("Warning: VideoDevice already opened ?!?!"); return 0; } - CamFD = ::open(NodeName, O_RDONLY); + CamFD = v4l1_open(NodeName, O_RDONLY); if (CamFD < 0) { Opened = 0; return -errno; @@ -619,7 +621,7 @@ delete pImageSocket; pImageSocket = NULL; CleanUp(); - close(CamFD); + v4l1_close(CamFD); CamFD = -1; emit Closed(); } @@ -753,7 +755,7 @@ image_w = 0; image_h = 0; - if (CamFD >= 0 && ioctl(CamFD, VIDIOCGWIN, &vwin) == 0) { + if (CamFD >= 0 && v4l1_ioctl(CamFD, VIDIOCGWIN, &vwin) == 0) { image_w = vwin.width; image_h = vwin.height; } @@ -803,7 +805,7 @@ printf("CVideoDevice::SetSize(%d, %d)\n", width, height); if (CamFD < 0 || width > max_w || height > max_h) return FALSE; - if (ioctl(CamFD, VIDIOCGWIN, &vwin) < 0) { + if (v4l1_ioctl(CamFD, VIDIOCGWIN, &vwin) < 0) { perror("GWIN: "); return FALSE; } @@ -813,7 +815,7 @@ vwin.width = width; vwin.height = height; vwin.clipcount = 0; - if (ioctl(CamFD, VIDIOCSWIN, &vwin) < 0) { + if (v4l1_ioctl(CamFD, VIDIOCSWIN, &vwin) < 0) { perror("SWIN"); } else { @@ -867,7 +869,7 @@ if (CamFD < 0) return -1; if (HasFramerate) { - if (ioctl(CamFD, VIDIOCGWIN, &vwin) < 0) + if (v4l1_ioctl(CamFD, VIDIOCGWIN, &vwin) < 0) return -1; #if defined(PWC_FPS_SHIFT) return (vwin.flags & PWC_FPS_FRMASK) >> PWC_FPS_SHIFT; @@ -890,7 +892,7 @@ { struct video_window vwin; qDebug("CVideoDevice::SetFramerate(%d)", fps); - if (CamFD < 0 || ioctl(CamFD, VIDIOCGWIN, &vwin) < 0) + if (CamFD < 0 || v4l1_ioctl(CamFD, VIDIOCGWIN, &vwin) < 0) return FALSE; if (HasFramerate) { @@ -904,7 +906,7 @@ vwin.flags = (vwin.flags & ~PWC_FPS_MASK) | (FrameRate << PWC_FPS_SHIFT); //qDebug("Setting framerate -> 0x%x\n", vwin.flags); #endif - if (ioctl(CamFD, VIDIOCSWIN, &vwin) < 0) + if (v4l1_ioctl(CamFD, VIDIOCSWIN, &vwin) < 0) return FALSE; // MCapture(CurBuffer); // Try to grab new frame } @@ -1010,8 +1012,8 @@ ret = FALSE; if (CamFD >= 0 && (number >= 0 && number < (int)VideoInputs.count())) { arg.channel = number; - if (ioctl(CamFD, VIDIOCGCHAN, &arg) == 0) { - if (ioctl(CamFD, VIDIOCSCHAN, &arg) == 0) { + if (v4l1_ioctl(CamFD, VIDIOCGCHAN, &arg) == 0) { + if (v4l1_ioctl(CamFD, VIDIOCSCHAN, &arg) == 0) { CurrentVideoInput = number; emit ChangedVideoInput(number); ret = TRUE; @@ -1074,9 +1076,9 @@ if (CamFD >= 0 && (number >= 0 && number < (int)AudioInputs.count())) { va.audio = number; - if (ioctl(CamFD, VIDIOCGAUDIO, &va) == 0) { + if (v4l1_ioctl(CamFD, VIDIOCGAUDIO, &va) == 0) { va.audio = number; - if (ioctl(CamFD, VIDIOCSAUDIO, &va) == 0) { + if (v4l1_ioctl(CamFD, VIDIOCSAUDIO, &va) == 0) { CurrentAudioInput = number; // FIXME emit ChangedAudioInput(number) ret = TRUE; @@ -1117,7 +1119,7 @@ return FALSE; VPic.brightness = val & 0xffff; - if (ioctl(CamFD, VIDIOCSPICT, &VPic) < 0) + if (v4l1_ioctl(CamFD, VIDIOCSPICT, &VPic) < 0) return FALSE; return TRUE; } @@ -1147,7 +1149,7 @@ return FALSE; VPic.contrast = val & 0xffff; - if (ioctl(CamFD, VIDIOCSPICT, &VPic) < 0) + if (v4l1_ioctl(CamFD, VIDIOCSPICT, &VPic) < 0) return FALSE; return TRUE; } @@ -1181,7 +1183,7 @@ return FALSE; VPic.hue = val & 0xffff; - if (ioctl(CamFD, VIDIOCSPICT, &VPic) < 0) + if (v4l1_ioctl(CamFD, VIDIOCSPICT, &VPic) < 0) return FALSE; return TRUE; } @@ -1217,7 +1219,7 @@ return FALSE; VPic.colour = val & 0xffff; - if (ioctl(CamFD, VIDIOCSPICT, &VPic) < 0) + if (v4l1_ioctl(CamFD, VIDIOCSPICT, &VPic) < 0) return FALSE; return TRUE; } @@ -1253,7 +1255,7 @@ return FALSE; VPic.whiteness = val & 0xffff; - if (ioctl(CamFD, VIDIOCSPICT, &VPic) < 0) + if (v4l1_ioctl(CamFD, VIDIOCSPICT, &VPic) < 0) return FALSE; return TRUE; } @@ -1286,7 +1288,7 @@ MCapture((CurBuffer + 1) % Buffers); } else { - if (read(CamFD, src, vid_io_image_size) < 0) + if (v4l1_read(CamFD, src, vid_io_image_size) < 0) return -errno; } Only in camstream-0.26.3.new/camstream/devices: VideoDevice.cc~ diff -ur camstream-0.26.3/camstream/gui/VideoSettingsDlg.cc camstream-0.26.3.new/camstream/gui/VideoSettingsDlg.cc --- camstream-0.26.3/camstream/gui/VideoSettingsDlg.cc 2002-05-01 02:23:21.000000000 +0200 +++ camstream-0.26.3.new/camstream/gui/VideoSettingsDlg.cc 2008-09-05 17:07:28.000000000 +0200 @@ -14,6 +14,8 @@ #include <qslider.h> #include <qtabwidget.h> +#include <libv4l1.h> + #include "VideoDeviceInput.h" #include "VideoSettingsDlg.h" #include "pwc-ioctl.h" @@ -125,7 +127,7 @@ struct pwc_probe probe; memset(&probe, 0, sizeof(probe)); - if (ioctl(pVideo->GetDescriptor(), VIDIOCPWCPROBE, &probe) == 0) { + if (v4l1_ioctl(pVideo->GetDescriptor(), VIDIOCPWCPROBE, &probe) == 0) { if (vidname == probe.name) IsPhilips = TRUE; } @@ -138,7 +140,7 @@ qDebug("Philips webcam detected, enabling extensions"); PhilipsTab->show(); - if (ioctl(pVideo->GetDescriptor(), VIDIOCPWCGAGC, &agc) < 0) { + if (v4l1_ioctl(pVideo->GetDescriptor(), VIDIOCPWCGAGC, &agc) < 0) { qDebug("No VIDIOCPWCGAGC"); AGCBox->setEnabled(FALSE); AGCValue->setEnabled(FALSE); @@ -148,7 +150,7 @@ AGCValue->setValue(abs(agc) / 256); } - if (ioctl(pVideo->GetDescriptor(), VIDIOCPWCGCONTOUR, &contour) < 0) { + if (v4l1_ioctl(pVideo->GetDescriptor(), VIDIOCPWCGCONTOUR, &contour) < 0) { qDebug("No VIDIOCPWCGCONTOUR"); ContourBox->setEnabled(FALSE); ContourValue->setEnabled(FALSE); @@ -159,14 +161,14 @@ ContourValue->setValue(contour / 256); } - if (ioctl(pVideo->GetDescriptor(), VIDIOCPWCGBACKLIGHT, &backlight) < 0) { + if (v4l1_ioctl(pVideo->GetDescriptor(), VIDIOCPWCGBACKLIGHT, &backlight) < 0) { qDebug("No VIDIOCPWCGBACKLIGHT"); BacklightBox->setEnabled(FALSE); } else BacklightBox->setChecked(backlight != 0); - if (ioctl(pVideo->GetDescriptor(), VIDIOCPWCGFLICKER, &flicker) < 0) { + if (v4l1_ioctl(pVideo->GetDescriptor(), VIDIOCPWCGFLICKER, &flicker) < 0) { qDebug("No VIDIOCPWCGFLICKER"); FlickerBox->setEnabled(FALSE); } @@ -176,21 +178,21 @@ ShutterBox->setChecked(TRUE); - if (ioctl(pVideo->GetDescriptor(), VIDIOCPWCGDYNNOISE, &dynnoise) < 0) { + if (v4l1_ioctl(pVideo->GetDescriptor(), VIDIOCPWCGDYNNOISE, &dynnoise) < 0) { qDebug("No VIDIOCPWCGDYNNOISE"); m_NoiseReduction->setEnabled(FALSE); } else m_NoiseReduction->setCurrentItem(dynnoise); - if (ioctl(pVideo->GetDescriptor(), VIDIOCPWCGCQUAL, &compr) < 0) { + if (v4l1_ioctl(pVideo->GetDescriptor(), VIDIOCPWCGCQUAL, &compr) < 0) { qDebug("VIDIOCPWCGCQUAL failed"); m_CompressionSelection->setEnabled(FALSE); } else m_CompressionSelection->setCurrentItem(compr); - if (ioctl(pVideo->GetDescriptor(), VIDIOCPWCGAWB, &wb) < 0) { + if (v4l1_ioctl(pVideo->GetDescriptor(), VIDIOCPWCGAWB, &wb) < 0) { m_WhiteBalance->setEnabled(FALSE); m_RedDial->setEnabled(FALSE); m_BlueDial->setEnabled(FALSE); @@ -200,7 +202,7 @@ m_WhiteBalance->setCurrentItem(wb.mode); ChangedWB(wb.mode); } - if (ioctl(pVideo->GetDescriptor(), VIDIOCPWCGAWBSPEED, &wbs) < 0) { + if (v4l1_ioctl(pVideo->GetDescriptor(), VIDIOCPWCGAWBSPEED, &wbs) < 0) { m_WBSpeed->setEnabled(FALSE); m_WBDelay->setEnabled(FALSE); } @@ -309,12 +311,12 @@ if (IsPhilips) { if (AGCBox->isChecked()) { - if (ioctl(pVideo->GetDescriptor(), VIDIOCPWCGAGC, &agc) == 0) { + if (v4l1_ioctl(pVideo->GetDescriptor(), VIDIOCPWCGAGC, &agc) == 0) { AGCValue->setValue(-agc / 256); } } if (m_WBMode == PWC_WB_AUTO) { - if (ioctl(pVideo->GetDescriptor(), VIDIOCPWCGAWB, &wb) == 0) { + if (v4l1_ioctl(pVideo->GetDescriptor(), VIDIOCPWCGAWB, &wb) == 0) { m_RedDial->setValue(wb.read_red / 256); m_BlueDial->setValue(wb.read_blue / 256); } @@ -553,7 +555,7 @@ AGCValue->setEnabled(!on); if (on) { int agc = -1; - if (ioctl(pVideo->GetDescriptor(), VIDIOCPWCSAGC, &agc) < 0) + if (v4l1_ioctl(pVideo->GetDescriptor(), VIDIOCPWCSAGC, &agc) < 0) perror("VIDIOCPWCSAGC"); } } @@ -564,7 +566,7 @@ if (!AGCBox->isChecked()) { agc = value * 256; - ioctl(pVideo->GetDescriptor(), VIDIOCPWCSAGC, &agc); + v4l1_ioctl(pVideo->GetDescriptor(), VIDIOCPWCSAGC, &agc); } } @@ -576,7 +578,7 @@ ShutterValue->show(); if (on) { int speed = -1; - if (ioctl(pVideo->GetDescriptor(), VIDIOCPWCSSHUTTER, &speed) < 0) + if (v4l1_ioctl(pVideo->GetDescriptor(), VIDIOCPWCSSHUTTER, &speed) < 0) perror("VIDIOCPWCSSHUTTER"); } } @@ -587,7 +589,7 @@ if (!ShutterBox->isChecked()) { speed = value * 256; - if (ioctl(pVideo->GetDescriptor(), VIDIOCPWCSSHUTTER, &speed) < 0) + if (v4l1_ioctl(pVideo->GetDescriptor(), VIDIOCPWCSSHUTTER, &speed) < 0) perror("VIDIOCPWCSSHUTTER"); } } @@ -600,7 +602,7 @@ ContourValue->show(); if (on) { int contour = -1; - if (ioctl(pVideo->GetDescriptor(), VIDIOCPWCSCONTOUR, &contour) < 0) + if (v4l1_ioctl(pVideo->GetDescriptor(), VIDIOCPWCSCONTOUR, &contour) < 0) perror("VIDIOCPWCSCONTOUR"); } } @@ -611,7 +613,7 @@ if (!ContourBox->isChecked()) { contour = value * 256; - if (ioctl(pVideo->GetDescriptor(), VIDIOCPWCSCONTOUR, &contour) < 0) + if (v4l1_ioctl(pVideo->GetDescriptor(), VIDIOCPWCSCONTOUR, &contour) < 0) perror("VIDIOCPWCSCONTOUR"); } } @@ -620,7 +622,7 @@ { int backlight; backlight = on ? 1 : 0; - if (ioctl(pVideo->GetDescriptor(), VIDIOCPWCSBACKLIGHT, &backlight) < 0) + if (v4l1_ioctl(pVideo->GetDescriptor(), VIDIOCPWCSBACKLIGHT, &backlight) < 0) perror("VIDIOCPWCSBACKLIGHT"); } @@ -628,36 +630,36 @@ { int flicker; flicker = on ? 1 : 0; - if (ioctl(pVideo->GetDescriptor(), VIDIOCPWCSFLICKER, &flicker) < 0) + if (v4l1_ioctl(pVideo->GetDescriptor(), VIDIOCPWCSFLICKER, &flicker) < 0) perror("VIDIOCPWCSFLICKER"); } void CVideoSettingsDlg::ChangedNoise(int noise) { - if (ioctl(pVideo->GetDescriptor(), VIDIOCPWCSDYNNOISE, &noise) < 0) + if (v4l1_ioctl(pVideo->GetDescriptor(), VIDIOCPWCSDYNNOISE, &noise) < 0) perror("VIDIOCPWCSDYNNOISE"); } void CVideoSettingsDlg::ChangedCompression(int compression) { - if (ioctl(pVideo->GetDescriptor(), VIDIOCPWCSCQUAL, &compression) < 0) + if (v4l1_ioctl(pVideo->GetDescriptor(), VIDIOCPWCSCQUAL, &compression) < 0) perror("VIDIOCPWCSCQUAL"); } void CVideoSettingsDlg::ClickedSaveUser() { - ioctl(pVideo->GetDescriptor(), VIDIOCPWCSUSER); + v4l1_ioctl(pVideo->GetDescriptor(), VIDIOCPWCSUSER); } void CVideoSettingsDlg::ClickedRestoreUser() { - ioctl(pVideo->GetDescriptor(), VIDIOCPWCRUSER); + v4l1_ioctl(pVideo->GetDescriptor(), VIDIOCPWCRUSER); } void CVideoSettingsDlg::ClickedRestoreFactory() { - ioctl(pVideo->GetDescriptor(), VIDIOCPWCFACTORY); + v4l1_ioctl(pVideo->GetDescriptor(), VIDIOCPWCFACTORY); } /** @@ -676,7 +678,7 @@ wb.mode = m_WBMode; wb.manual_red = m_RedDial->value() * 256; wb.manual_blue = m_BlueDial->value() * 256; - ioctl(pVideo->GetDescriptor(), VIDIOCPWCSAWB, &wb); + v4l1_ioctl(pVideo->GetDescriptor(), VIDIOCPWCSAWB, &wb); if (m_WBMode == PWC_WB_MANUAL || m_WBMode == PWC_WB_AUTO) { m_RedDial->show(); @@ -688,7 +690,7 @@ m_BlueDial->setValue(wb.manual_blue / 256); } else { - if (ioctl(pVideo->GetDescriptor(), VIDIOCPWCGAWB, &wb) < 0) + if (v4l1_ioctl(pVideo->GetDescriptor(), VIDIOCPWCGAWB, &wb) < 0) perror("VIDIOCPWCGAWB 3"); m_RedDial->setValue(wb.read_red / 256); m_BlueDial->setValue(wb.read_blue / 256); @@ -707,7 +709,7 @@ wb.mode = m_WBMode; wb.manual_red = m_RedDial->value() * 256; wb.manual_blue = m_BlueDial->value() * 256; - ioctl(pVideo->GetDescriptor(), VIDIOCPWCSAWB, &wb); + v4l1_ioctl(pVideo->GetDescriptor(), VIDIOCPWCSAWB, &wb); } void CVideoSettingsDlg::MovedBlue(int blue) @@ -717,7 +719,7 @@ wb.mode = m_WBMode; wb.manual_red = m_RedDial->value() * 256; wb.manual_blue = m_BlueDial->value() * 256; - ioctl(pVideo->GetDescriptor(), VIDIOCPWCSAWB, &wb); + v4l1_ioctl(pVideo->GetDescriptor(), VIDIOCPWCSAWB, &wb); } void CVideoSettingsDlg::MovedWBSpeed(int speed) @@ -728,7 +730,7 @@ wbs.control_speed = (255 - speed) << 8; wbs.control_delay = 0; - if (ioctl(pVideo->GetDescriptor(), VIDIOCPWCSAWBSPEED, &wbs) < 0) + if (v4l1_ioctl(pVideo->GetDescriptor(), VIDIOCPWCSAWBSPEED, &wbs) < 0) perror("VIDIOCPWCSAWBSPEED speed"); } @@ -739,7 +741,7 @@ wbs.control_speed = 0; wbs.control_delay = delay << 8; - if (ioctl(pVideo->GetDescriptor(), VIDIOCPWCSAWBSPEED, &wbs) < 0) + if (v4l1_ioctl(pVideo->GetDescriptor(), VIDIOCPWCSAWBSPEED, &wbs) < 0) perror("VIDIOCPWCSAWBSPEED delay"); } Only in camstream-0.26.3.new/camstream/gui: VideoSettingsDlg.cc~ diff -up ./camstream-0.26.3/camstream/lib/FTPClient.cc~ ./camstream-0.26.3/camstream/lib/FTPClient.cc --- camstream-0.26.3/camstream/lib/FTPClient.cc~ 2008-09-05 18:00:15.000000000 +0200 +++ camstream-0.26.3/camstream/lib/FTPClient.cc 2008-09-05 18:00:15.000000000 +0200 @@ -231,7 +231,7 @@ int CFTPClient::SetupLocal(const QString ::close(LocalFileFD); } if (write) - LocalFileFD = ::open((const char *)filename, O_WRONLY | O_CREAT); + LocalFileFD = ::open((const char *)filename, O_WRONLY | O_CREAT, 0644); else LocalFileFD = ::open((const char *)filename, O_RDONLY); qDebug("CFTPClient::SetupLocal() Opened local file fd [%d].", LocalFileFD);