4 * Copyright (C) 2008 Adam Williams <broadcast at earthling dot net>
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
24 #include "../hvirtual_config.h"
27 #include "chantables.h"
28 #include "condition.h"
29 #include "devicev4l2input.h"
30 #include "devicempeginput.h"
32 #include "preferences.h"
33 #include "quicktime.h"
34 #include "recordconfig.h"
44 #ifdef HAVE_VIDEO4LINUX2
45 #include <linux/videodev2.h>
47 #include <sys/ioctl.h>
51 DeviceV4L2Input::DeviceV4L2Input(const char *name, int no)
52 : DeviceV4L2Base(), DeviceMPEGInput(name, no)
55 status_v4l2 = new DeviceV4L2Status(this);
59 DeviceMPEGInput *DeviceV4L2Input::
60 NewV4L2Input(const char *name, int no)
62 return (DeviceMPEGInput *) new DeviceV4L2Input(name, no);
65 DeviceV4L2Input::~DeviceV4L2Input()
70 DeviceMPEGInput* DeviceV4L2Input::get_mpeg_input(VideoDevice *device)
72 DeviceMPEGInput *mpeg_device = get_mpeg_video(device, NewV4L2Input, "video", 0);
75 device->channel->use_norm = 1;
76 device->channel->use_input = 1;
77 mpeg_device->set_device_number(0);
78 Channel *channel = device->new_input_source((char*)"video0");
79 channel->device_index = 0;
86 DeviceMPEGInput* DeviceV4L2Input::get_mpeg_input(AudioDevice *device)
88 DeviceMPEGInput *mpeg_device = get_mpeg_audio(device, NewV4L2Input, "video", 0);
92 int DeviceV4L2Input::mpeg_fd()
97 int DeviceV4L2Input::open_dev(int color_model)
99 return DeviceV4L2Base::open_dev(color_model);
102 void DeviceV4L2Input::close_dev()
104 DeviceV4L2Base::close_dev();
107 int DeviceV4L2Input::status_dev()
109 return DeviceV4L2Base::status_dev();
112 int DeviceV4L2Input::start_dev()
117 int DeviceV4L2Input::stop_dev()
122 VideoDevice *DeviceV4L2Input::v4l2_device()
128 DeviceV4L2Status::DeviceV4L2Status(DeviceV4L2Input *in_v4l2)
131 this->in_v4l2 = in_v4l2;
134 DeviceV4L2Status::~DeviceV4L2Status()
141 void DeviceV4L2Status::run()
144 Thread::enable_cancel();
147 Thread::disable_cancel();
148 in_v4l2->status_dev();
149 Thread::enable_cancel();