您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ video_devdata函数代码示例

51自学网 2021-06-03 09:39:42
  C++
这篇教程C++ video_devdata函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中video_devdata函数的典型用法代码示例。如果您正苦于以下问题:C++ video_devdata函数的具体用法?C++ video_devdata怎么用?C++ video_devdata使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了video_devdata函数的29个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: si470x_fops_open

/* * si470x_fops_open - file open */static int si470x_fops_open(struct inode *inode, struct file *file){	struct si470x_device *radio = video_get_drvdata(video_devdata(file));	int retval;	radio->users++;	retval = usb_autopm_get_interface(radio->intf);	if (retval < 0) {		radio->users--;		return -EIO;	}	if (radio->users == 1) {		retval = si470x_start(radio);		if (retval < 0)			usb_autopm_put_interface(radio->intf);		return retval;	}	return 0;}
开发者ID:maraz,项目名称:linux-2.6,代码行数:25,


示例2: vb2_fop_write

ssize_t vb2_fop_write(struct file *file, const char __user *buf,		size_t count, loff_t *ppos){	struct video_device *vdev = video_devdata(file);	struct mutex *lock = vdev->queue->lock ? vdev->queue->lock : vdev->lock;	int err = -EBUSY;	if (!(vdev->queue->io_modes & VB2_WRITE))		return -EINVAL;	if (lock && mutex_lock_interruptible(lock))		return -ERESTARTSYS;	if (vb2_queue_is_busy(vdev, file))		goto exit;	err = vb2_write(vdev->queue, buf, count, ppos,		       file->f_flags & O_NONBLOCK);	if (vdev->queue->fileio)		vdev->queue->owner = file->private_data;exit:	if (lock)		mutex_unlock(lock);	return err;}
开发者ID:a2hojsjsjs,项目名称:linux,代码行数:22,


示例3: vidioc_g_tuner

static int vidioc_g_tuner(struct file *file, void *priv,					struct v4l2_tuner *v){	struct video_device *dev = video_devdata(file);	struct zol_device *zol = dev->priv;	if (v->index > 0)		return -EINVAL;	strcpy(v->name, "FM");	v->type = V4L2_TUNER_RADIO;	v->rangelow = (88*16000);	v->rangehigh = (108*16000);	v->rxsubchans = V4L2_TUNER_SUB_MONO|V4L2_TUNER_SUB_STEREO;	v->capability = V4L2_TUNER_CAP_LOW;	if (zol_is_stereo(zol))		v->audmode = V4L2_TUNER_MODE_STEREO;	else		v->audmode = V4L2_TUNER_MODE_MONO;	v->signal = 0xFFFF*zol_getsigstr(zol);	return 0;}
开发者ID:3sOx,项目名称:asuswrt-merlin,代码行数:22,


示例4: s3c2410camif_vidioc_s_ctrl

static int s3c2410camif_vidioc_s_ctrl(struct file *file,                void *priv, struct v4l2_control *c){	struct video_device *dev = video_devdata(file);	s3c2440camif_dev *pcam = video_get_drvdata(dev);		switch (c->id) {		case V4L2_CID_AUTOGAIN:			return pcam->sensor_op->set_auto_gain(c->value);		case V4L2_CID_GAIN:			return pcam->sensor_op->set_gain(c->value);		case V4L2_CID_EXPOSURE_AUTO:			return pcam->sensor_op->set_auto_exposure(c->value);		case V4L2_CID_EXPOSURE:			return pcam->sensor_op->set_exposure(c->value);		case V4L2_CID_AUTO_WHITE_BALANCE:			return pcam->sensor_op->set_auto_wb(c->value);		default:			return -EINVAL;	}	return 0;}
开发者ID:IngenicC,项目名称:OV9560,代码行数:22,


示例5: video_open

static int video_open(struct file *file){	struct video_device *vdev = video_devdata(file);	struct camss_video *video = video_drvdata(file);	struct v4l2_fh *vfh;	int ret;	mutex_lock(&video->lock);	vfh = kzalloc(sizeof(*vfh), GFP_KERNEL);	if (vfh == NULL) {		ret = -ENOMEM;		goto error_alloc;	}	v4l2_fh_init(vfh, vdev);	v4l2_fh_add(vfh);	file->private_data = vfh;	ret = v4l2_pipeline_pm_use(&vdev->entity, 1);	if (ret < 0) {		dev_err(video->camss->dev, "Failed to power up pipeline: %d/n",			ret);		goto error_pm_use;	}	mutex_unlock(&video->lock);	return 0;error_pm_use:	v4l2_fh_release(file);error_alloc:	mutex_unlock(&video->lock);	return ret;}
开发者ID:ReneNyffenegger,项目名称:linux,代码行数:39,


示例6: vidioc_g_edid

