]> git.pld-linux.org Git - packages/cinelerra-cv.git/commitdiff
- up to 20110406 auto/th/cinelerra-cv-2_1-0_20110406_1
authorArkadiusz Miśkiewicz <arekm@maven.pl>
Wed, 6 Apr 2011 18:56:37 +0000 (18:56 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Changed files:
    cinelerra-cv-build.patch -> 1.9
    cinelerra-cv-libpng.patch -> 1.2
    cinelerra-cv.spec -> 1.38
    remove-support-v4l-buzz-k2-6-38.diff -> 1.1

cinelerra-cv-build.patch
cinelerra-cv-libpng.patch [deleted file]
cinelerra-cv.spec
remove-support-v4l-buzz-k2-6-38.diff [new file with mode: 0644]

index 974f71c20959ea9de95a9b1ff1e6647991ef71c6..1633a758ba3766e77d10f620a3ff90cb5990717c 100644 (file)
  AC_SUBST(SOUND_CFLAGS)
  AC_SUBST(SOUND_LDFLAGS)
  ############### END OF SOUND
---- cinelerra-cv-2.1/cinelerra/Makefile.am.org 2006-11-26 01:42:58.101122750 +0100
-+++ cinelerra-cv-2.1/cinelerra/Makefile.am     2006-11-26 01:43:09.741850250 +0100
-@@ -19,26 +19,26 @@
- if BUILDINFO_GIT
- GITVERSION=$(shell if [ -d $(top_srcdir)/.git ]; then cd $(top_srcdir); git rev-parse HEAD; else echo "unknown"; fi)
--      echo '#define REPOMAINTXT " GIT::$(GITVERSION) $(BUILDINFO_NONRC_S) (C) 2006 Heroine Virtual Ltd.\n@FFMPEG_EXTERNALTEXT@\nCompiled on $(BUILDDATE)"' >> versioninfo.h
-+      echo '#define REPOMAINTXT " GIT::$(GITVERSION) $(BUILDINFO_NONRC_S) (C) 2006 Heroine Virtual Ltd. @FFMPEG_EXTERNALTEXT@ Compiled on $(BUILDDATE)"' >> versioninfo.h
-       echo '#define REPOABOUTPREFTXT "Git SHA-1: $(GITVERSION)"' >> versioninfo.h
- else
- if BUILDINFO_SVN
- SVNVERSION=$(shell if [ -d $(top_srcdir)/.svn ]; then svnversion $(top_srcdir); else echo "unknown"; fi)
--      echo '#define REPOMAINTXT      " SVN $(SVNVERSION) $(BUILDINFO_NONRC_S) (C) 2006 Heroine Virtual Ltd.\n@FFMPEG_EXTERNALTEXT@\nCompiled on $(BUILDDATE)"' >> versioninfo.h
-+      echo '#define REPOMAINTXT      " SVN $(SVNVERSION) $(BUILDINFO_NONRC_S) (C) 2006 Heroine Virtual Ltd. @FFMPEG_EXTERNALTEXT@ Compiled on $(BUILDDATE)"' >> versioninfo.h
-       echo '#define REPOABOUTPREFTXT "SVN Version: $(SVNVERSION) $(BUILDINFO_NONRC_S)"' >> versioninfo.h
- else
- if BUILDINFO_CUST
--      echo '#define REPOMAINTXT      " $(BUILDINFO_CUSTOM_TAG) (C) 2006 Heroine Virtual Ltd.\n@FFMPEG_EXTERNALTEXT@\nCompiled on $(BUILDDATE)"' >> versioninfo.h
-+      echo '#define REPOMAINTXT      " $(BUILDINFO_CUSTOM_TAG) (C) 2006 Heroine Virtual Ltd. @FFMPEG_EXTERNALTEXT@ Compiled on $(BUILDDATE)"' >> versioninfo.h
-       echo '#define REPOABOUTPREFTXT "$(BUILDINFO_CUSTOM_TAG)"' >> versioninfo.h
- else # (no repository)
--      echo '#define REPOMAINTXT      "(C) 2006 Heroine Virtual Ltd.\nCompiled on $(BUILDDATE)"' >> versioninfo.h
-+      echo '#define REPOMAINTXT      "(C) 2006 Heroine Virtual Ltd. Compiled on $(BUILDDATE)"' >> versioninfo.h
-       echo '#define REPOABOUTPREFTXT ""' >> versioninfo.h
- endif
- endif
 --- cinelerra-cv-2.1/libmpeg3/video/Makefile.am        2008-08-23 14:53:19.959321239 +0000
 +++ cinelerra-cv-2.1/libmpeg3/video/Makefile.am.org    2008-08-23 14:53:15.609327436 +0000
 @@ -11,6 +11,7 @@
  #include <swscale.h>
  }
  #endif
---- cinelerra-cv/cinelerra/edits.C~    2010-01-09 15:12:19.000000000 +0100
-+++ cinelerra-cv/cinelerra/edits.C     2010-04-26 09:13:43.381588613 +0200
-@@ -47,7 +47,6 @@
-       this->edl = edl;
-       this->track = track;
--      List<Edit>::List<Edit>();
-       default_edit->edl = edl;
-       default_edit->track = track;
-       default_edit->startproject = 0;
 --- cinelerra-cv/plugins/svg/svg.C~    2010-01-09 15:12:21.000000000 +0100
 +++ cinelerra-cv/plugins/svg/svg.C     2010-06-03 17:56:46.125079418 +0200
 @@ -29,6 +29,8 @@
  
  
  #include <libintl.h>
