bsd lang segv fix, enable bsd lv2, lv2 gui enable fix, proxy/ffmpeg toggle resize...
[goodguy/history.git] / cinelerra-5.1 / cinelerra / videodevice.C
index 8f9f6bbdc9b277d9e00a3e97bfa2dbf17f365579..78214adacacf00fc6b8cf1aedd793861bfd3fe41 100644 (file)
@@ -29,7 +29,9 @@
 #include "edl.h"
 #include "edlsession.h"
 #include "file.inc"
+#ifdef HAVE_DV
 #include "libdv.h"
+#endif
 #include "libmjpeg.h"
 #include "mainmenu.h"
 #include "mutex.h"
@@ -46,9 +48,7 @@
 #ifdef HAVE_FIREWIRE
 #include "vdevice1394.h"
 #endif
-#include "vdevicebuz.h"
 #include "vdevicedvb.h"
-#include "vdevicev4l.h"
 #include "vdevicev4l2.h"
 #include "vdevicev4l2jpeg.h"
 #include "vdevicev4l2mpeg.h"
@@ -192,6 +192,8 @@ int VideoDevice::initialize()
        single_frame = 0;
        channel_changed = 0;
        picture_changed = 0;
+       odd_field_first = 0;
+       do_cursor = 0;
        return 0;
 }
 