int vidioc_g_edid(struct file *file, void *_fh,			 struct v4l2_edid *edid){	struct vivid_dev *dev = video_drvdata(file);	struct video_device *vdev = video_devdata(file);	struct cec_adapter *adap;	memset(edid->reserved, 0, sizeof(edid->reserved));	if (vdev->vfl_dir == VFL_DIR_RX) {		if (edid->pad >= dev->num_inputs)			return -EINVAL;		if (dev->input_type[edid->pad] != HDMI)			return -EINVAL;		adap = dev->cec_rx_adap;	} else {		unsigned int bus_idx;		if (edid->pad >= dev->num_outputs)			return -EINVAL;		if (dev->output_type[edid->pad] != HDMI)			return -EINVAL;		bus_idx = dev->cec_output2bus_map[edid->pad];		adap = dev->cec_tx_adap[bus_idx];	}	if (edid->start_block == 0 && edid->blocks == 0) {		edid->blocks = dev->edid_blocks;		return 0;	}	if (dev->edid_blocks == 0)		return -ENODATA;	if (edid->start_block >= dev->edid_blocks)		return -EINVAL;	if (edid->blocks > dev->edid_blocks - edid->start_block)		edid->blocks = dev->edid_blocks - edid->start_block;	if (adap)		v4l2_set_edid_phys_addr(dev->edid, dev->edid_blocks * 128, adap->phys_addr);	memcpy(edid->edid, dev->edid + edid->start_block * 128, edid->blocks * 128);	return 0;}
开发者ID:ezequielgarcia,项目名称:linux,代码行数:39,


示例7: zr364xx_release

/* release the camera */static int zr364xx_release(struct inode *inode, struct file *file){	struct video_device *vdev = video_devdata(file);	struct zr364xx_camera *cam;	struct usb_device *udev;	int i, err;	DBG("zr364xx_release");	if (vdev == NULL)		return -ENODEV;	cam = video_get_drvdata(vdev);	udev = cam->udev;	mutex_lock(&cam->lock);	for (i = 0; i < 2; i++) {		err =		    send_control_msg(udev, 1, init[cam->method][i].value,				     0, init[i][cam->method].bytes,				     init[cam->method][i].size);		if (err < 0) {			info("error during release sequence");			mutex_unlock(&cam->lock);			return err;		}	}	file->private_data = NULL;	video_exclusive_release(inode, file);	/* Added some delay here, since opening/closing the camera quickly,	 * like Ekiga does during its startup, can crash the webcam	 */	mdelay(100);	mutex_unlock(&cam->lock);	return 0;}
开发者ID:BackupTheBerlios,项目名称:grasshopper-svn,代码行数:40,


示例8: si470x_vidioc_s_tuner

/* * si470x_vidioc_s_tuner - set tuner attributes */static int si470x_vidioc_s_tuner(struct file *file, void *priv,		struct v4l2_tuner *tuner){	struct si470x_device *radio = video_get_drvdata(video_devdata(file));	int retval;       if (radio->disconnected)	       return -EIO;	if (tuner->index > 0)		return -EINVAL;	if (tuner->audmode == V4L2_TUNER_MODE_MONO)		radio->registers[POWERCFG] |= POWERCFG_MONO;  /* force mono */	else		radio->registers[POWERCFG] &= ~POWERCFG_MONO; /* try stereo */	retval = si470x_set_register(radio, POWERCFG);	if (retval < 0)		printk(KERN_WARNING DRIVER_NAME			": set tuner failed with %d/n", retval);	return retval;}
开发者ID:maraz,项目名称:linux-2.6,代码行数:26,


示例9: si470x_fops_release

/* * si470x_fops_release - file release */static int si470x_fops_release(struct inode *inode, struct file *file){	struct si470x_device *radio = video_get_drvdata(video_devdata(file));	int retval;	if (!radio)		return -ENODEV;	radio->users--;	if (radio->users == 0) {		/* stop rds reception */		cancel_delayed_work_sync(&radio->work);		/* cancel read processes */		wake_up_interruptible(&radio->read_queue);		retval = si470x_stop(radio);		usb_autopm_put_interface(radio->intf);		return retval;	}	return 0;}
开发者ID:Tigrouzen,项目名称:k1099,代码行数:26,


示例10: msm_isp_subdev_do_ioctl

static long msm_isp_subdev_do_ioctl(	struct file *file, unsigned int cmd, void *arg){	struct video_device *vdev = video_devdata(file);	struct v4l2_subdev *sd = vdev_to_v4l2_subdev(vdev);	struct v4l2_fh *vfh = file->private_data;	switch (cmd) {	case VIDIOC_DQEVENT:		if (!(sd->flags & V4L2_SUBDEV_FL_HAS_EVENTS))			return -ENOIOCTLCMD;		return v4l2_event_dequeue(vfh, arg, file->f_flags & O_NONBLOCK);	case VIDIOC_SUBSCRIBE_EVENT:		return v4l2_subdev_call(sd, core, subscribe_event, vfh, arg);	case VIDIOC_UNSUBSCRIBE_EVENT:		return v4l2_subdev_call(sd, core, unsubscribe_event, vfh, arg);	default:		return v4l2_subdev_call(sd, core, ioctl, cmd, arg);	}}
开发者ID:AD5GB,项目名称:kernel_n5_3.10-experimental,代码行数:23,


示例11: si4703_close

static int si4703_close(struct inode *inode, struct file *file){	struct si4703_device *chip = video_get_drvdata(video_devdata(file));	unset_radio_dvfm_constraint();	if (!chip) {		disable_oscc_tout_s0();		return -ENODEV;	}	if (si4703_power_down(chip))		printk(KERN_ERR "Radio did not shutdown properly");	chip->users = 0;	if (chip->removed)		kfree(chip);	/* disable clock */	disable_oscc_tout_s0();	return 0;}
开发者ID:abgoyal,项目名称:OpenX2-kernel-original,代码行数:23,


示例12: cpia2_close