+--- cinelerra-cv/cinelerra/Makefile.am~        2011-04-06 19:57:22.664917219 +0200
++++ cinelerra-cv/cinelerra/Makefile.am 2011-04-06 20:02:23.865421062 +0200
+@@ -19,26 +19,26 @@
+ if BUILDINFO_GIT
+ GITVERSION=$(shell if [ -d $(top_srcdir)/.git ]; then cd $(top_srcdir); git rev-parse HEAD; else echo "unknown"; fi)
+-      echo '#define REPOMAINTXT " GIT::$(GITVERSION) $(BUILDINFO_NONRC_S) (C) 2010 Heroine Virtual Ltd.\n@FFMPEG_EXTERNALTEXT@\nCompiled on $(BUILDDATE)"' >> versioninfo.h
++      echo '#define REPOMAINTXT " GIT::$(GITVERSION) $(BUILDINFO_NONRC_S) (C) 2010 Heroine Virtual Ltd. @FFMPEG_EXTERNALTEXT@ Compiled on $(BUILDDATE)"' >> versioninfo.h
+       echo '#define REPOABOUTPREFTXT "Git SHA-1: $(GITVERSION)"' >> versioninfo.h
+ else
+ if BUILDINFO_SVN
+ SVNVERSION=$(shell if [ -d $(top_srcdir)/.svn ]; then svnversion $(top_srcdir); else echo "unknown"; fi)
+-      echo '#define REPOMAINTXT      " SVN $(SVNVERSION) $(BUILDINFO_NONRC_S) (C) 2010 Heroine Virtual Ltd.\n@FFMPEG_EXTERNALTEXT@\nCompiled on $(BUILDDATE)"' >> versioninfo.h
++      echo '#define REPOMAINTXT      " SVN $(SVNVERSION) $(BUILDINFO_NONRC_S) (C) 2010 Heroine Virtual Ltd. @FFMPEG_EXTERNALTEXT@ Compiled on $(BUILDDATE)"' >> versioninfo.h
+       echo '#define REPOABOUTPREFTXT "SVN Version: $(SVNVERSION) $(BUILDINFO_NONRC_S)"' >> versioninfo.h
+ else
+ if BUILDINFO_CUST
+-      echo '#define REPOMAINTXT      " $(BUILDINFO_CUSTOM_TAG) (C) 2010 Heroine Virtual Ltd.\n@FFMPEG_EXTERNALTEXT@\nCompiled on $(BUILDDATE)"' >> versioninfo.h
++      echo '#define REPOMAINTXT      " $(BUILDINFO_CUSTOM_TAG) (C) 2010 Heroine Virtual Ltd. @FFMPEG_EXTERNALTEXT@ Compiled on $(BUILDDATE)"' >> versioninfo.h
+       echo '#define REPOABOUTPREFTXT "$(BUILDINFO_CUSTOM_TAG)"' >> versioninfo.h
+ else # (no repository)
+-      echo '#define REPOMAINTXT      "(C) 2010 Heroine Virtual Ltd.\nCompiled on $(BUILDDATE)"' >> versioninfo.h
++      echo '#define REPOMAINTXT      "(C) 2010 Heroine Virtual Ltd. Compiled on $(BUILDDATE)"' >> versioninfo.h
+       echo '#define REPOABOUTPREFTXT ""' >> versioninfo.h
+ endif
+ endif
+--- cinelerra-cv/guicast/Makefile.am~  2011-04-06 20:40:24.939828081 +0200
++++ cinelerra-cv/guicast/Makefile.am   2011-04-06 20:47:51.613590918 +0200
+@@ -1,7 +1,7 @@
+ lib_LTLIBRARIES = libguicast.la
+ noinst_PROGRAMS=bootstrap
+-libguicast_la_LIBADD = $(OPENGL_LIBS) -lXxf86vm -lXv -lXext -lX11 $(X_EXTRA_LIBS)
++libguicast_la_LIBADD = $(OPENGL_LIBS) -lXxf86vm -lXv -lXext -lX11 $(X_EXTRA_LIBS) -lpng $(top_builddir)/quicktime/libquicktimehv.la
+ libguicast_la_LDFLAGS = $(X_LIBS) -version-info 1:0:0 
+ libguicast_la_SOURCES = \
+       bcbar.C \
diff --git a/cinelerra-cv-libpng.patch b/cinelerra-cv-libpng.patch
deleted file mode 100644 (file)
index f9b4dfd..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
---- cinelerra-cv/plugins/shapewipe/shapewipe.C~        2010-01-09 15:12:21.000000000 +0100
-+++ cinelerra-cv/plugins/shapewipe/shapewipe.C 2010-02-16 15:03:37.044711032 +0100
-@@ -386,7 +386,7 @@
-       }
-       png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING,
--              png_voidp_NULL, png_error_ptr_NULL, png_error_ptr_NULL);
-+              NULL, NULL, NULL);
-       if (!png_ptr)
-       {
-@@ -399,14 +399,14 @@
-       info_ptr = png_create_info_struct(png_ptr);
-       if (!info_ptr)
-       {
--              png_destroy_read_struct(&png_ptr, png_infopp_NULL, png_infopp_NULL);
-+              png_destroy_read_struct(&png_ptr, NULL, NULL);
-               return 1;
-       }
-       end_info = png_create_info_struct(png_ptr);
-       if (!end_info)
-       {
--              png_destroy_read_struct(&png_ptr, &info_ptr, png_infopp_NULL);
-+              png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
-               return 1;
-       }
index 5511c6bf6aba1b67afe6b738f815ae0108b2463c..8e18e9f5f958629dbdbb3f6f07c0dac92d814f3c 100644 (file)
@@ -1,8 +1,8 @@
 # TODO:
 # - external libraries packages (is there any sense in that?)
 #
-%define                snap    20100109
-%define                rel             11
+%define                snap    20110406
+%define                rel             1
 Summary:       Cinelerra - capturing, editing and production of audio/video material
 Summary(pl.UTF-8):     Cinelerra - nagrywanie, obróbka i produkcja materiału audio/video
 Name:          cinelerra-cv
@@ -12,10 +12,11 @@ License:    GPL
 Group:         X11/Applications
 # git clone git://git.cinelerra.org/j6t/cinelerra.git cinelerra-cv
 Source0:       %{name}-%{snap}.tar.bz2
-# Source0-md5: e130b134a9e691ae36d2bbb117fc530b
+# Source0-md5: c41bcabbc0c28b4575f6ff8631effed8
 Patch0:                %{name}-build.patch
-Patch1:                %{name}-libpng.patch
-Patch2:                %{name}-desktop.patch
+Patch1:                %{name}-desktop.patch
+# http://bugs.cinelerra.org/raw-attachment/ticket/949/remove-support-v4l-buzz-k2-6-38.diff
+Patch2:                remove-support-v4l-buzz-k2-6-38.diff
 URL:           http://cinelerra.org/
 BuildRequires: OpenEXR-devel >= 1.2.1
 BuildRequires: OpenGL-GLU-devel
@@ -102,7 +103,6 @@ Wersja społecznościowa.
 %patch2 -p1
 
 find -name Makefile.am | xargs %{__sed} -i -e 's#^LIBTOOL =.*##g'
-%{__sed} -i -e 's/png_check_sig((unsigned char\*)test, 8)/!png_sig_cmp((unsigned char\*)test, 0, 8)/g' cinelerra/filepng.C
 
 %build
 rm -f m4/*.m4 *.m4
@@ -116,6 +116,7 @@ touch config.rpath
 
 %configure \
        CPPFLAGS="%{rpmcppflags} -I/usr/include/freetype2" \
+       CXXFLAGS="%{rpmcxxflags} -D__STDC_CONSTANT_MACROS=1" \
 %ifarch ppc
        --enable-altivec \
 %endif
diff --git a/remove-support-v4l-buzz-k2-6-38.diff b/remove-support-v4l-buzz-k2-6-38.diff
new file mode 100644 (file)
index 0000000..831c693
--- /dev/null
@@ -0,0 +1,1804 @@
+diff -Nru cinelerra.orig//cinelerra/channelpicker.C cinelerra/cinelerra/channelpicker.C
+--- cinelerra.orig//cinelerra/channelpicker.C  2010-11-24 18:18:03.000000000 -0500
++++ cinelerra/cinelerra/channelpicker.C        2011-02-17 13:31:30.147880002 -0500
+@@ -39,7 +39,7 @@
+ #include "recordgui.h"
+ #include "recordmonitor.h"
+ #include "theme.h"
+-#include "vdevicebuz.h"
++//#include "vdevicebuz.h"
+ #include "vdeviceprefs.h"
+ #include "videodevice.h"
+@@ -280,7 +280,7 @@
+ //    printf("PrefsChannelPicker::PrefsChannelPicker 1\n");
+       this->mwindow = mwindow;
+       this->prefs = prefs;
+-      VDeviceBUZ::get_inputs(&input_sources);
++//    VDeviceBUZ::get_inputs(&input_sources);
+ }
+ PrefsChannelPicker::~PrefsChannelPicker()
+diff -Nru cinelerra.orig//cinelerra/Makefile.am cinelerra/cinelerra/Makefile.am
+--- cinelerra.orig//cinelerra/Makefile.am      2010-11-24 18:18:03.000000000 -0500
++++ cinelerra/cinelerra/Makefile.am    2011-02-17 13:31:30.147880002 -0500
+@@ -305,10 +305,8 @@
+                   vattachmentpoint.C \
+                   vautomation.C \
+                   vdevicebase.C \
+-                  vdevicebuz.C \
+                   vdevicedvb.C \
+                   vdeviceprefs.C \
+-                  vdevicev4l.C \
+                   vdevicev4l2.C \
+                   vdevicev4l2jpeg.C \
+                   vdevicex11.C \
+diff -Nru cinelerra.orig//cinelerra/reversemake cinelerra/cinelerra/reversemake
+--- cinelerra.orig//cinelerra/reversemake      2010-11-24 18:18:03.000000000 -0500
++++ cinelerra/cinelerra/reversemake    2011-02-17 13:31:30.151880002 -0500
+@@ -32,10 +32,8 @@
+ make $OBJDIR/vedits.o
+ make $OBJDIR/vedit.o
+ make $OBJDIR/vdevicex11.o
+-make $OBJDIR/vdevicev4l.o
+ make $OBJDIR/vdeviceprefs.o
+ make $OBJDIR/vdevicelml.o
+-make $OBJDIR/vdevicebuz.o
+ make $OBJDIR/vdevicebase.o
+ make $OBJDIR/vdevice1394.o
+ make $OBJDIR/vautomation.o
+diff -Nru cinelerra.orig//cinelerra/vdevicebuz.C cinelerra/cinelerra/vdevicebuz.C
+--- cinelerra.orig//cinelerra/vdevicebuz.C     2010-11-24 18:18:03.000000000 -0500
++++ cinelerra/cinelerra/vdevicebuz.C   1969-12-31 19:00:00.000000000 -0500
+@@ -1,796 +0,0 @@
+-
+-/*
+- * CINELERRA
+- * Copyright (C) 2008 Adam Williams <broadcast at earthling dot net>
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 2 of the License, or
+- * (at your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+- * GNU General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+- * 
+- */
+-
+-// ALPHA C++ can't compile 64 bit headers
+-#undef _LARGEFILE_SOURCE
+-#undef _LARGEFILE64_SOURCE
+-#undef _FILE_OFFSET_BITS
+-
+-#include "assets.h"
+-#include "bcsignals.h"
+-#include "channel.h"
+-#include "chantables.h"
+-#include "condition.h"
+-#include "file.inc"
+-#include "mutex.h"
+-#include "picture.h"
+-#include "playbackconfig.h"
+-#include "preferences.h"
+-#include "recordconfig.h"
+-#include "strategies.inc"
+-#include "vdevicebuz.h"
+-#include "vframe.h"
+-#include "videoconfig.h"
+-#include "videodevice.h"
+-
+-#include <errno.h>
+-#include <stdint.h>
+-#include <linux/kernel.h>
+-//#include <linux/videodev2.h>
+-#include <linux/videodev.h>
+-#include <fcntl.h>
+-#include <sys/ioctl.h>
+-#include <sys/mman.h>
+-#include <unistd.h>
+-
+-
+-
+-#define READ_TIMEOUT 5000000
+-
+-
+-VDeviceBUZInput::VDeviceBUZInput(VDeviceBUZ *device)
+- : Thread(1, 1, 0)
+-{
+-      this->device = device;
+-      buffer = 0;
+-      buffer_size = 0;
+-      total_buffers = 0;
+-      current_inbuffer = 0;
+-      current_outbuffer = 0;
+-      done = 0;
+-      output_lock = new Condition(0, "VDeviceBUZInput::output_lock");
+-      buffer_lock = new Mutex("VDeviceBUZInput::buffer_lock");
+-}
+-
+-VDeviceBUZInput::~VDeviceBUZInput()
+-{
+-      if(Thread::running())
+-      {
+-              done = 1;
+-              Thread::cancel();
+-              Thread::join();
+-      }
+-
+-      if(buffer)
+-      {
+-              for(int i = 0; i < total_buffers; i++)
+-              {
+-                      delete [] buffer[i];
+-              }
+-              delete [] buffer;
+-              delete [] buffer_size;
+-      }
+-      delete output_lock;
+-      delete buffer_lock;
+-}
+-
+-void VDeviceBUZInput::start()
+-{
+-// Create buffers
+-      total_buffers = device->device->in_config->capture_length;
+-      buffer = new char*[total_buffers];
+-      buffer_size = new int[total_buffers];
+-      bzero(buffer_size, sizeof(int) * total_buffers);
+-      for(int i = 0; i < total_buffers; i++)
+-      {
+-              buffer[i] = new char[INPUT_BUFFER_SIZE];
+-      }
+-
+-      Thread::start();
+-}
+-
+-void VDeviceBUZInput::run()
+-{
+-    struct buz_sync bsync;
+-
+-// Wait for frame
+-      while(1)
+-      {
+-              Thread::enable_cancel();
+-              if(ioctl(device->jvideo_fd, BUZIOC_SYNC, &bsync) < 0)
+-              {
+-                      perror("VDeviceBUZInput::run BUZIOC_SYNC");
+-                      if(done) return;
+-                      Thread::disable_cancel();
+-              }
+-              else
+-              {
+-                      Thread::disable_cancel();
+-
+-
+-
+-                      int new_buffer = 0;
+-                      buffer_lock->lock("VDeviceBUZInput::run");
+-// Save only if the current buffer is free.
+-                      if(!buffer_size[current_inbuffer])
+-                      {
+-                              new_buffer = 1;
+-// Copy to input buffer
+-                              memcpy(buffer[current_inbuffer], 
+-                                      device->input_buffer + bsync.frame * device->breq.size,
+-                                      bsync.length);
+-
+-// Advance input buffer number and decrease semaphore.
+-                              buffer_size[current_inbuffer] = bsync.length;
+-                              increment_counter(&current_inbuffer);
+-                      }
+-
+-                      buffer_lock->unlock();
+-
+-                      if(ioctl(device->jvideo_fd, BUZIOC_QBUF_CAPT, &bsync.frame))
+-                              perror("VDeviceBUZInput::run BUZIOC_QBUF_CAPT");
+-
+-                      if(new_buffer) output_lock->unlock();
+-              }
+-      }
+-}
+-
+-void VDeviceBUZInput::get_buffer(char **ptr, int *size)
+-{
+-// Increase semaphore to wait for buffer.
+-      int result = output_lock->timed_lock(READ_TIMEOUT, "VDeviceBUZInput::get_buffer");
+-
+-
+-// The driver has its own timeout routine but it doesn't work because
+-// because the tuner lock is unlocked and relocked with no delay.
+-//    int result = 0;
+-//    output_lock->lock("VDeviceBUZInput::get_buffer");
+-
+-      if(!result)
+-      {
+-// Take over buffer table
+-              buffer_lock->lock("VDeviceBUZInput::get_buffer");
+-              *ptr = buffer[current_outbuffer];
+-              *size = buffer_size[current_outbuffer];
+-              buffer_lock->unlock();
+-      }
+-      else
+-      {
+-//printf("VDeviceBUZInput::get_buffer 1\n");
+-              output_lock->unlock();
+-      }
+-}
+-
+-void VDeviceBUZInput::put_buffer()
+-{
+-      buffer_lock->lock("VDeviceBUZInput::put_buffer");
+-      buffer_size[current_outbuffer] = 0;
+-      buffer_lock->unlock();
+-      increment_counter(&current_outbuffer);
+-}
+-
+-void VDeviceBUZInput::increment_counter(int *counter)
+-{
+-      (*counter)++;
+-      if(*counter >= total_buffers) *counter = 0;
+-}
+-
+-void VDeviceBUZInput::decrement_counter(int *counter)
+-{
+-      (*counter)--;
+-      if(*counter < 0) *counter = total_buffers - 1;
+-}
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-VDeviceBUZ::VDeviceBUZ(VideoDevice *device)
+- : VDeviceBase(device)
+-{
+-      reset_parameters();
+-      render_strategies.append(VRENDER_MJPG);
+-      tuner_lock = new Mutex("VDeviceBUZ::tuner_lock");
+-}
+-
+-VDeviceBUZ::~VDeviceBUZ()
+-{
+-      close_all();
+-      delete tuner_lock;
+-}
+-
+-int VDeviceBUZ::reset_parameters()
+-{
+-      jvideo_fd = 0;
+-      input_buffer = 0;
+-      output_buffer = 0;
+-      frame_buffer = 0;
+-      frame_size = 0;
+-      frame_allocated = 0;
+-      input_error = 0;
+-      last_frame_no = 0;
+-      temp_frame = 0;
+-      user_frame = 0;
+-      mjpeg = 0;
+-      total_loops = 0;
+-      output_number = 0;
+-      input_thread = 0;
+-      brightness = 32768;
+-      hue = 32768;
+-      color = 32768;
+-      contrast = 32768;
+-      whiteness = 32768;
+-}
+-
+-int VDeviceBUZ::close_input_core()
+-{
+-      if(input_thread)
+-      {
+-              delete input_thread;
+-              input_thread = 0;
+-      }
+-
+-
+-      if(device->r)
+-      {
+-              if(jvideo_fd) close(jvideo_fd);
+-              jvideo_fd = 0;
+-      }
+-
+-      if(input_buffer)
+-      {
+-              if(input_buffer > 0)
+-                      munmap(input_buffer, breq.count * breq.size);
+-              input_buffer = 0;
+-      }
+-}
+-
+-int VDeviceBUZ::close_output_core()
+-{
+-//printf("VDeviceBUZ::close_output_core 1\n");
+-      if(device->w)
+-      {
+-              int n = -1;
+-//            if(ioctl(jvideo_fd, BUZIOC_QBUF_PLAY, &n) < 0)
+-//                    perror("VDeviceBUZ::close_output_core BUZIOC_QBUF_PLAY");
+-              if(jvideo_fd) close(jvideo_fd);
+-              jvideo_fd = 0;
+-      }
+-      if(output_buffer)
+-      {
+-              if(output_buffer > 0)
+-                      munmap(output_buffer, breq.count * breq.size);
+-              output_buffer = 0;
+-      }
+-      if(temp_frame)
+-      {
+-              delete temp_frame;
+-              temp_frame = 0;
+-      }
+-      if(mjpeg)
+-      {
+-              mjpeg_delete(mjpeg);
+-              mjpeg = 0;
+-      }
+-      if(user_frame)
+-      {
+-              delete user_frame;
+-              user_frame = 0;
+-      }
+-//printf("VDeviceBUZ::close_output_core 2\n");
+-      return 0;
+-}
+-
+-
+-int VDeviceBUZ::close_all()
+-{
+-//printf("VDeviceBUZ::close_all 1\n");
+-      close_input_core();
+-//printf("VDeviceBUZ::close_all 1\n");
+-      close_output_core();
+-//printf("VDeviceBUZ::close_all 1\n");
+-      if(frame_buffer) delete frame_buffer;
+-//printf("VDeviceBUZ::close_all 1\n");
+-      reset_parameters();
+-//printf("VDeviceBUZ::close_all 2\n");
+-      return 0;
+-}
+-
+-#define COMPOSITE_TEXT "Composite"
+-#define SVIDEO_TEXT "S-Video"
+-#define BUZ_COMPOSITE 0
+-#define BUZ_SVIDEO 1
+-
+-void VDeviceBUZ::get_inputs(ArrayList<Channel*> *input_sources)
+-{
+-      Channel *new_source = new Channel;
+-
+-      new_source = new Channel;
+-      strcpy(new_source->device_name, COMPOSITE_TEXT);
+-      input_sources->append(new_source);
+-
+-      new_source = new Channel;
+-      strcpy(new_source->device_name, SVIDEO_TEXT);
+-      input_sources->append(new_source);
+-}
+-
+-int VDeviceBUZ::open_input()
+-{
+-      device->channel->use_norm = 1;
+-      device->channel->use_input = 1;
+-
+-      device->picture->use_brightness = 1;
+-      device->picture->use_contrast = 1;
+-      device->picture->use_color = 1;
+-      device->picture->use_hue = 1;
+-      device->picture->use_whiteness = 1;
+-
+-// Can't open input until after the channel is set
+-      return 0;
+-}
+-
+-int VDeviceBUZ::open_output()
+-{
+-// Can't open output until after the channel is set
+-      return 0;
+-}
+-
+-int VDeviceBUZ::set_channel(Channel *channel)
+-{
+-      if(!channel) return 0;
+-
+-      tuner_lock->lock("VDeviceBUZ::set_channel");
+-
+-      if(device->r)
+-      {
+-              close_input_core();
+-              open_input_core(channel);
+-      }
+-      else
+-      {
+-              close_output_core();
+-              open_output_core(channel);
+-      }
+-
+-      tuner_lock->unlock();
+-
+-
+-      return 0;
+-}
+-
+-void VDeviceBUZ::create_channeldb(ArrayList<Channel*> *channeldb)
+-{
+-      ;
+-}
+-
+-int VDeviceBUZ::set_picture(PictureConfig *picture)
+-{
+-      this->brightness = (int)((float)picture->brightness / 100 * 32767 + 32768);
+-      this->hue = (int)((float)picture->hue / 100 * 32767 + 32768);
+-      this->color = (int)((float)picture->color / 100 * 32767 + 32768);
+-      this->contrast = (int)((float)picture->contrast / 100 * 32767 + 32768);
+-      this->whiteness = (int)((float)picture->whiteness / 100 * 32767 + 32768);
+-
+-
+-      tuner_lock->lock("VDeviceBUZ::set_picture");
+-      if(device->r)
+-      {
+-              close_input_core();
+-              open_input_core(0);
+-      }
+-      else
+-      {
+-              close_output_core();
+-              open_output_core(0);
+-      }
+-      tuner_lock->unlock();
+-// 
+-// 
+-// TRACE("VDeviceBUZ::set_picture 1");
+-//    tuner_lock->lock("VDeviceBUZ::set_picture");
+-// TRACE("VDeviceBUZ::set_picture 2");
+-// 
+-// 
+-// 
+-//    struct video_picture picture_params;
+-// // This call takes a long time in 2.4.22
+-//    if(ioctl(jvideo_fd, VIDIOCGPICT, &picture_params) < 0)
+-//            perror("VDeviceBUZ::set_picture VIDIOCGPICT");
+-//    picture_params.brightness = brightness;
+-//    picture_params.hue = hue;
+-//    picture_params.colour = color;
+-//    picture_params.contrast = contrast;
+-//    picture_params.whiteness = whiteness;
+-// // This call takes a long time in 2.4.22
+-//    if(ioctl(jvideo_fd, VIDIOCSPICT, &picture_params) < 0)
+-//            perror("VDeviceBUZ::set_picture VIDIOCSPICT");
+-//    if(ioctl(jvideo_fd, VIDIOCGPICT, &picture_params) < 0)
+-//            perror("VDeviceBUZ::set_picture VIDIOCGPICT");
+-// 
+-// 
+-// TRACE("VDeviceBUZ::set_picture 10");
+-// 
+-// 
+-//    tuner_lock->unlock();
+-
+-      return 0;
+-}
+-
+-int VDeviceBUZ::get_norm(int norm)
+-{
+-      switch(norm)
+-      {
+-              case NTSC:          return VIDEO_MODE_NTSC;      break;
+-              case PAL:           return VIDEO_MODE_PAL;       break;
+-              case SECAM:         return VIDEO_MODE_SECAM;     break;
+-      }
+-}
+-
+-int VDeviceBUZ::read_buffer(VFrame *frame)
+-{
+-      tuner_lock->lock("VDeviceBUZ::read_buffer");
+-      if(!jvideo_fd) open_input_core(0);
+-
+-// Get buffer from thread
+-      char *buffer = 0;
+-      int buffer_size = 0;
+-      if(input_thread) 
+-              input_thread->get_buffer(&buffer, &buffer_size);
+-
+-      if(buffer)
+-      {
+-              frame->allocate_compressed_data(buffer_size);
+-              frame->set_compressed_size(buffer_size);
+-
+-// Transfer fields to frame
+-              if(device->odd_field_first)
+-              {
+-                      long field2_offset = mjpeg_get_field2((unsigned char*)buffer, buffer_size);
+-                      long field1_len = field2_offset;
+-                      long field2_len = buffer_size - field2_offset;
+-
+-                      memcpy(frame->get_data(), buffer + field2_offset, field2_len);
+-                      memcpy(frame->get_data() + field2_len, buffer, field1_len);
+-              }
+-              else
+-              {
+-                      bcopy(buffer, frame->get_data(), buffer_size);
+-              }
+-
+-              input_thread->put_buffer();
+-              tuner_lock->unlock();
+-      }
+-      else
+-      {
+-              tuner_lock->unlock();
+-              Timer timer;
+-// Allow other threads to lock the tuner_lock under NPTL.
+-              timer.delay(100);
+-      }
+-
+-
+-      return 0;
+-}
+-
+-int VDeviceBUZ::open_input_core(Channel *channel)
+-{
+-      jvideo_fd = open(device->in_config->buz_in_device, O_RDONLY);
+-
+-      if(jvideo_fd <= 0)
+-      {
+-              fprintf(stderr, "VDeviceBUZ::open_input %s: %s\n", 
+-                      device->in_config->buz_in_device,
+-                      strerror(errno));
+-              jvideo_fd = 0;
+-              return 1;
+-      }
+-
+-// Create input sources
+-      get_inputs(&device->input_sources);
+-
+-// Set current input source
+-      if(channel)
+-      {
+-              for(int i = 0; i < 2; i++)
+-              {
+-                      struct video_channel vch;
+-                      vch.channel = channel->input;
+-                      vch.norm = get_norm(channel->norm);
+-
+-//printf("VDeviceBUZ::open_input_core 2 %d %d\n", vch.channel, vch.norm);
+-                      if(ioctl(jvideo_fd, VIDIOCSCHAN, &vch) < 0)
+-                              perror("VDeviceBUZ::open_input_core VIDIOCSCHAN ");
+-              }
+-      }
+-
+-
+-// Throw away
+-//     struct video_capability vc;
+-//    if(ioctl(jvideo_fd, VIDIOCGCAP, &vc) < 0)
+-//            perror("VDeviceBUZ::open_input VIDIOCGCAP");
+-
+-// API dependant initialization
+-      if(ioctl(jvideo_fd, BUZIOC_G_PARAMS, &bparm) < 0)
+-              perror("VDeviceBUZ::open_input BUZIOC_G_PARAMS");
+-
+-      bparm.HorDcm = 1;
+-      bparm.VerDcm = 1;
+-      bparm.TmpDcm = 1;
+-      bparm.field_per_buff = 2;
+-      bparm.img_width = device->in_config->w;
+-      bparm.img_height = device->in_config->h / bparm.field_per_buff;
+-      bparm.img_x = 0;
+-      bparm.img_y = 0;
+-//    bparm.APPn = 0;
+-//    bparm.APP_len = 14;
+-      bparm.APP_len = 0;
+-      bparm.odd_even = 0;
+-    bparm.decimation = 0;
+-    bparm.quality = device->quality;
+-    bzero(bparm.APP_data, sizeof(bparm.APP_data));
+-
+-      if(ioctl(jvideo_fd, BUZIOC_S_PARAMS, &bparm) < 0)
+-              perror("VDeviceBUZ::open_input BUZIOC_S_PARAMS");
+-
+-// printf("open_input %d %d %d %d %d %d %d %d %d %d %d %d\n", 
+-//            bparm.HorDcm,
+-//            bparm.VerDcm,
+-//            bparm.TmpDcm,
+-//            bparm.field_per_buff,
+-//            bparm.img_width,
+-//            bparm.img_height,
+-//            bparm.img_x,
+-//            bparm.img_y,
+-//            bparm.APP_len,
+-//            bparm.odd_even,
+-//            bparm.decimation,
+-//            bparm.quality);
+-
+-      breq.count = device->in_config->capture_length;
+-      breq.size = INPUT_BUFFER_SIZE;
+-      if(ioctl(jvideo_fd, BUZIOC_REQBUFS, &breq) < 0)
+-              perror("VDeviceBUZ::open_input BUZIOC_REQBUFS");
+-
+-//printf("open_input %s %d %d %d %d\n", device->in_config->buz_in_device, breq.count, breq.size, bparm.img_width, bparm.img_height);
+-      if((input_buffer = (char*)mmap(0, 
+-              breq.count * breq.size, 
+-              PROT_READ, 
+-              MAP_SHARED, 
+-              jvideo_fd, 
+-              0)) == MAP_FAILED)
+-              perror("VDeviceBUZ::open_input mmap");
+-
+-
+-// Set picture quality
+-      struct video_picture picture_params;
+-// This call takes a long time in 2.4.22
+-      if(ioctl(jvideo_fd, VIDIOCGPICT, &picture_params) < 0)
+-              perror("VDeviceBUZ::set_picture VIDIOCGPICT");
+-      picture_params.brightness = brightness;
+-      picture_params.hue = hue;
+-      picture_params.colour = color;
+-      picture_params.contrast = contrast;
+-      picture_params.whiteness = whiteness;
+-// This call takes a long time in 2.4.22
+-      if(ioctl(jvideo_fd, VIDIOCSPICT, &picture_params) < 0)
+-              perror("VDeviceBUZ::set_picture VIDIOCSPICT");
+-      if(ioctl(jvideo_fd, VIDIOCGPICT, &picture_params) < 0)
+-              perror("VDeviceBUZ::set_picture VIDIOCGPICT");
+-
+-
+-
+-
+-// Start capturing
+-      for(int i = 0; i < breq.count; i++)
+-      {
+-        if(ioctl(jvideo_fd, BUZIOC_QBUF_CAPT, &i) < 0)
+-                      perror("VDeviceBUZ::open_input BUZIOC_QBUF_CAPT");
+-      }
+-
+-
+-      input_thread = new VDeviceBUZInput(this);
+-      input_thread->start();
+-//printf("VDeviceBUZ::open_input_core 2\n");
+-      return 0;
+-}
+-
+-int VDeviceBUZ::open_output_core(Channel *channel)
+-{
+-//printf("VDeviceBUZ::open_output 1\n");
+-      total_loops = 0;
+-      output_number = 0;
+-      jvideo_fd = open(device->out_config->buz_out_device, O_RDWR);
+-      if(jvideo_fd <= 0)
+-      {
+-              perror("VDeviceBUZ::open_output");
+-              return 1;
+-      }
+-
+-
+-// Set current input source
+-      if(channel)
+-      {
+-              struct video_channel vch;
+-              vch.channel = channel->input;
+-              vch.norm = get_norm(channel->norm);
+-
+-              if(ioctl(jvideo_fd, VIDIOCSCHAN, &vch) < 0)
+-                      perror("VDeviceBUZ::open_output_core VIDIOCSCHAN ");
+-      }
+-
+-      breq.count = 10;
+-      breq.size = INPUT_BUFFER_SIZE;
+-      if(ioctl(jvideo_fd, BUZIOC_REQBUFS, &breq) < 0)
+-              perror("VDeviceBUZ::open_output BUZIOC_REQBUFS");
+-      if((output_buffer = (char*)mmap(0, 
+-              breq.count * breq.size, 
+-              PROT_READ | PROT_WRITE, 
+-              MAP_SHARED, 
+-              jvideo_fd, 
+-              0)) == MAP_FAILED)
+-              perror("VDeviceBUZ::open_output mmap");
+-
+-      if(ioctl(jvideo_fd, BUZIOC_G_PARAMS, &bparm) < 0)
+-              perror("VDeviceBUZ::open_output BUZIOC_G_PARAMS");
+-
+-      bparm.decimation = 1;
+-      bparm.HorDcm = 1;
+-      bparm.field_per_buff = 2;
+-      bparm.TmpDcm = 1;
+-      bparm.VerDcm = 1;
+-      bparm.img_width = device->out_w;
+-      bparm.img_height = device->out_h / bparm.field_per_buff;
+-      bparm.img_x = 0;
+-      bparm.img_y = 0;
+-      bparm.odd_even = 0;
+-
+-      if(ioctl(jvideo_fd, BUZIOC_S_PARAMS, &bparm) < 0)
+-              perror("VDeviceBUZ::open_output BUZIOC_S_PARAMS");
+-//printf("VDeviceBUZ::open_output 2\n");
+-      return 0;
+-}
+-
+-
+-
+-int VDeviceBUZ::write_buffer(VFrame *frame, EDL *edl)
+-{
+-//printf("VDeviceBUZ::write_buffer 1\n");
+-      tuner_lock->lock("VDeviceBUZ::write_buffer");
+-
+-      if(!jvideo_fd) open_output_core(0);
+-
+-      VFrame *ptr = 0;
+-      if(frame->get_color_model() != BC_COMPRESSED)
+-      {
+-              if(!temp_frame) temp_frame = new VFrame;
+-              if(!mjpeg)
+-              {
+-                      mjpeg = mjpeg_new(device->out_w, device->out_h, 2);
+-                      mjpeg_set_quality(mjpeg, device->quality);
+-                      mjpeg_set_float(mjpeg, 0);
+-              }
+-              ptr = temp_frame;
+-              mjpeg_compress(mjpeg, 
+-                      frame->get_rows(), 
+-                      frame->get_y(), 
+-                      frame->get_u(), 
+-                      frame->get_v(),
+-                      frame->get_color_model(),
+-                      device->cpus);
+-              temp_frame->allocate_compressed_data(mjpeg_output_size(mjpeg));
+-              temp_frame->set_compressed_size(mjpeg_output_size(mjpeg));
+-              bcopy(mjpeg_output_buffer(mjpeg), temp_frame->get_data(), mjpeg_output_size(mjpeg));
+-      }
+-      else
+-              ptr = frame;
+-
+-// Wait for frame to become available
+-// Caused close_output_core to lock up.
+-//    if(total_loops >= 1)
+-//    {
+-//            if(ioctl(jvideo_fd, BUZIOC_SYNC, &output_number) < 0)
+-//                    perror("VDeviceBUZ::write_buffer BUZIOC_SYNC");
+-//    }
+-
+-      if(device->out_config->buz_swap_fields)
+-      {
+-              long field2_offset = mjpeg_get_field2((unsigned char*)ptr->get_data(), 
+-                      ptr->get_compressed_size());
+-              long field2_len = ptr->get_compressed_size() - field2_offset;
+-              memcpy(output_buffer + output_number * breq.size, 
+-                      ptr->get_data() + field2_offset, 
+-                      field2_len);
+-              memcpy(output_buffer + output_number * breq.size +field2_len,
+-                      ptr->get_data(), 
+-                      field2_offset);
+-      }
+-      else
+-      {
+-              bcopy(ptr->get_data(), 
+-                      output_buffer + output_number * breq.size, 
+-                      ptr->get_compressed_size());
+-      }
+-
+-      if(ioctl(jvideo_fd, BUZIOC_QBUF_PLAY, &output_number) < 0)
+-              perror("VDeviceBUZ::write_buffer BUZIOC_QBUF_PLAY");
+-
+-      output_number++;
+-      if(output_number >= breq.count)
+-      {
+-              output_number = 0;
+-              total_loops++;
+-      }
+-      tuner_lock->unlock();
+-//printf("VDeviceBUZ::write_buffer 2\n");
+-
+-      return 0;
+-}
+-
+-void VDeviceBUZ::new_output_buffer(VFrame *output,
+-      int colormodel)
+-{
+-//printf("VDeviceBUZ::new_output_buffer 1 %d\n", colormodel);
+-      if(user_frame)
+-      {
+-              if(colormodel != user_frame->get_color_model())
+-              {
+-                      delete user_frame;
+-                      user_frame = 0;
+-              }
+-      }
+-
+-      if(!user_frame)
+-      {
+-              switch(colormodel)
+-              {
+-                      case BC_COMPRESSED:
+-                              user_frame = new VFrame;
+-                              break;
+-                      default:
+-                              user_frame = new VFrame(0,
+-                                      device->out_w,
+-                                      device->out_h,
+-                                      colormodel,
+-                                      -1);
+-                              break;
+-              }
+-      }
+-      user_frame->set_shm_offset(0);
+-      output = user_frame;
+-//printf("VDeviceBUZ::new_output_buffer 2\n");
+-}
+-
+-
+-ArrayList<int>* VDeviceBUZ::get_render_strategies()
+-{
+-      return &render_strategies;
+-}
+-
+diff -Nru cinelerra.orig//cinelerra/vdevicebuz.h cinelerra/cinelerra/vdevicebuz.h
+--- cinelerra.orig//cinelerra/vdevicebuz.h     2010-11-24 18:18:03.000000000 -0500
++++ cinelerra/cinelerra/vdevicebuz.h   1969-12-31 19:00:00.000000000 -0500
+@@ -1,130 +0,0 @@
+-
+-/*
+- * CINELERRA
+- * Copyright (C) 2008 Adam Williams <broadcast at earthling dot net>
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 2 of the License, or
+- * (at your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+- * GNU General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+- * 
+- */
+-
+-#ifndef VDEVICEBUZ_H
+-#define VDEVICEBUZ_H
+-
+-#include "buz.h"
+-#include "channel.inc"
+-#include "condition.inc"
+-#include "guicast.h"
+-#include "libmjpeg.h"
+-#include "mutex.inc"
+-#include "thread.h"
+-#include "vdevicebase.h"
+-#include "vdevicebuz.inc"
+-#include "vframe.inc"
+-
+-
+-#define INPUT_BUFFER_SIZE 0x40000
+-
+-// Let's get real.  The Buz driver doesn't work.  If the buffers overflow
+-// for enough time it locks up and can't be recovered except by a
+-// SIGINT and restart.  We need to cascade the buffer reading in another
+-// ring buffer thread, have it read continuously, and cancel it if it 
+-// dies.  How about if we do this in SCHED_RR and wait for it to die before 
+-// implementing cancellation?
+-
+-
+-class VDeviceBUZInput : public Thread
+-{
+-public:
+-      VDeviceBUZInput(VDeviceBUZ *device);
+-      ~VDeviceBUZInput();
+-      void start();
+-      void run();
+-      void get_buffer(char **ptr, int *size);
+-      void put_buffer();
+-      void increment_counter(int *counter);
+-      void decrement_counter(int *counter);
+-      VDeviceBUZ *device;
+-
+-      char **buffer;
+-      int *buffer_size;
+-      int total_buffers;
+-      int current_inbuffer;
+-      int current_outbuffer;
+-      Condition *output_lock;
+-      Mutex *buffer_lock;
+-      int done;
+-};
+-
+-
+-class VDeviceBUZ : public VDeviceBase
+-{
+-public:
+-      VDeviceBUZ(VideoDevice *device);
+-      ~VDeviceBUZ();
+-
+-      friend class VDeviceBUZInput;
+-
+-      int open_input();
+-      int open_output();
+-      int close_all();
+-      int read_buffer(VFrame *frame);
+-      int write_buffer(VFrame *frames, EDL *edl);
+-      int reset_parameters();
+-      ArrayList<int>* get_render_strategies();
+-      int set_channel(Channel *channel);
+-      int get_norm(int norm);
+-      static void get_inputs(ArrayList<Channel*> *input_sources);
+-      int set_picture(PictureConfig *picture);
+-      int get_best_colormodel(int colormodel);
+-      void create_channeldb(ArrayList<Channel*> *channeldb);
+-      void new_output_buffer(VFrame *output, int colormodel);
+-
+-
+-private:
+-      int open_input_core(Channel *channel);
+-      int close_input_core();
+-      int open_output_core(Channel *channel);
+-      int close_output_core();
+-
+-      int jvideo_fd;
+-      char *input_buffer, *frame_buffer, *output_buffer;
+-      long frame_size, frame_allocated;
+-      int input_error;
+-//    quicktime_mjpeg_hdr jpeg_header;
+-      long last_frame_no;
+-      ArrayList<int> render_strategies;
+-// Temporary frame for compressing output data
+-      VFrame *temp_frame;
+-// Frame given to user to acquire data
+-      VFrame *user_frame;
+-      mjpeg_t *mjpeg;
+-      Mutex *tuner_lock;
+-      VDeviceBUZInput *input_thread;
+-
+-      struct buz_params bparm;
+-      struct buz_requestbuffers breq;
+-// Can't CSYNC the first loop
+-      int total_loops;
+-// Number of output frame to load
+-      int output_number;
+-
+-      int brightness;
+-      int hue;
+-      int color;
+-      int contrast;
+-      int whiteness;
+-};
+-
+-#endif
+diff -Nru cinelerra.orig//cinelerra/vdevicebuz.inc cinelerra/cinelerra/vdevicebuz.inc
+--- cinelerra.orig//cinelerra/vdevicebuz.inc   2010-11-24 18:18:03.000000000 -0500
++++ cinelerra/cinelerra/vdevicebuz.inc 1969-12-31 19:00:00.000000000 -0500
+@@ -1,28 +0,0 @@
+-
+-/*
+- * CINELERRA
+- * Copyright (C) 2008 Adam Williams <broadcast at earthling dot net>
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 2 of the License, or
+- * (at your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+- * GNU General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+- * 
+- */
+-
+-#ifndef VDEVICEBUZ_INC
+-#define VDEVICEBUZ_INC
+-
+-class VDeviceBUZ;
+-class VDeviceBUZInput;
+-
+-#endif
+diff -Nru cinelerra.orig//cinelerra/vdevicev4l.C cinelerra/cinelerra/vdevicev4l.C
+--- cinelerra.orig//cinelerra/vdevicev4l.C     2010-11-24 18:18:03.000000000 -0500
++++ cinelerra/cinelerra/vdevicev4l.C   1969-12-31 19:00:00.000000000 -0500
+@@ -1,574 +0,0 @@
+-
+-/*
+- * CINELERRA
+- * Copyright (C) 2008 Adam Williams <broadcast at earthling dot net>
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 2 of the License, or
+- * (at your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+- * GNU General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+- * 
+- */
+-
+-// V4L2 is incompatible with large file support
+-// ALPHA C++ can't compile 64 bit headers
+-#undef _FILE_OFFSET_BITS
+-#undef _LARGEFILE_SOURCE
+-#undef _LARGEFILE64_SOURCE
+-
+-
+-#include "assets.h"
+-#include "bcsignals.h"
+-#include "channel.h"
+-#include "chantables.h"
+-#include "clip.h"
+-#include "file.h"
+-#include "picture.h"
+-#include "preferences.h"
+-#include "quicktime.h"
+-#include "recordconfig.h"
+-#include "vdevicev4l.h"
+-#include "vframe.h"
+-#include "videodevice.h"
+-
+-#include <unistd.h>
+-#include <sys/ioctl.h>
+-#include <fcntl.h>
+-#include <sys/mman.h>
+-#include <string.h>
+-
+-VDeviceV4L::VDeviceV4L(VideoDevice *device)
+- : VDeviceBase(device)
+-{
+-      initialize();
+-}
+-
+-VDeviceV4L::~VDeviceV4L()
+-{
+-}
+-
+-int VDeviceV4L::initialize()
+-{
+-      capture_buffer = 0;
+-      capture_frame_number = 0;
+-      read_frame_number = 0;
+-      shared_memory = 0;
+-      initialization_complete = 0;
+-      return 0;
+-}
+-
+-int VDeviceV4L::open_input()
+-{
+-      device->channel->use_frequency = 1;
+-      device->channel->use_fine = 1;
+-      device->channel->use_norm = 1;
+-      device->channel->use_input = 1;
+-
+-
+-      device->picture->use_brightness = 1;
+-      device->picture->use_contrast = 1;
+-      device->picture->use_color = 1;
+-      device->picture->use_hue = 1;
+-      device->picture->use_whiteness = 1;
+-
+-      if((input_fd = open(device->in_config->v4l_in_device, O_RDWR)) < 0)
+-      {
+-              perror("VDeviceV4L::open_input");
+-              return 1;
+-      }
+-      else
+-      {
+-              v4l1_get_inputs();
+-              close(input_fd);
+-      }
+-      return 0;
+-}
+-
+-int VDeviceV4L::close_all()
+-{
+-      close_v4l();
+-      return 0;
+-}
+-
+-int VDeviceV4L::close_v4l()
+-{
+-      unmap_v4l_shmem();
+-      if(input_fd != -1) close(input_fd);
+-      return 0;
+-}
+-
+-int VDeviceV4L::unmap_v4l_shmem()
+-{
+-      if(capture_buffer)
+-      {
+-              if(shared_memory)
+-                      munmap(capture_buffer, capture_params.size);
+-              else
+-                      delete capture_buffer;
+-              capture_buffer = 0;
+-      }
+-      return 0;
+-}
+-
+-int VDeviceV4L::v4l_init()
+-{
+-      int i;
+-
+-      input_fd = open(device->in_config->v4l_in_device, O_RDWR);
+-
+-      if(input_fd < 0)
+-              perror("VDeviceV4L::v4l_init");
+-      else
+-      {
+-              set_cloexec_flag(input_fd, 1);
+-              set_mute(0);
+-              if(ioctl(input_fd, VIDIOCGWIN, &window_params) < 0)
+-                      perror("VDeviceV4L::v4l_init VIDIOCGWIN");
+-              window_params.x = 0;
+-              window_params.y = 0;
+-              window_params.width = device->in_config->w;
+-              window_params.height = device->in_config->h;
+-              window_params.chromakey = 0;
+-              window_params.flags = 0;
+-              window_params.clipcount = 0;
+-              if(ioctl(input_fd, VIDIOCSWIN, &window_params) < 0)
+-                      perror("VDeviceV4L::v4l_init VIDIOCSWIN");
+-              if(ioctl(input_fd, VIDIOCGWIN, &window_params) < 0)
+-                      perror("VDeviceV4L::v4l_init VIDIOCGWIN");
+-
+-              device->in_config->w = window_params.width;
+-              device->in_config->h = window_params.height;
+-
+-              PictureConfig picture(0);
+-              set_picture(&picture);
+-
+-              if(ioctl(input_fd, VIDIOCGMBUF, &capture_params) < 0)
+-                      perror("VDeviceV4L::v4l_init VIDIOCGMBUF");
+-
+-              capture_buffer = (char*)mmap(0, 
+-                      capture_params.size, 
+-                      PROT_READ|PROT_WRITE, 
+-                      MAP_SHARED, 
+-                      input_fd, 
+-                      0);
+-
+-              capture_frame_number = 0;
+-
+-              if(capture_buffer == MAP_FAILED)
+-              {
+-// Use read instead.
+-                      perror("VDeviceV4L::v4l_init mmap");
+-                      shared_memory = 0;
+-                      capture_buffer = new char[capture_params.size];
+-              }
+-              else
+-              {
+-// Get all frames capturing
+-                      shared_memory = 1;
+-              }
+-      }
+-      got_first_frame = 0;
+-      return 0;
+-}
+-
+-void VDeviceV4L::v4l1_start_capture()
+-{
+-      for(int i = 0; i < MIN(capture_params.frames, device->in_config->capture_length); i++)
+-              capture_frame(i);
+-}
+-
+-
+-
+-
+-
+-
+-
+-
+-int VDeviceV4L::v4l1_get_inputs()
+-{
+-      struct video_channel channel_struct;
+-      int i = 0, done = 0;
+-      char *new_source;
+-
+-      while(!done && i < 20)
+-      {
+-              channel_struct.channel = i;
+-              if(ioctl(input_fd, VIDIOCGCHAN, &channel_struct) < 0)
+-              {
+-// Finished
+-                      done = 1;
+-              }
+-              else
+-              {
+-                      Channel *channel = new Channel;
+-                      strcpy(channel->device_name, channel_struct.name);
+-                      device->input_sources.append(channel);
+-              }
+-              i++;
+-      }
+-      return 0;
+-}
+-
+-int VDeviceV4L::set_mute(int muted)
+-{
+-// Open audio, which obviously is controlled by the video driver.
+-// and apparently resets the input source.
+-      v4l1_set_mute(muted);
+-}
+-
+-int VDeviceV4L::v4l1_set_mute(int muted)
+-{
+-      struct video_audio audio;
+-
+-    if(ioctl(input_fd, VIDIOCGAUDIO, &audio))
+-      if(ioctl(input_fd, VIDIOCGAUDIO, &audio) < 0)
+-          perror("VDeviceV4L::ioctl VIDIOCGAUDIO");
+-
+-      audio.volume = 65535;
+-      audio.bass = 65535;
+-      audio.treble = 65535;
+-      if(muted)
+-              audio.flags |= VIDEO_AUDIO_MUTE | VIDEO_AUDIO_VOLUME;
+-      else
+-              audio.flags &= ~VIDEO_AUDIO_MUTE;
+-
+-    if(ioctl(input_fd, VIDIOCSAUDIO, &audio) < 0)
+-              perror("VDeviceV4L::ioctl VIDIOCSAUDIO");
+-      return 0;
+-}
+-
+-
+-int VDeviceV4L::set_cloexec_flag(int desc, int value)
+-{
+-      int oldflags = fcntl(desc, F_GETFD, 0);
+-      if(oldflags < 0) return oldflags;
+-      if(value != 0) 
+-              oldflags |= FD_CLOEXEC;
+-      else
+-              oldflags &= ~FD_CLOEXEC;
+-      return fcntl(desc, F_SETFD, oldflags);
+-}
+-
+-
+-
+-
+-
+-int VDeviceV4L::get_best_colormodel(Asset *asset)
+-{
+-      int result = BC_RGB888;
+-
+-// Get best colormodel for hardware acceleration
+-
+-      result = File::get_best_colormodel(asset, device->in_config->driver);
+-
+-
+-// Need to get color model before opening device but don't call this
+-// unless you want to open the device either.
+-      if(!initialization_complete)
+-      {
+-              device_colormodel = translate_colormodel(result);
+-              this->colormodel = result;
+-              v4l_init();
+-              initialization_complete = 1;
+-      }
+-// printf("VDeviceV4L::get_best_colormodel %c%c%c%c\n", 
+-//    ((char*)&device_colormodel)[0],
+-//    ((char*)&device_colormodel)[1],
+-//    ((char*)&device_colormodel)[2],
+-//    ((char*)&device_colormodel)[3]);
+-      return result;
+-}
+-
+-unsigned long VDeviceV4L::translate_colormodel(int colormodel)
+-{
+-      unsigned long result = 0;
+-      switch(colormodel)
+-      {
+-              case BC_YUV422:      result = VIDEO_PALETTE_YUV422;      break;
+-              case BC_YUV420P:     result = VIDEO_PALETTE_YUV420P;     break;
+-              case BC_YUV422P:     result = VIDEO_PALETTE_YUV422P;     break;
+-              case BC_YUV411P:     result = VIDEO_PALETTE_YUV411P;     break;
+-              case BC_RGB888:      result = VIDEO_PALETTE_RGB24;       break;
+-              default: result = VIDEO_PALETTE_RGB24; break;
+-      }
+-//printf("VDeviceV4L::translate_colormodel %d\n", result);
+-      return result;
+-}
+-
+-int VDeviceV4L::set_channel(Channel *channel)
+-{
+-      return v4l1_set_channel(channel);
+-}
+-
+-int VDeviceV4L::v4l1_set_channel(Channel *channel)
+-{
+-      struct video_channel channel_struct;
+-      struct video_tuner tuner_struct;
+-      unsigned long new_freq;
+-
+-// Mute changed the input to TV
+-//    set_mute(1);
+-
+-//printf("VDeviceV4L::v4l1_set_channel 1 %d\n", channel->input);
+-// Read norm/input defaults
+-      channel_struct.channel = channel->input;
+-      if(ioctl(input_fd, VIDIOCGCHAN, &channel_struct) < 0)
+-              perror("VDeviceV4L::v4l1_set_channel VIDIOCGCHAN");
+-
+-// Set norm/input
+-      channel_struct.channel = channel->input;
+-      channel_struct.norm = v4l1_get_norm(channel->norm);
+-      if(ioctl(input_fd, VIDIOCSCHAN, &channel_struct) < 0)
+-              perror("VDeviceV4L::v4l1_set_channel VIDIOCSCHAN");
+-
+-      if(channel_struct.flags & VIDEO_VC_TUNER)
+-      {
+-// Read tuner defaults
+-              tuner_struct.tuner = channel->input;
+-              if(ioctl(input_fd, VIDIOCGTUNER, &tuner_struct) < 0)
+-                      perror("VDeviceV4L::v4l1_set_channel VIDIOCGTUNER");
+-
+-// Set tuner
+-              tuner_struct.mode = v4l1_get_norm(channel->norm);
+-              if(ioctl(input_fd, VIDIOCSTUNER, &tuner_struct) < 0)
+-                      perror("VDeviceV4L::v4l1_set_channel VIDIOCSTUNER");
+-
+-              new_freq = chanlists[channel->freqtable].list[channel->entry].freq;
+-              new_freq = (int)(new_freq * 0.016);
+-              new_freq += channel->fine_tune;
+-
+-              if(ioctl(input_fd, VIDIOCSFREQ, &new_freq) < 0)
+-                      perror("VDeviceV4L::v4l1_set_channel VIDIOCSFREQ");
+-      }
+-//    set_mute(0);
+-      return 0;
+-}
+-
+-int VDeviceV4L::v4l1_get_norm(int norm)
+-{
+-      switch(norm)
+-      {
+-              case NTSC:         return VIDEO_MODE_NTSC;         break;
+-              case PAL:          return VIDEO_MODE_PAL;          break;
+-              case SECAM:        return VIDEO_MODE_SECAM;        break;
+-      }
+-      return 0;
+-}
+-
+-int VDeviceV4L::set_picture(PictureConfig *picture)
+-{
+-      v4l1_set_picture(picture);
+-}
+-
+-
+-int VDeviceV4L::v4l1_set_picture(PictureConfig *picture)
+-{
+-      int brightness = (int)((float)picture->brightness / 100 * 32767 + 32768);
+-      int hue = (int)((float)picture->hue / 100 * 32767 + 32768);
+-      int color = (int)((float)picture->color / 100 * 32767 + 32768);
+-      int contrast = (int)((float)picture->contrast / 100 * 32767 + 32768);
+-      int whiteness = (int)((float)picture->whiteness / 100 * 32767 + 32768);
+-
+-      if(ioctl(input_fd, VIDIOCGPICT, &picture_params) < 0)
+-              perror("VDeviceV4L::v4l1_set_picture VIDIOCGPICT");
+-      picture_params.brightness = brightness;
+-      picture_params.hue = hue;
+-      picture_params.colour = color;
+-      picture_params.contrast = contrast;
+-      picture_params.whiteness = whiteness;
+-// Bogus.  Values are only set in the capture routine.
+-      picture_params.depth = 3;
+-      picture_params.palette = device_colormodel;
+-      if(ioctl(input_fd, VIDIOCSPICT, &picture_params) < 0)
+-              perror("VDeviceV4L::v4l1_set_picture VIDIOCSPICT");
+-      if(ioctl(input_fd, VIDIOCGPICT, &picture_params) < 0)
+-              perror("VDeviceV4L::v4l1_set_picture VIDIOCGPICT");
+-      return 0;
+-}
+-
+-
+-int VDeviceV4L::capture_frame(int capture_frame_number)
+-{
+-      struct video_mmap params;
+-      params.frame = capture_frame_number;
+-      params.width = device->in_config->w;
+-      params.height = device->in_config->h;
+-// Required to actually set the palette.
+-      params.format = device_colormodel;
+-// Tells the driver the buffer is available for writing
+-      if(ioctl(input_fd, VIDIOCMCAPTURE, &params) < 0)
+-              perror("VDeviceV4L::capture_frame VIDIOCMCAPTURE");
+-      return 0;
+-}
+-
+-int VDeviceV4L::wait_v4l_frame()
+-{
+-//printf("VDeviceV4L::wait_v4l_frame 1 %d\n", capture_frame_number);
+-      if(ioctl(input_fd, VIDIOCSYNC, &capture_frame_number))
+-              perror("VDeviceV4L::wait_v4l_frame VIDIOCSYNC");
+-//printf("VDeviceV4L::wait_v4l_frame 2 %d\n", capture_frame_number);
+-      return 0;
+-}
+-
+-int VDeviceV4L::read_v4l_frame(VFrame *frame)
+-{
+-      frame_to_vframe(frame, (unsigned char*)capture_buffer + capture_params.offsets[capture_frame_number]);
+-      return 0;
+-}
+-
+-#ifndef MIN
+-#define MIN(x, y) ((x) < (y) ? (x) : (y))
+-#endif
+-
+-int VDeviceV4L::frame_to_vframe(VFrame *frame, unsigned char *input)
+-{
+-      int inwidth, inheight;
+-      int width, height;
+-
+-      inwidth = window_params.width;
+-      inheight = window_params.height;
+-
+-      width = MIN(inwidth, frame->get_w());
+-      height = MIN(inheight, frame->get_h());
+-//printf("VDeviceV4L::frame_to_vframe %d %d\n", colormodel, frame->get_color_model());
+-
+-      if(frame->get_color_model() == colormodel)
+-      {
+-              switch(frame->get_color_model())
+-              {
+-                      case BC_RGB888:
+-                      {
+-                              unsigned char *row_in;
+-                              unsigned char *row_out_start, *row_out_end;
+-                              int bytes_per_inrow = inwidth * 3;
+-                              int bytes_per_outrow = frame->get_bytes_per_line();
+-                              unsigned char **rows_out = frame->get_rows();
+-
+-                              for(int i = 0; i < frame->get_h(); i++)
+-                              {
+-                                      row_in = input + bytes_per_inrow * i;
+-                                      row_out_start = rows_out[i];
+-                                      row_out_end = row_out_start + 
+-                                              MIN(bytes_per_outrow, bytes_per_inrow);
+-
+-                                      while(row_out_start < row_out_end)
+-                                      {
+-                                              *row_out_start++ = row_in[2];
+-                                              *row_out_start++ = row_in[1];
+-                                              *row_out_start++ = row_in[0];
+-                                              row_in += 3;
+-                                      }
+-                              }
+-                              break;
+-                      }
+-
+-                      case BC_YUV420P:
+-                      case BC_YUV411P:
+-                              memcpy(frame->get_y(), input, width * height);
+-                              memcpy(frame->get_u(), input + width * height, width * height / 4);
+-                              memcpy(frame->get_v(), input + width * height + width * height / 4, width * height / 4);
+-                              break;
+-
+-                      case BC_YUV422P:
+-                              memcpy(frame->get_y(), input, width * height);
+-                              memcpy(frame->get_u(), input + width * height, width * height / 2);
+-                              memcpy(frame->get_v(), input + width * height + width * height / 2, width * height / 2);
+-                              break;
+-
+-                      case BC_YUV422:
+-                              memcpy(frame->get_data(), 
+-                                      input, 
+-                                      VFrame::calculate_data_size(width, 
+-                                              height, 
+-                                              -1, 
+-                                              frame->get_color_model()));
+-                              break;
+-              }
+-      }
+-      else
+-      {
+-              VFrame *in_frame = new VFrame(input, 
+-                      inwidth, 
+-                      inheight, 
+-                      colormodel, 
+-                      -1);
+-              cmodel_transfer(frame->get_rows(), 
+-                      in_frame->get_rows(),
+-                      frame->get_y(),
+-                      frame->get_u(),
+-                      frame->get_v(),
+-                      in_frame->get_y(),
+-                      in_frame->get_u(),
+-                      in_frame->get_v(),
+-                      0, 
+-                      0, 
+-                      inwidth, 
+-                      inheight,
+-                      0, 
+-                      0, 
+-                      frame->get_w(), 
+-                      frame->get_h(),
+-                      colormodel, 
+-                      frame->get_color_model(),
+-                      0,
+-                      inwidth,
+-                      inheight);
+-      }
+-      return 0;
+-}
+-
+-
+-
+-int VDeviceV4L::next_frame(int previous_frame)
+-{
+-      int result = previous_frame + 1;
+-
+-      if(result >= MIN(capture_params.frames, device->in_config->capture_length)) result = 0;
+-      return result;
+-}
+-
+-int VDeviceV4L::read_buffer(VFrame *frame)
+-{
+-      int result = 0;
+-
+-SET_TRACE
+-      if(shared_memory)
+-      {
+-// Read the current frame
+-              if(!got_first_frame) v4l1_start_capture();
+-              wait_v4l_frame();
+-              read_v4l_frame(frame);
+-// Free this frame up for capturing
+-              capture_frame(capture_frame_number);
+-// Advance the frame to capture.
+-              capture_frame_number = next_frame(capture_frame_number);
+-      }
+-      else
+-      {
+-              read(input_fd, capture_buffer, capture_params.size);
+-      }
+-      got_first_frame = 1;
+-SET_TRACE
+-
+-      return 0;
+-}
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+diff -Nru cinelerra.orig//cinelerra/vdevicev4l.h cinelerra/cinelerra/vdevicev4l.h
+--- cinelerra.orig//cinelerra/vdevicev4l.h     2010-11-24 18:18:03.000000000 -0500
++++ cinelerra/cinelerra/vdevicev4l.h   1969-12-31 19:00:00.000000000 -0500
+@@ -1,83 +0,0 @@
+-
+-/*
+- * CINELERRA
+- * Copyright (C) 2008 Adam Williams <broadcast at earthling dot net>
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 2 of the License, or
+- * (at your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+- * GNU General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+- * 
+- */
+-
+-#ifndef VDEVICEV4L_H
+-#define VDEVICEV4L_H
+-
+-#include "vdevicebase.h"
+-#include <linux/videodev.h>
+-#include "videodevice.inc"
+-
+-class VDeviceV4L : public VDeviceBase
+-{
+-public:
+-      VDeviceV4L(VideoDevice *device);
+-      ~VDeviceV4L();
+-
+-      int initialize();
+-      int open_input();
+-      int close_all();
+-      int read_buffer(VFrame *frame);
+-      int get_best_colormodel(Asset *asset);
+-      int set_channel(Channel *channel);
+-      int set_picture(PictureConfig *picture);
+-
+-private:
+-      int set_cloexec_flag(int desc, int value);
+-      int set_mute(int muted);
+-      int v4l1_get_inputs();
+-      int v4l1_set_mute(int muted);
+-      unsigned long translate_colormodel(int colormodel);
+-      int v4l1_set_channel(Channel *channel);
+-      int v4l1_get_norm(int norm);
+-      int v4l1_set_picture(PictureConfig *picture);
+-      void v4l1_start_capture();
+-      int capture_frame(int capture_frame_number);
+-      int wait_v4l_frame();
+-      int read_v4l_frame(VFrame *frame);
+-      int frame_to_vframe(VFrame *frame, unsigned char *input);
+-      int next_frame(int previous_frame);
+-      int close_v4l();
+-      int unmap_v4l_shmem();
+-      int v4l_init();
+-
+-      int input_fd, output_fd;
+-// FourCC Colormodel for device
+-      unsigned long device_colormodel;
+-// BC colormodel for device
+-      int colormodel;
+-
+-// Video4Linux
+-      struct video_capability cap1;
+-      struct video_window window_params;
+-      struct video_picture picture_params;
+-      struct video_mbuf capture_params;  // Capture for Video4Linux
+-
+-// Common
+-      char *capture_buffer;      // sequentual capture buffers for v4l1 or read buffer for v4l2
+-      int capture_frame_number;    // number of frame to capture into
+-      int read_frame_number;       // number of the captured frame to read
+-      int shared_memory;   // Capturing directly to memory
+-      int initialization_complete;
+-      int got_first_frame;
+-};
+-
+-#endif
+diff -Nru cinelerra.orig//cinelerra/vdevicev4l.inc cinelerra/cinelerra/vdevicev4l.inc
+--- cinelerra.orig//cinelerra/vdevicev4l.inc   2010-11-24 18:18:03.000000000 -0500
++++ cinelerra/cinelerra/vdevicev4l.inc 1969-12-31 19:00:00.000000000 -0500
+@@ -1,27 +0,0 @@
+-
+-/*
+- * CINELERRA
+- * Copyright (C) 2008 Adam Williams <broadcast at earthling dot net>
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 2 of the License, or
+- * (at your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+- * GNU General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+- * 
+- */
+-
+-#ifndef VDEVICEV4L_INC
+-#define VDEVICEV4L_INC
+-
+-class VDeviceV4L;
+-
+-#endif
+diff -Nru cinelerra.orig//cinelerra/videodevice.C cinelerra/cinelerra/videodevice.C
+--- cinelerra.orig//cinelerra/videodevice.C    2010-11-24 18:18:03.000000000 -0500
++++ cinelerra/cinelerra/videodevice.C  2011-02-17 13:41:53.239880001 -0500
+@@ -39,9 +39,9 @@
+ #ifdef HAVE_FIREWIRE
+ #include "vdevice1394.h"
+ #endif
+-#include "vdevicebuz.h"
++//#include "vdevicebuz.h"
+ #include "vdevicedvb.h"
+-#include "vdevicev4l.h"
++//#include "vdevicev4l.h"
+ #include "vdevicev4l2.h"
+ #include "vdevicev4l2jpeg.h"
+ #include "vdevicex11.h"
+@@ -203,7 +203,6 @@
+                       result = input_base->open_input();
+                       break;
+-
+ #ifdef HAVE_VIDEO4LINUX2
+               case VIDEO4LINUX2:
+                       new_device_base();
+@@ -250,8 +249,8 @@
+ {
+       switch(in_config->driver)
+       {
+-              case VIDEO4LINUX:
+-                      return input_base = new VDeviceV4L(this);
++              //case VIDEO4LINUX:
++              //      return input_base = new VDeviceV4L(this);
+ #ifdef HAVE_VIDEO4LINUX2
+               case VIDEO4LINUX2:
+@@ -264,8 +263,8 @@
+               case SCREENCAPTURE:
+                       return input_base = new VDeviceX11(this, 0);
+-              case CAPTURE_BUZ:
+-                      return input_base = new VDeviceBUZ(this);
++              //case CAPTURE_BUZ:
++              //      return input_base = new VDeviceBUZ(this);
+ #ifdef HAVE_FIREWIRE
+               case CAPTURE_FIREWIRE:
+@@ -662,9 +661,9 @@
+ //printf("VideoDevice::open_output 1 %d\n", out_config->driver);
+       switch(out_config->driver)
+       {
+-              case PLAYBACK_BUZ:
+-                      output_base = new VDeviceBUZ(this);
+-                      break;
++              //case PLAYBACK_BUZ:
++              //      output_base = new VDeviceBUZ(this);
++              //      break;
+               case PLAYBACK_X11:
+               case PLAYBACK_X11_XV:
+               case PLAYBACK_X11_GL:
+diff -Nru cinelerra.orig//cinelerra/videodevice.h cinelerra/cinelerra/videodevice.h
+--- cinelerra.orig//cinelerra/videodevice.h    2010-11-24 18:18:03.000000000 -0500
++++ cinelerra/cinelerra/videodevice.h  2011-02-17 13:31:30.167880002 -0500
+@@ -40,9 +40,9 @@
+ #include "thread.h"
+ #include "picture.inc"
+ #include "vdevicebase.inc"
+-#include "vdevicebuz.inc"
++//#include "vdevicebuz.inc"
+ #include "vdevicelml.inc"
+-#include "vdevicev4l.inc"
++//#include "vdevicev4l.inc"
+ #include "vdevicex11.inc"
+ #include "videoconfig.inc"
+ #include "videowindow.inc"
+--- cinelerra-cv/cinelerra/Makefile.am~        2011-04-06 20:33:34.474397085 +0200
++++ cinelerra-cv/cinelerra/Makefile.am 2011-04-06 20:36:44.323074826 +0200
+@@ -628,7 +628,6 @@
+                vautomation.h \
+                vdevice1394.h \
+                vdevicebase.h \
+-               vdevicebuz.h \
+                vdevicedvb.h \
+                vdevicelml.h \
+                vdeviceprefs.h \
+--- cinelerra-cv/cinelerra/Makefile.am~        2011-04-06 20:37:25.104939175 +0200
++++ cinelerra-cv/cinelerra/Makefile.am 2011-04-06 20:40:03.768860034 +0200
+@@ -631,7 +631,6 @@
+                vdevicedvb.h \
+                vdevicelml.h \
+                vdeviceprefs.h \
+-               vdevicev4l.h \
+                vdevicev4l2.h \
+                vdevicev4l2jpeg.h \
+                vdevicex11.h \
This page took 0.150778 seconds and 4 git commands to generate.