@@ -211,12 +213,6 @@ int VideoDevice::open_input(VideoInConfig *config,
        if( input_base ) return 1; // device already open
 
        switch(in_config->driver) {
-               case VIDEO4LINUX:
-                       keepalive = new KeepaliveThread(this);
-                       keepalive->start_keepalive();
-                       break;
-
-
 #ifdef HAVE_VIDEO4LINUX2
 
                case VIDEO4LINUX2:
@@ -232,12 +228,6 @@ int VideoDevice::open_input(VideoInConfig *config,
                        this->input_x = input_x;
                        this->input_y = input_y;
                        break;
-               case CAPTURE_LML:
-               case CAPTURE_BUZ:
-//printf("VideoDevice 1\n");
-                       keepalive = new KeepaliveThread(this);
-                       keepalive->start_keepalive();
-                       break;
 #ifdef HAVE_FIREWIRE
                case CAPTURE_FIREWIRE:
                case CAPTURE_IEC61883:
@@ -264,11 +254,6 @@ int VideoDevice::open_input(VideoInConfig *config,
 VDeviceBase* VideoDevice::new_device_base()
 {
        switch(in_config->driver) {
-#ifdef HAVE_VIDEO4LINUX
-       case VIDEO4LINUX:
-               return input_base = new VDeviceV4L(this);
-#endif
-
 #ifdef HAVE_VIDEO4LINUX2
        case VIDEO4LINUX2:
        case CAPTURE_JPEG_WEBCAM:
@@ -283,13 +268,6 @@ VDeviceBase* VideoDevice::new_device_base()
        case SCREENCAPTURE:
                return input_base = new VDeviceX11(this, 0);
 
-#ifdef HAVE_VIDEO4LINUX
-       case CAPTURE_BUZ:
-               return input_base = new VDeviceBUZ(this);
-       case CAPTURE_LML:
-               return input_base = new VDeviceLML(this);
-#endif
-
 #ifdef HAVE_FIREWIRE
        case CAPTURE_FIREWIRE:
        case CAPTURE_IEC61883:
@@ -309,9 +287,6 @@ static const char* get_channeldb_path(VideoInConfig *vconfig_in)
        char *path = 0;
        switch(vconfig_in->driver)
        {
-               case VIDEO4LINUX:
-                       path = (char*)"channels_v4l";
-                       break;
                case VIDEO4LINUX2:
                case CAPTURE_JPEG_WEBCAM:
                case CAPTURE_YUYV_WEBCAM:
@@ -323,9 +298,6 @@ static const char* get_channeldb_path(VideoInConfig *vconfig_in)
                case VIDEO4LINUX2MPEG:
                        path = (char*)"channels_v4l2mpeg";
                        break;
-               case CAPTURE_BUZ:
-                       path = (char*)"channels_buz";
-                       break;
                case CAPTURE_DVB:
                        path = (char*)"channels_dvb";
                        break;
@@ -362,10 +334,8 @@ DeviceMPEGInput *VideoDevice::mpeg_device()
 int VideoDevice::is_compressed(int driver, int use_file, int use_fixed)
 {
 // FileMOV needs to have write_frames called so the start codes get scanned.
-       return ((driver == CAPTURE_BUZ && use_fixed) ||
-               (driver == VIDEO4LINUX2JPEG && use_fixed) ||
+       return ((driver == VIDEO4LINUX2JPEG && use_fixed) ||
                (driver == CAPTURE_JPEG_WEBCAM && use_fixed) ||
-               driver == CAPTURE_LML ||
                driver == CAPTURE_FIREWIRE ||
                driver == CAPTURE_IEC61883);
 }
@@ -381,13 +351,12 @@ void VideoDevice::fix_asset(Asset *asset, int driver)
 // Fix asset using legacy routine
        const char *vcodec = 0;
        switch(driver) {
+#ifdef HAVE_DV
        case CAPTURE_IEC61883:
        case CAPTURE_FIREWIRE:
                vcodec = CODEC_TAG_DVSD;
                break;
-
-       case CAPTURE_BUZ:
-       case CAPTURE_LML:
+#endif
        case VIDEO4LINUX2JPEG:
                vcodec = CODEC_TAG_MJPEG;
                break;
@@ -417,16 +386,12 @@ const char* VideoDevice::drivertostr(int driver)
        case PLAYBACK_X11:     return PLAYBACK_X11_TITLE;
        case PLAYBACK_X11_XV:  return PLAYBACK_X11_XV_TITLE;
        case PLAYBACK_X11_GL:  return PLAYBACK_X11_GL_TITLE;
-       case PLAYBACK_BUZ:     return PLAYBACK_BUZ_TITLE;
-       case VIDEO4LINUX:      return VIDEO4LINUX_TITLE;
        case VIDEO4LINUX2:     return VIDEO4LINUX2_TITLE;
        case VIDEO4LINUX2JPEG: return VIDEO4LINUX2JPEG_TITLE;
        case VIDEO4LINUX2MPEG: return VIDEO4LINUX2MPEG_TITLE;
        case CAPTURE_JPEG_WEBCAM: return CAPTURE_JPEG_WEBCAM_TITLE;
        case CAPTURE_YUYV_WEBCAM: return CAPTURE_YUYV_WEBCAM_TITLE;
        case SCREENCAPTURE:    return SCREENCAPTURE_TITLE;
-       case CAPTURE_BUZ:      return CAPTURE_BUZ_TITLE;
-       case CAPTURE_LML:      return CAPTURE_LML_TITLE;
        case CAPTURE_DVB:      return CAPTURE_DVB_TITLE;
 #ifdef HAVE_FIREWIRE
        case CAPTURE_FIREWIRE: return CAPTURE_FIREWIRE_TITLE;
@@ -532,6 +497,21 @@ int VideoDevice::set_field_order(int odd_field_first)
        return 0;
 }
 
+void VideoDevice::set_do_cursor(int do_cursor, int do_big_cursor)
+{
+       int cursor_scale = 0;
+       if(do_cursor)
+       {
+               cursor_scale = 1;
+               if(do_big_cursor)
+               {
+                       cursor_scale = 2;
+               }
+       }
+
+       this->do_cursor = cursor_scale;
+}
+
 int VideoDevice::set_channel(Channel *channel)
 {
        int result = 0;
@@ -586,8 +566,7 @@ int VideoDevice::update_translation()
        if(frame_resized) {
                input_x = new_input_x;
                input_y = new_input_y;
-               if( in_config->driver == VIDEO4LINUX ||
-                       in_config->driver == VIDEO4LINUX2 ) {
+               if( in_config->driver == VIDEO4LINUX2 ) {
                        if(input_z != new_input_z) {
                                input_z = new_input_z;
                                //z_changed = 1;
@@ -691,14 +670,6 @@ int VideoDevice::open_output(VideoOutConfig *config, float rate,
 
 //printf("VideoDevice::open_output 1 %d\n", out_config->driver);
        switch(out_config->driver) {
-#ifdef HAVE_VIDEO4LINUX
-       case PLAYBACK_BUZ:
-               output_base = new VDeviceBUZ(this);
-               break;
-       case PLAYBACK_LML:
-               output_base = new VDeviceLML(this);
-               break;
-#endif
        case PLAYBACK_X11:
        case PLAYBACK_X11_XV:
        case PLAYBACK_X11_GL:
@@ -746,10 +717,10 @@ void VideoDevice::goose_input()
        if(input_base) input_base->goose_input();
 }
 
-void VideoDevice::new_output_buffer(VFrame **output, int colormodel)
+void VideoDevice::new_output_buffer(VFrame **output, int colormodel, EDL *edl)
 {
        if(!output_base) return;
-       output_base->new_output_buffer(output, colormodel);
+       output_base->new_output_buffer(output, colormodel, edl);
 }
 
 
@@ -779,7 +750,7 @@ int VideoDevice::set_cloexec_flag(int desc, int value)
 {
        int oldflags = fcntl(desc, F_GETFD, 0);
        if( oldflags < 0 ) return oldflags;
-       if( value != 0 ) 
+       if( value != 0 )
                oldflags |= FD_CLOEXEC;
        else
                oldflags &= ~FD_CLOEXEC;