On 08/25/2017 05:35 PM, wm4 wrote:
+ +#define SET_V4L2_EXT_CTRL(TYPE, ID, VALUE, NAME) \ +{ \ + struct v4l2_ext_control ctrl = { 0 }; \ + struct v4l2_ext_controls ctrls = { 0 }; \ + ctrls.ctrl_class = V4L2_CTRL_CLASS_MPEG; \ + ctrls.controls = &ctrl; \ + ctrl.TYPE = VALUE ; \ + ctrl.id = ID ; \ + ctrls.count = 1; \ + \ + if ((ret = ioctl(s->fd, VIDIOC_S_EXT_CTRLS, &ctrls)) < 0) \ + av_log(avctx, AV_LOG_WARNING, "Failed to set " NAME "%s\n", STR(ID)); \ +} + +#define SET_V4L2_TIME_PER_FRAME(NUM, DEN) \ +{ \ + struct v4l2_streamparm parm = { 0 }; \ + parm.type = V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE; \ + parm.parm.output.timeperframe.numerator = NUM; \ + parm.parm.output.timeperframe.denominator = DEN; \ + \ + if ((ret = ioctl(s->fd, VIDIOC_S_PARM, &parm)) < 0) \ + av_log(avctx, AV_LOG_WARNING, "Failed to set timeperframe"); \ +}I think those should be functions. ctrl has only 3 fields, so it's ok to have the caller set it up. (If you use C99 struct literals it won't be more code than before, maybe.)
ok. _______________________________________________ ffmpeg-devel mailing list [email protected] http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
