$NetBSD$ --- cinelerra/vdevicev4l.C.orig 2010-01-29 08:22:11.000000000 +0000 +++ cinelerra/vdevicev4l.C @@ -25,6 +25,7 @@ #undef _LARGEFILE_SOURCE #undef _LARGEFILE64_SOURCE +#include "config.h" #include "assets.h" #include "bcsignals.h" @@ -108,6 +109,7 @@ int VDeviceV4L::close_v4l() int VDeviceV4L::unmap_v4l_shmem() { +#if defined(HAVE_LINUX_VIDEODEV_H) if(capture_buffer) { if(shared_memory) @@ -116,9 +118,11 @@ int VDeviceV4L::unmap_v4l_shmem() delete capture_buffer; capture_buffer = 0; } +#endif return 0; } +#if defined(HAVE_LINUX_VIDEODEV_H) int VDeviceV4L::v4l_init() { int i; @@ -179,11 +183,20 @@ int VDeviceV4L::v4l_init() got_first_frame = 0; return 0; } +#else +int VDeviceV4L::v4l_init() { + fprintf(stderr, "VDeviceV4L::v4l_init (Warning: unavailble feature on this platform)\n"); + input_fd = 0; + return 0; +} +#endif void VDeviceV4L::v4l1_start_capture() { +#if defined(HAVE_LINUX_VIDEODEV_H) for(int i = 0; i < MIN(capture_params.frames, device->in_config->capture_length); i++) capture_frame(i); +#endif } @@ -195,6 +208,7 @@ void VDeviceV4L::v4l1_start_capture() int VDeviceV4L::v4l1_get_inputs() { +#if defined(HAVE_LINUX_VIDEODEV_H) struct video_channel channel_struct; int i = 0, done = 0; char *new_source; @@ -215,6 +229,7 @@ int VDeviceV4L::v4l1_get_inputs() } i++; } +#endif return 0; } @@ -227,6 +242,7 @@ int VDeviceV4L::set_mute(int muted) int VDeviceV4L::v4l1_set_mute(int muted) { +#if defined(HAVE_LINUX_VIDEODEV_H) struct video_audio audio; if(ioctl(input_fd, VIDIOCGAUDIO, &audio)) @@ -244,6 +260,7 @@ int VDeviceV4L::v4l1_set_mute(int muted) if(ioctl(input_fd, VIDIOCSAUDIO, &audio) < 0) perror("VDeviceV4L::ioctl VIDIOCSAUDIO"); return 0; +#endif } @@ -288,6 +305,7 @@ int VDeviceV4L::get_best_colormodel(Asse return result; } +#if defined(HAVE_LINUX_VIDEODEV_H) unsigned long VDeviceV4L::translate_colormodel(int colormodel) { unsigned long result = 0; @@ -303,12 +321,18 @@ unsigned long VDeviceV4L::translate_colo //printf("VDeviceV4L::translate_colormodel %d\n", result); return result; } +#else +unsigned long VDeviceV4L::translate_colormodel(int) { + return 0; +} +#endif int VDeviceV4L::set_channel(Channel *channel) { return v4l1_set_channel(channel); } +#if defined(HAVE_LINUX_VIDEODEV_H) int VDeviceV4L::v4l1_set_channel(Channel *channel) { struct video_channel channel_struct; @@ -352,7 +376,13 @@ int VDeviceV4L::v4l1_set_channel(Channel // set_mute(0); return 0; } +#else +int VDeviceV4L::v4l1_set_channel(Channel*) { + return 0; +} +#endif +#if defined(HAVE_LINUX_VIDEODEV_H) int VDeviceV4L::v4l1_get_norm(int norm) { switch(norm) @@ -363,13 +393,18 @@ int VDeviceV4L::v4l1_get_norm(int norm) } return 0; } +#else +int VDeviceV4L::v4l1_get_norm(int) { + return 0; +} +#endif int VDeviceV4L::set_picture(PictureConfig *picture) { v4l1_set_picture(picture); } - +#if defined(HAVE_LINUX_VIDEODEV_H) int VDeviceV4L::v4l1_set_picture(PictureConfig *picture) { int brightness = (int)((float)picture->brightness / 100 * 32767 + 32768); @@ -394,8 +429,13 @@ int VDeviceV4L::v4l1_set_picture(Picture perror("VDeviceV4L::v4l1_set_picture VIDIOCGPICT"); return 0; } +#else +int VDeviceV4L::v4l1_set_picture(PictureConfig*) { + return 0; +} +#endif - +#if defined(HAVE_LINUX_VIDEODEV_H) int VDeviceV4L::capture_frame(int capture_frame_number) { struct video_mmap params; @@ -409,7 +449,13 @@ int VDeviceV4L::capture_frame(int captur perror("VDeviceV4L::capture_frame VIDIOCMCAPTURE"); return 0; } +#else +int VDeviceV4L::capture_frame(int) { + return 0; +} +#endif +#if defined(HAVE_LINUX_VIDEODEV_H) int VDeviceV4L::wait_v4l_frame() { //printf("VDeviceV4L::wait_v4l_frame 1 %d\n", capture_frame_number); @@ -418,17 +464,29 @@ int VDeviceV4L::wait_v4l_frame() //printf("VDeviceV4L::wait_v4l_frame 2 %d\n", capture_frame_number); return 0; } +#else +int VDeviceV4L::wait_v4l_frame() { + return 0; +} +#endif +#if defined(HAVE_LINUX_VIDEODEV_H) int VDeviceV4L::read_v4l_frame(VFrame *frame) { frame_to_vframe(frame, (unsigned char*)capture_buffer + capture_params.offsets[capture_frame_number]); return 0; } +#else +int VDeviceV4L::read_v4l_frame(VFrame *) { + return 0; +} +#endif #ifndef MIN #define MIN(x, y) ((x) < (y) ? (x) : (y)) #endif +#if defined(HAVE_LINUX_VIDEODEV_H) int VDeviceV4L::frame_to_vframe(VFrame *frame, unsigned char *input) { int inwidth, inheight; @@ -525,9 +583,13 @@ int VDeviceV4L::frame_to_vframe(VFrame * } return 0; } +#else +int VDeviceV4L::frame_to_vframe(VFrame *, unsigned char *) { + return 0; +} +#endif - - +#if defined(HAVE_LINUX_VIDEODEV_H) int VDeviceV4L::next_frame(int previous_frame) { int result = previous_frame + 1; @@ -535,7 +597,13 @@ int VDeviceV4L::next_frame(int previous_ if(result >= MIN(capture_params.frames, device->in_config->capture_length)) result = 0; return result; } +#else +int VDeviceV4L::next_frame(int) { + return 0; +} +#endif +#if defined(HAVE_LINUX_VIDEODEV_H) int VDeviceV4L::read_buffer(VFrame *frame) { int result = 0; @@ -561,7 +629,11 @@ SET_TRACE return 0; } - +#else +int VDeviceV4L::read_buffer(VFrame *) { + return 0; +} +#endif