static int vidioc_reqbufs(struct file *file, void *priv, struct v4l2_requestbuffers *rb) { struct vcap_client_data *c_data = file->private_data; int rc; dprintk(3, "In Req Buf %08x\n", (unsigned int)rb->type); c_data->op_mode = determine_mode(c_data); if (c_data->op_mode == UNKNOWN_VCAP_OP) { pr_err("VCAP Error: %s: VCAP in unknown mode\n", __func__); return -ENOTRECOVERABLE; } switch (rb->type) { case V4L2_BUF_TYPE_VIDEO_CAPTURE: if (c_data->op_mode == VC_AND_VP_VCAP_OP) { if (c_data->vc_format.color_space) { pr_err("VCAP Err: %s: VP No RGB support\n", __func__); return -ENOTRECOVERABLE; } if (!c_data->vc_format.mode) { pr_err("VCAP Err: VP No prog support\n"); return -ENOTRECOVERABLE; } if (rb->count < 6) { pr_err("VCAP Err: Not enough buf for VC_VP\n"); return -EINVAL; } rc = vb2_reqbufs(&c_data->vc_vidq, rb); if (rc < 0) return rc; c_data->vp_in_fmt.width = (c_data->vc_format.hactive_end - c_data->vc_format.hactive_start); c_data->vp_in_fmt.height = (c_data->vc_format.vactive_end - c_data->vc_format.vactive_start); /* VC outputs YCbCr 4:2:2 */ c_data->vp_in_fmt.pixfmt = V4L2_PIX_FMT_NV16; rb->type = V4L2_BUF_TYPE_INTERLACED_IN_DECODER; rc = vb2_reqbufs(&c_data->vp_in_vidq, rb); rb->type = V4L2_BUF_TYPE_VIDEO_CAPTURE; return rc; } else { return vb2_reqbufs(&c_data->vc_vidq, rb); } case V4L2_BUF_TYPE_INTERLACED_IN_DECODER: return vb2_reqbufs(&c_data->vp_in_vidq, rb); case V4L2_BUF_TYPE_VIDEO_OUTPUT: return vb2_reqbufs(&c_data->vp_out_vidq, rb); default: pr_err("VCAP Error: %s: Unknown buffer type\n", __func__); return -EINVAL; } return 0; }
double FermiTable::calcSingleThermoVar(std::pair<double,double ThermodynamicVariables::*> input_1, std::pair<double,double ThermodynamicVariables::*> input_2, std::pair<double,double> aap, double ThermodynamicVariables::* output_var) const { ThermodynamicVariables tv; tv.*input_1.second = input_1.first; tv.*input_2.second = input_2.first; calcThermoVars(determine_mode(tvar_pair(input_1.second, input_2.second)), aap, tv); return tv.*output_var; }
static int vidioc_streamon(struct file *file, void *priv, enum v4l2_buf_type i) { struct vcap_client_data *c_data = file->private_data; int rc; dprintk(3, "In Stream ON\n"); if (determine_mode(c_data) != c_data->op_mode) { pr_err("VCAP Error: %s: s_fmt called after req_buf", __func__); return -ENOTRECOVERABLE; } switch (c_data->op_mode) { case VC_VCAP_OP: c_data->dev->vc_client = c_data; config_vc_format(c_data); return vb2_streamon(&c_data->vc_vidq, i); case VP_VCAP_OP: rc = streamon_validate_q(&c_data->vp_in_vidq); if (rc < 0) return rc; rc = streamon_validate_q(&c_data->vp_out_vidq); if (rc < 0) return rc; c_data->dev->vp_client = c_data; rc = config_vp_format(c_data); if (rc < 0) return rc; rc = init_motion_buf(c_data); if (rc < 0) return rc; if (c_data->vid_vp_action.nr_enabled) { rc = init_nr_buf(c_data); if (rc < 0) goto s_on_deinit_m_buf; } c_data->vid_vp_action.vp_state = VP_FRAME1; rc = vb2_streamon(&c_data->vp_in_vidq, V4L2_BUF_TYPE_INTERLACED_IN_DECODER); if (rc < 0) goto s_on_deinit_nr_buf; rc = vb2_streamon(&c_data->vp_out_vidq, V4L2_BUF_TYPE_VIDEO_OUTPUT); if (rc < 0) goto s_on_deinit_nr_buf; return rc; case VC_AND_VP_VCAP_OP: rc = streamon_validate_q(&c_data->vc_vidq); if (rc < 0) return rc; rc = streamon_validate_q(&c_data->vp_in_vidq); if (rc < 0) return rc; rc = streamon_validate_q(&c_data->vp_out_vidq); if (rc < 0) return rc; c_data->dev->vc_client = c_data; c_data->dev->vp_client = c_data; c_data->dev->vc_to_vp_work.cd = c_data; rc = config_vc_format(c_data); if (rc < 0) return rc; rc = config_vp_format(c_data); if (rc < 0) return rc; rc = init_motion_buf(c_data); if (rc < 0) return rc; if (c_data->vid_vp_action.nr_enabled) { rc = init_nr_buf(c_data); if (rc < 0) goto s_on_deinit_m_buf; } c_data->streaming = 1; c_data->vid_vp_action.vp_state = VP_FRAME1; /* These stream on calls should not fail */ rc = vb2_streamon(&c_data->vc_vidq, V4L2_BUF_TYPE_VIDEO_CAPTURE); if (rc < 0) goto s_on_deinit_nr_buf; rc = vb2_streamon(&c_data->vp_in_vidq, V4L2_BUF_TYPE_INTERLACED_IN_DECODER); if (rc < 0) goto s_on_deinit_nr_buf; rc = vb2_streamon(&c_data->vp_out_vidq, V4L2_BUF_TYPE_VIDEO_OUTPUT); if (rc < 0) goto s_on_deinit_nr_buf; return rc; default: pr_err("VCAP Error: %s: Operation Mode type", __func__); return -ENOTRECOVERABLE; } return 0; s_on_deinit_nr_buf: if (c_data->vid_vp_action.nr_enabled) deinit_nr_buf(c_data); s_on_deinit_m_buf: deinit_motion_buf(c_data); return rc; }