/****************************************************************************** * *  cpia2_close * *****************************************************************************/static int cpia2_close(struct file *file){	struct video_device *dev = video_devdata(file);	struct camera_data *cam = video_get_drvdata(dev);	mutex_lock(&cam->v4l2_lock);	if (video_is_registered(&cam->vdev) && v4l2_fh_is_singular_file(file)) {		cpia2_usb_stream_stop(cam);		/* save camera state for later open */		cpia2_save_camera_state(cam);		cpia2_set_low_power(cam);		cpia2_free_buffers(cam);	}	if (cam->stream_fh == file->private_data) {		cam->stream_fh = NULL;		cam->mmapped = 0;	}	mutex_unlock(&cam->v4l2_lock);	return v4l2_fh_release(file);}
开发者ID:Anjali05,项目名称:linux,代码行数:28,


示例13: uvc_v4l2_release

static intuvc_v4l2_release(struct file *file){	struct video_device *vdev = video_devdata(file);	struct uvc_device *uvc = video_get_drvdata(vdev);	struct uvc_file_handle *handle = to_uvc_file_handle(file->private_data);	struct uvc_video *video = handle->device;	uvc_function_disconnect(uvc);	uvc_video_enable(video, 0);	mutex_lock(&video->queue.mutex);	if (uvc_free_buffers(&video->queue) < 0)		printk(KERN_ERR "uvc_v4l2_release: Unable to free "				"buffers./n");	mutex_unlock(&video->queue.mutex);	file->private_data = NULL;	v4l2_fh_del(&handle->vfh);	v4l2_fh_exit(&handle->vfh);	kfree(handle);	return 0;}
开发者ID:ARMWorks,项目名称:FA_2451_Linux_Kernel,代码行数:23,


示例14: vidioc_querycap

static int vidioc_querycap(struct file *file, void *fh, struct v4l2_capability *cap){	struct video_device *vdev = video_devdata(file);	struct saa7146_dev *dev = ((struct saa7146_fh *)fh)->dev;	strcpy((char *)cap->driver, "saa7146 v4l2");	strlcpy((char *)cap->card, dev->ext->name, sizeof(cap->card));	sprintf((char *)cap->bus_info, "PCI:%s", pci_name(dev->pci));	cap->device_caps =		V4L2_CAP_VIDEO_CAPTURE |		V4L2_CAP_VIDEO_OVERLAY |		V4L2_CAP_READWRITE |		V4L2_CAP_STREAMING;	cap->device_caps |= dev->ext_vv_data->capabilities;	cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;	if (vdev->vfl_type == VFL_TYPE_GRABBER)		cap->device_caps &=			~(V4L2_CAP_VBI_CAPTURE | V4L2_CAP_SLICED_VBI_OUTPUT);	else		cap->device_caps &=			~(V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_VIDEO_OVERLAY | V4L2_CAP_AUDIO);	return 0;}
开发者ID:AdrianHuang,项目名称:linux-3.8.13,代码行数:23,


示例15: videoin_open

