2012/6/27 Hans Verkuil <hverkuil@xxxxxxxxx>: > On Wed 27 June 2012 11:37:24 Scott Jiang wrote: >> Hi Hans, >> >> I noticed there are two s_std ops in core and video for output. And >> some drivers call video->s_std_out and then core->s_std in their S_STD >> iotcl. Could anyone share me the story why we have >> s_std_output/g_std_output/g_tvnorms_output ops in video instead of >> making use of s_std/g_std in core? > > The core class is for common, often used ops. Setting the standard for > capture devices is very common, so it is in core. Setting the standard > for output devices is much less common (there aren't that many output > devices in the kernel), so that stayed in the video class. > My question is why we can't reuse s_std/g_std for output device. We use same VIDIOC_S_STD/VIDIOC_G_STD ioctl for both input and output. > It is a bit arbitrary and I am not sure whether I would make the same > choice now. > So I should ignore s_std/g_std and use s_std_output/g_std_output in encoder driver, right? > There is no g_tvnorms_output, BTW. > It really exists. struct v4l2_subdev_video_ops { int (*s_routing)(struct v4l2_subdev *sd, u32 input, u32 output, u32 config); int (*s_crystal_freq)(struct v4l2_subdev *sd, u32 freq, u32 flags); int (*s_std_output)(struct v4l2_subdev *sd, v4l2_std_id std); int (*g_std_output)(struct v4l2_subdev *sd, v4l2_std_id *std); int (*querystd)(struct v4l2_subdev *sd, v4l2_std_id *std); int (*g_tvnorms_output)(struct v4l2_subdev *sd, v4l2_std_id *std); -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html