static int videoin_open(struct inode *inode, struct file *file){	struct video_device *dev = video_devdata(file);	videoin_priv_t *priv = (videoin_priv_t *)dev->priv;		volatile int  loop;	int ret = 0, buf_num;		DBG_PRINTF("%s/n",__FUNCTION__);			for(buf_num=0; buf_num<=2; buf_num=buf_num+1)	{//Clear packet buffer, Black in YUV422 is Y=0x0, U=V=0x80 		unsigned int* pu32Addr =  videoIn_buf[buf_num].u32VirtAddr;									unsigned int i;		for(i=0; i<LCDWIDTH*LCDHEIGHT*LCDBPP/8;i=i+4)		{			*pu32Addr++=0x80008000; //2 Pixel		}						}	w55fa93_VIN_PAC_BUFFER = videoIn_buf[0].u32PhysAddr;		bIsVideoInEnable = 1;	/* Important !!! to enable VPOST show video buffer */		//Critical section 	spin_lock(&spin_vin_opc);	if(i32OpenCount==0)	{		i32OpenCount = 1;		spin_unlock(&spin_vin_opc);		DrvVideoIn_EnableInt(eDRVVIDEOIN_VINT);				return 0;	}	else	{		spin_unlock(&spin_vin_opc);		return -1;	}}
开发者ID:me-oss,项目名称:me-linux,代码行数:37,


示例16: vivid_fop_release

static int vivid_fop_release(struct file *file){	struct vivid_dev *dev = video_drvdata(file);	struct video_device *vdev = video_devdata(file);	mutex_lock(&dev->mutex);	if (!no_error_inj && v4l2_fh_is_singular_file(file) &&	    !video_is_registered(vdev) && vivid_is_last_user(dev)) {		/*		 * I am the last user of this driver, and a disconnect		 * was forced (since this video_device is unregistered),		 * so re-register all video_device's again.		 */		v4l2_info(&dev->v4l2_dev, "reconnect/n");		set_bit(V4L2_FL_REGISTERED, &dev->vid_cap_dev.flags);		set_bit(V4L2_FL_REGISTERED, &dev->vid_out_dev.flags);		set_bit(V4L2_FL_REGISTERED, &dev->vbi_cap_dev.flags);		set_bit(V4L2_FL_REGISTERED, &dev->vbi_out_dev.flags);		set_bit(V4L2_FL_REGISTERED, &dev->sdr_cap_dev.flags);		set_bit(V4L2_FL_REGISTERED, &dev->radio_rx_dev.flags);		set_bit(V4L2_FL_REGISTERED, &dev->radio_tx_dev.flags);	}	mutex_unlock(&dev->mutex);	if (file->private_data == dev->overlay_cap_owner)		dev->overlay_cap_owner = NULL;	if (file->private_data == dev->radio_rx_rds_owner) {		dev->radio_rx_rds_last_block = 0;		dev->radio_rx_rds_owner = NULL;	}	if (file->private_data == dev->radio_tx_rds_owner) {		dev->radio_tx_rds_last_block = 0;		dev->radio_tx_rds_owner = NULL;	}	if (vdev->queue)		return vb2_fop_release(file);	return v4l2_fh_release(file);}
开发者ID:keeper,项目名称:backports,代码行数:37,


示例17: vidioc_s_ctrl

static int vidioc_s_ctrl(struct file *file, void *priv,				struct v4l2_control *ctrl){	struct si4703_device *chip = video_get_drvdata(video_devdata(file));	switch (ctrl->id) {	case V4L2_CID_AUDIO_MUTE:		if (ctrl->value) {			if (si4703_mute(chip))				printk(KERN_ERR "si4703: no reponse");		} else {			if (si4703_unmute(chip))				printk(KERN_ERR "si4703: no reponse");		}		break;	case V4L2_CID_AUDIO_VOLUME:		si4703_setvol(chip, ctrl->value);		break;	default:		return -EINVAL;	}	return 0;}
开发者ID:abgoyal,项目名称:OpenX2-kernel-original,代码行数:24,


示例18: vb2_ioctl_create_bufs

int vb2_ioctl_create_bufs(struct file *file, void *priv,			  struct v4l2_create_buffers *p){	struct video_device *vdev = video_devdata(file);	int res = vb2_verify_memory_type(vdev->queue, p->memory,			p->format.type);	p->index = vdev->queue->num_buffers;	/*	 * If count == 0, then just check if memory and type are valid.	 * Any -EBUSY result from vb2_verify_memory_type can be mapped to 0.	 */	if (p->count == 0)		return res != -EBUSY ? res : 0;	if (res)		return res;	if (vb2_queue_is_busy(vdev, file))		return -EBUSY;	res = vb2_create_bufs(vdev->queue, p);	if (res == 0)		vdev->queue->owner = file->private_data;	return res;}
开发者ID:513855417,项目名称:linux,代码行数:24,


示例19: uvc_v4l2_open

static intuvc_v4l2_open(struct file *file){	struct video_device *vdev = video_devdata(file);	struct uvc_device *uvc = video_get_drvdata(vdev);	struct uvc_file_handle *handle;	int ret;	handle = kzalloc(sizeof(*handle), GFP_KERNEL);	if (handle == NULL)		return -ENOMEM;	ret = v4l2_fh_init(&handle->vfh, vdev);	if (ret < 0)		goto error;	ret = v4l2_event_init(&handle->vfh);	if (ret < 0)		goto error;	ret = v4l2_event_alloc(&handle->vfh, 8);	if (ret < 0)		goto error;	v4l2_fh_add(&handle->vfh);	handle->device = &uvc->video;	file->private_data = &handle->vfh;	uvc_function_connect(uvc);	return 0;error:	v4l2_fh_exit(&handle->vfh);	return ret;}
开发者ID:1yankeedt,项目名称:D710BST_FL24_Kernel,代码行数:36,


示例20: videoin_close

static int videoin_close(struct inode *inode, struct file *file){	struct video_device *dev = video_devdata(file);	videoin_priv_t *priv = (videoin_priv_t *)dev->priv;	DBG_PRINTF("%s/n",__FUNCTION__);		if((inp32(REG_VPECTL)&(PKEN|VPEEN))==(PKEN|VPEEN))	{//		DrvVideoIn_SetOperationMode(TRUE);			//One shutter mode		while(DrvVideoIn_GetOperationMode()==TRUE);			}	DrvVideoIn_SetPipeEnable(TRUE, eDRVVIDEOIN_BOTH_PIPE_DISABLE);	DrvVideoIn_DisableInt(eDRVVIDEOIN_VINT);	DrvVideoIn_SetPipeEnable(FALSE, eDRVVIDEOIN_BOTH_PIPE_DISABLE);	DrvVideoIn_DisableInt(eDRVVIDEOIN_VINT);	spin_lock(&spin_vin_opc);	if(i32OpenCount==1)		i32OpenCount = 0;	spin_unlock(&spin_vin_opc);#ifndef CONFIG_FSC		bIsVideoInEnable = 0;	outp32(REG_LCM_FSADDR, g_u32FbPhyAddr);#endif}
开发者ID:me-oss,项目名称:me-linux,代码行数:24,


示例21: atomisp_g_fmt_file

static int atomisp_g_fmt_file(struct file *file, void *fh,		struct v4l2_format *f){	struct video_device *vdev = video_devdata(file);	struct atomisp_device *isp = video_get_drvdata(vdev);	struct atomisp_video_pipe *pipe = atomisp_to_video_pipe(vdev);	int ret;	if (f->type != V4L2_BUF_TYPE_VIDEO_OUTPUT) {		v4l2_err(&atomisp_dev,				"unsupported v4l2 buf type/n");		return -EINVAL;	}	memset(f, 0, sizeof(struct v4l2_format));	f->type = V4L2_BUF_TYPE_VIDEO_OUTPUT;	switch (isp->sw_contex.output_mode) {	case OUTPUT_MODE_FILE:		f->fmt.pix.width = pipe->out_fmt->width;		f->fmt.pix.height = pipe->out_fmt->height;		f->fmt.pix.pixelformat = pipe->out_fmt->pixelformat;		f->fmt.pix.bytesperline = pipe->out_fmt->bytesperline;		f->fmt.pix.sizeimage = pipe->out_fmt->imagesize;		break;	case OUTPUT_MODE_TEXT:		f->fmt.pix.sizeimage = pipe->out_fmt->framesize;		break;	default:		v4l2_err(&atomisp_dev, "Unspported output mode/n");		ret = -EINVAL;		break;	}	return ret;}
开发者ID:kamarush,项目名称:ZTE_GXIn_Kernel-3.0.8,代码行数:36,


示例22: zr364xx_vidioc_g_fmt_cap

static int zr364xx_vidioc_g_fmt_cap(struct file *file, void *priv,				    struct v4l2_format *f){	struct video_device *vdev = video_devdata(file);	struct zr364xx_camera *cam;	if (vdev == NULL)		return -ENODEV;	cam = video_get_drvdata(vdev);	if (f->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)		return -EINVAL;	memset(&f->fmt.pix, 0, sizeof(struct v4l2_pix_format));	f->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;	f->fmt.pix.pixelformat = V4L2_PIX_FMT_JPEG;	f->fmt.pix.field = V4L2_FIELD_NONE;	f->fmt.pix.width = cam->width;	f->fmt.pix.height = cam->height;	f->fmt.pix.bytesperline = f->fmt.pix.width * 2;	f->fmt.pix.sizeimage = f->fmt.pix.height * f->fmt.pix.bytesperline;	f->fmt.pix.colorspace = 0;	f->fmt.pix.priv = 0;	return 0;}
开发者ID:3sOx,项目名称:asuswrt-merlin,代码行数:24,


示例23: zr364xx_vidioc_try_fmt_vid_cap

static int zr364xx_vidioc_try_fmt_vid_cap(struct file *file, void *priv,				      struct v4l2_format *f){	struct video_device *vdev = video_devdata(file);	struct zr364xx_camera *cam;	if (vdev == NULL)		return -ENODEV;	cam = video_get_drvdata(vdev);	if (f->fmt.pix.pixelformat != V4L2_PIX_FMT_JPEG)		return -EINVAL;	if (f->fmt.pix.field != V4L2_FIELD_ANY &&	    f->fmt.pix.field != V4L2_FIELD_NONE)		return -EINVAL;	f->fmt.pix.field = V4L2_FIELD_NONE;	f->fmt.pix.width = cam->width;	f->fmt.pix.height = cam->height;	f->fmt.pix.bytesperline = f->fmt.pix.width * 2;	f->fmt.pix.sizeimage = f->fmt.pix.height * f->fmt.pix.bytesperline;	f->fmt.pix.colorspace = 0;	f->fmt.pix.priv = 0;	return 0;}
开发者ID:KHATEEBNSIT,项目名称:lsdk_ar9531,代码行数:24,


示例24: subdev_do_ioctl

static long subdev_do_ioctl(struct file *file, unsigned int cmd, void *arg){	struct video_device *vdev = video_devdata(file);	struct v4l2_subdev *sd = vdev_to_v4l2_subdev(vdev);	struct v4l2_fh *vfh = file->private_data;#if defined(CPTCFG_VIDEO_V4L2_SUBDEV_API)	struct v4l2_subdev_fh *subdev_fh = to_v4l2_subdev_fh(vfh);	int rval;#endif	switch (cmd) {	case VIDIOC_QUERYCTRL:		return v4l2_queryctrl(vfh->ctrl_handler, arg);	case VIDIOC_QUERY_EXT_CTRL:		return v4l2_query_ext_ctrl(vfh->ctrl_handler, arg);	case VIDIOC_QUERYMENU:		return v4l2_querymenu(vfh->ctrl_handler, arg);	case VIDIOC_G_CTRL:		return v4l2_g_ctrl(vfh->ctrl_handler, arg);	case VIDIOC_S_CTRL:		return v4l2_s_ctrl(vfh, vfh->ctrl_handler, arg);	case VIDIOC_G_EXT_CTRLS:		return v4l2_g_ext_ctrls(vfh->ctrl_handler, arg);	case VIDIOC_S_EXT_CTRLS:		return v4l2_s_ext_ctrls(vfh, vfh->ctrl_handler, arg);	case VIDIOC_TRY_EXT_CTRLS:		return v4l2_try_ext_ctrls(vfh->ctrl_handler, arg);	case VIDIOC_DQEVENT:		if (!(sd->flags & V4L2_SUBDEV_FL_HAS_EVENTS))			return -ENOIOCTLCMD;		return v4l2_event_dequeue(vfh, arg, file->f_flags & O_NONBLOCK);	case VIDIOC_SUBSCRIBE_EVENT:		return v4l2_subdev_call(sd, core, subscribe_event, vfh, arg);	case VIDIOC_UNSUBSCRIBE_EVENT:		return v4l2_subdev_call(sd, core, unsubscribe_event, vfh, arg);#ifdef CPTCFG_VIDEO_ADV_DEBUG	case VIDIOC_DBG_G_REGISTER:	{		struct v4l2_dbg_register *p = arg;		if (!capable(CAP_SYS_ADMIN))			return -EPERM;		return v4l2_subdev_call(sd, core, g_register, p);	}	case VIDIOC_DBG_S_REGISTER:	{		struct v4l2_dbg_register *p = arg;		if (!capable(CAP_SYS_ADMIN))			return -EPERM;		return v4l2_subdev_call(sd, core, s_register, p);	}#endif	case VIDIOC_LOG_STATUS: {		int ret;		pr_info("%s: =================  START STATUS  =================/n",			sd->name);		ret = v4l2_subdev_call(sd, core, log_status);		pr_info("%s: ==================  END STATUS  ==================/n",			sd->name);		return ret;	}#if defined(CPTCFG_VIDEO_V4L2_SUBDEV_API)	case VIDIOC_SUBDEV_G_FMT: {		struct v4l2_subdev_format *format = arg;		rval = check_format(sd, format);		if (rval)			return rval;		return v4l2_subdev_call(sd, pad, get_fmt, subdev_fh->pad, format);	}	case VIDIOC_SUBDEV_S_FMT: {		struct v4l2_subdev_format *format = arg;		rval = check_format(sd, format);		if (rval)			return rval;		return v4l2_subdev_call(sd, pad, set_fmt, subdev_fh->pad, format);	}	case VIDIOC_SUBDEV_G_CROP: {		struct v4l2_subdev_crop *crop = arg;//.........这里部分代码省略.........
开发者ID:OSPro,项目名称:wpj344_compatwireless,代码行数:101,


示例25: v4l2_m2m_poll

/** * v4l2_m2m_poll() - poll replacement, for destination buffers only * * Call from the driver's poll() function. Will poll both queues. If a buffer * is available to dequeue (with dqbuf) from the source queue, this will * indicate that a non-blocking write can be performed, while read will be * returned in case of the destination queue. */unsigned int v4l2_m2m_poll(struct file *file, struct v4l2_m2m_ctx *m2m_ctx,			   struct poll_table_struct *wait){	struct video_device *vfd = video_devdata(file);	unsigned long req_events = poll_requested_events(wait);	struct vb2_queue *src_q, *dst_q;	struct vb2_buffer *src_vb = NULL, *dst_vb = NULL;	unsigned int rc = 0;	unsigned long flags;	if (test_bit(V4L2_FL_USES_V4L2_FH, &vfd->flags)) {		struct v4l2_fh *fh = file->private_data;		if (v4l2_event_pending(fh))			rc = POLLPRI;		else if (req_events & POLLPRI)			poll_wait(file, &fh->wait, wait);		if (!(req_events & (POLLOUT | POLLWRNORM | POLLIN | POLLRDNORM)))			return rc;	}	src_q = v4l2_m2m_get_src_vq(m2m_ctx);	dst_q = v4l2_m2m_get_dst_vq(m2m_ctx);	/*	 * There has to be at least one buffer queued on each queued_list, which	 * means either in driver already or waiting for driver to claim it	 * and start processing.	 */	if ((!src_q->streaming || list_empty(&src_q->queued_list))		&& (!dst_q->streaming || list_empty(&dst_q->queued_list))) {		rc |= POLLERR;		goto end;	}	if (m2m_ctx->m2m_dev->m2m_ops->unlock)		m2m_ctx->m2m_dev->m2m_ops->unlock(m2m_ctx->priv);	poll_wait(file, &src_q->done_wq, wait);	poll_wait(file, &dst_q->done_wq, wait);	if (m2m_ctx->m2m_dev->m2m_ops->lock)		m2m_ctx->m2m_dev->m2m_ops->lock(m2m_ctx->priv);	spin_lock_irqsave(&src_q->done_lock, flags);	if (!list_empty(&src_q->done_list))		src_vb = list_first_entry(&src_q->done_list, struct vb2_buffer,						done_entry);	if (src_vb && (src_vb->state == VB2_BUF_STATE_DONE			|| src_vb->state == VB2_BUF_STATE_ERROR))		rc |= POLLOUT | POLLWRNORM;	spin_unlock_irqrestore(&src_q->done_lock, flags);	spin_lock_irqsave(&dst_q->done_lock, flags);	if (!list_empty(&dst_q->done_list))		dst_vb = list_first_entry(&dst_q->done_list, struct vb2_buffer,						done_entry);	if (dst_vb && (dst_vb->state == VB2_BUF_STATE_DONE			|| dst_vb->state == VB2_BUF_STATE_ERROR))		rc |= POLLIN | POLLRDNORM;	spin_unlock_irqrestore(&dst_q->done_lock, flags);end:	return rc;}
开发者ID:AdrianHuang,项目名称:linux-3.8.13,代码行数:73,


示例26: subdev_open

static int subdev_open(struct file *file){	struct video_device *vdev = video_devdata(file);	struct v4l2_subdev *sd = vdev_to_v4l2_subdev(vdev);	struct v4l2_subdev_fh *subdev_fh;#if defined(CONFIG_MEDIA_CONTROLLER)	struct media_entity *entity = NULL;#endif	int ret;	if (!sd->initialized)		return -EAGAIN;	subdev_fh = kzalloc(sizeof(*subdev_fh), GFP_KERNEL);	if (subdev_fh == NULL)		return -ENOMEM;	ret = subdev_fh_init(subdev_fh, sd);	if (ret) {		kfree(subdev_fh);		return ret;	}	ret = v4l2_fh_init(&subdev_fh->vfh, vdev);	if (ret)		goto err;	if (sd->flags & V4L2_SUBDEV_FL_HAS_EVENTS) {		ret = v4l2_event_init(&subdev_fh->vfh);		if (ret)			goto err;		ret = v4l2_event_alloc(&subdev_fh->vfh, sd->nevents);		if (ret)			goto err;	}	v4l2_fh_add(&subdev_fh->vfh);	file->private_data = &subdev_fh->vfh;#if defined(CONFIG_MEDIA_CONTROLLER)	if (sd->v4l2_dev->mdev) {		entity = media_entity_get(&sd->entity);		if (!entity) {			ret = -EBUSY;			goto err;		}	}#endif	ret = v4l2_subdev_call(sd, file, open, subdev_fh);	if (ret < 0 && ret != -ENOIOCTLCMD)		goto err;	return 0;err:#if defined(CONFIG_MEDIA_CONTROLLER)	if (entity)		media_entity_put(entity);#endif	v4l2_fh_del(&subdev_fh->vfh);	v4l2_fh_exit(&subdev_fh->vfh);	subdev_fh_free(subdev_fh);	kfree(subdev_fh);	return ret;}
开发者ID:jmw7912,项目名称:wat-0016-kernel-2.6.37,代码行数:67,


示例27: subdev_do_ioctl

static long subdev_do_ioctl(struct file *file, unsigned int cmd, void *arg){	struct video_device *vdev = video_devdata(file);	struct v4l2_subdev *sd = vdev_to_v4l2_subdev(vdev);	struct v4l2_fh *vfh = file->private_data;#if defined(CONFIG_VIDEO_V4L2_SUBDEV_API)	struct v4l2_subdev_fh *subdev_fh = to_v4l2_subdev_fh(vfh);#endif	switch (cmd) {	case VIDIOC_QUERYCTRL:		return v4l2_subdev_queryctrl(sd, arg);	case VIDIOC_QUERYMENU:		return v4l2_subdev_querymenu(sd, arg);	case VIDIOC_G_CTRL:		return v4l2_subdev_g_ctrl(sd, arg);	case VIDIOC_S_CTRL:		return v4l2_subdev_s_ctrl(sd, arg);	case VIDIOC_G_EXT_CTRLS:		return v4l2_subdev_g_ext_ctrls(sd, arg);	case VIDIOC_S_EXT_CTRLS:		return v4l2_subdev_s_ext_ctrls(sd, arg);	case VIDIOC_TRY_EXT_CTRLS:		return v4l2_subdev_try_ext_ctrls(sd, arg);	case VIDIOC_DQEVENT:		if (!(sd->flags & V4L2_SUBDEV_FL_HAS_EVENTS))			return -ENOIOCTLCMD;		return v4l2_event_dequeue(vfh, arg, file->f_flags & O_NONBLOCK);	case VIDIOC_SUBSCRIBE_EVENT:		return v4l2_subdev_call(sd, core, subscribe_event, vfh, arg);	case VIDIOC_UNSUBSCRIBE_EVENT:		return v4l2_subdev_call(sd, core, unsubscribe_event, vfh, arg);#if defined(CONFIG_VIDEO_V4L2_SUBDEV_API)	case VIDIOC_SUBDEV_G_FMT: {		struct v4l2_subdev_format *format = arg;		if (format->which != V4L2_SUBDEV_FORMAT_TRY &&		    format->which != V4L2_SUBDEV_FORMAT_ACTIVE)			return -EINVAL;		if (format->pad >= sd->entity.num_pads)			return -EINVAL;		return v4l2_subdev_call(sd, pad, get_fmt, subdev_fh, format);	}	case VIDIOC_SUBDEV_S_FMT: {		struct v4l2_subdev_format *format = arg;		if (format->which != V4L2_SUBDEV_FORMAT_TRY &&		    format->which != V4L2_SUBDEV_FORMAT_ACTIVE)			return -EINVAL;		if (format->pad >= sd->entity.num_pads)			return -EINVAL;		return v4l2_subdev_call(sd, pad, set_fmt, subdev_fh, format);	}	case VIDIOC_SUBDEV_G_CROP: {		struct v4l2_subdev_crop *crop = arg;		if (crop->which != V4L2_SUBDEV_FORMAT_TRY &&		    crop->which != V4L2_SUBDEV_FORMAT_ACTIVE)			return -EINVAL;		if (crop->pad >= sd->entity.num_pads)			return -EINVAL;		return v4l2_subdev_call(sd, pad, get_crop, subdev_fh, crop);	}	case VIDIOC_SUBDEV_S_CROP: {		struct v4l2_subdev_crop *crop = arg;		if (crop->which != V4L2_SUBDEV_FORMAT_TRY &&		    crop->which != V4L2_SUBDEV_FORMAT_ACTIVE)			return -EINVAL;		if (crop->pad >= sd->entity.num_pads)			return -EINVAL;		return v4l2_subdev_call(sd, pad, set_crop, subdev_fh, crop);	}	case VIDIOC_SUBDEV_ENUM_MBUS_CODE: {		struct v4l2_subdev_mbus_code_enum *code = arg;		if (code->pad >= sd->entity.num_pads)			return -EINVAL;//.........这里部分代码省略.........
开发者ID:jmw7912,项目名称:wat-0016-kernel-2.6.37,代码行数:101,


示例28: w9966_v4l_do_ioctl

static int w9966_v4l_do_ioctl(struct inode *inode, struct file *file,			      unsigned int cmd, void *arg){	struct video_device *vdev = video_devdata(file);	struct w9966_dev *cam = vdev->priv;	switch(cmd)	{	case VIDIOCGCAP:	{		static struct video_capability vcap = {			.name      = W9966_DRIVERNAME,			.type      = VID_TYPE_CAPTURE | VID_TYPE_SCALES,			.channels  = 1,			.maxwidth  = W9966_WND_MAX_W,			.maxheight = W9966_WND_MAX_H,			.minwidth  = 2,			.minheight = 1,		};		struct video_capability *cap = arg;		*cap = vcap;		return 0;	}	case VIDIOCGCHAN:	{		struct video_channel *vch = arg;		if(vch->channel != 0)	// We only support one channel (#0)			return -EINVAL;		memset(vch,0,sizeof(*vch));		strcpy(vch->name, "CCD-input");		vch->type = VIDEO_TYPE_CAMERA;		return 0;	}	case VIDIOCSCHAN:	{		struct video_channel *vch = arg;		if(vch->channel != 0)			return -EINVAL;		return 0;	}	case VIDIOCGTUNER:	{		struct video_tuner *vtune = arg;		if(vtune->tuner != 0)			return -EINVAL;		strcpy(vtune->name, "no tuner");		vtune->rangelow = 0;		vtune->rangehigh = 0;		vtune->flags = VIDEO_TUNER_NORM;		vtune->mode = VIDEO_MODE_AUTO;		vtune->signal = 0xffff;		return 0;	}	case VIDIOCSTUNER:	{		struct video_tuner *vtune = arg;		if (vtune->tuner != 0)			return -EINVAL;		if (vtune->mode != VIDEO_MODE_AUTO)			return -EINVAL;		return 0;	}	case VIDIOCGPICT:	{		struct video_picture vpic = {			cam->brightness << 8,	// brightness			(cam->hue + 128) << 8,	// hue			cam->color << 9,	// color			cam->contrast << 9,	// contrast			0x8000,			// whiteness			16, VIDEO_PALETTE_YUV422// bpp, palette format		};		struct video_picture *pic = arg;		*pic = vpic;		return 0;	}	case VIDIOCSPICT:	{		struct video_picture *vpic = arg;		if (vpic->depth != 16 || (vpic->palette != VIDEO_PALETTE_YUV422 && vpic->palette != VIDEO_PALETTE_YUYV))			return -EINVAL;		cam->brightness = vpic->brightness >> 8;		cam->hue = (vpic->hue >> 8) - 128;		cam->color = vpic->colour >> 9;		cam->contrast = vpic->contrast >> 9;		w9966_pdev_claim(cam);		if (			w9966_wReg_i2c(cam, 0x0a, cam->brightness) == -1 ||			w9966_wReg_i2c(cam, 0x0b, cam->contrast) == -1 ||			w9966_wReg_i2c(cam, 0x0c, cam->color) == -1 ||			w9966_wReg_i2c(cam, 0x0d, cam->hue) == -1		) {			w9966_pdev_release(cam);			return -EIO;		}		w9966_pdev_release(cam);//.........这里部分代码省略.........
开发者ID:ivucica,项目名称:linux,代码行数:101,


示例29: pcm20_do_ioctl

static int pcm20_do_ioctl(struct inode *inode, struct file *file,			  unsigned int cmd, void *arg){	struct video_device *dev = video_devdata(file);	struct pcm20_device *pcm20 = dev->priv;	int i;	switch(cmd)	{		case VIDIOCGCAP:		{			struct video_capability *v = arg;			memset(v,0,sizeof(*v));			v->type=VID_TYPE_TUNER;			strcpy(v->name, "Miro PCM20");			v->channels=1;			v->audios=1;			return 0;		}		case VIDIOCGTUNER:		{			struct video_tuner *v = arg;			if(v->tuner)	/* Only 1 tuner */				return -EINVAL;			v->rangelow=87*16000;			v->rangehigh=108*16000;			pcm20_getflags(pcm20, &v->flags, &v->signal);			v->flags|=VIDEO_TUNER_LOW;			v->mode=VIDEO_MODE_AUTO;			strcpy(v->name, "FM");			return 0;		}		case VIDIOCSTUNER:		{			struct video_tuner *v = arg;			if(v->tuner!=0)				return -EINVAL;			/* Only 1 tuner so no setting needed ! */			return 0;		}		case VIDIOCGFREQ:		{			unsigned long *freq = arg;			*freq = pcm20->freq;			return 0;		}		case VIDIOCSFREQ:		{			unsigned long *freq = arg;			pcm20->freq = *freq;			i=pcm20_setfreq(pcm20, pcm20->freq);			pr_debug("First view (setfreq): 0x%x/n", i);			return i;		}		case VIDIOCGAUDIO:		{			struct video_audio *v = arg;			memset(v,0, sizeof(*v));			v->flags=VIDEO_AUDIO_MUTABLE;			if (pcm20->muted)				v->flags|=VIDEO_AUDIO_MUTE;			v->mode=VIDEO_SOUND_STEREO;			if (pcm20->stereo)				v->mode|=VIDEO_SOUND_MONO;			/* v->step=2048; */			strcpy(v->name, "Radio");			return 0;		}		case VIDIOCSAUDIO:		{			struct video_audio *v = arg;			if(v->audio)				return -EINVAL;			pcm20_mute(pcm20, !!(v->flags&VIDEO_AUDIO_MUTE));			if(v->flags&VIDEO_SOUND_MONO)				pcm20_stereo(pcm20, 0);			if(v->flags&VIDEO_SOUND_STEREO)				pcm20_stereo(pcm20, 1);			return 0;		}		default:			return -ENOIOCTLCMD;	}}
开发者ID:maraz,项目名称:linux-2.6,代码行数:86,



注:本文中的video_devdata函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ video_device_alloc函数代码示例
C++ videoSetMode函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。