Lines Matching defs:frame

98  * Find the frame interval closest to the requested frame interval for the
99 * given frame format and size. This should be done by the device as part of
103 static u32 uvc_try_frame_interval(struct uvc_frame *frame, u32 interval)
107 if (frame->bFrameIntervalType) {
110 for (i = 0; i < frame->bFrameIntervalType; ++i) {
111 dist = interval > frame->dwFrameInterval[i]
112 ? interval - frame->dwFrameInterval[i]
113 : frame->dwFrameInterval[i] - interval;
121 interval = frame->dwFrameInterval[i-1];
123 const u32 min = frame->dwFrameInterval[0];
124 const u32 max = frame->dwFrameInterval[1];
125 const u32 step = frame->dwFrameInterval[2];
136 const struct uvc_frame *frame)
143 return frame->wWidth;
146 return format->bpp * frame->wWidth / 8;
155 struct uvc_frame *frame = NULL;
188 * requested size and the frame-specified size.
195 u16 w = format->frame[i].wWidth;
196 u16 h = format->frame[i].wHeight;
202 frame = &format->frame[i];
209 if (frame == NULL) {
215 /* Use the default frame interval. */
216 interval = frame->dwDefaultFrameInterval;
217 uvc_trace(UVC_TRACE_FORMAT, "Using default frame interval %u.%u us "
221 /* Set the format index, frame index and frame interval. */
225 probe->bFrameIndex = frame->bFrameIndex;
226 probe->dwFrameInterval = uvc_try_frame_interval(frame, interval);
268 if (probe->bFrameIndex == format->frame[i].bFrameIndex) {
269 frame = &format->frame[i];
279 fmt->fmt.pix.width = frame->wWidth;
280 fmt->fmt.pix.height = frame->wHeight;
282 fmt->fmt.pix.bytesperline = uvc_v4l2_get_bytesperline(format, frame);
292 *uvc_frame = frame;
302 struct uvc_frame *frame;
310 frame = stream->cur_frame;
312 if (format == NULL || frame == NULL) {
318 fmt->fmt.pix.width = frame->wWidth;
319 fmt->fmt.pix.height = frame->wHeight;
321 fmt->fmt.pix.bytesperline = uvc_v4l2_get_bytesperline(format, frame);
337 struct uvc_frame *frame;
343 ret = uvc_v4l2_try_format(stream, fmt, &probe, &format, &frame);
356 stream->cur_frame = frame;
404 struct uvc_frame *frame;
419 uvc_trace(UVC_TRACE_FORMAT, "Setting frame interval to %u/%u (%u).\n",
430 frame = stream->cur_frame;
432 probe.dwFrameInterval = uvc_try_frame_interval(frame, interval);
435 /* Try frames with matching size to find the best frame interval. */
439 if (&format->frame[i] == stream->cur_frame)
442 if (format->frame[i].wWidth != stream->cur_frame->wWidth ||
443 format->frame[i].wHeight != stream->cur_frame->wHeight)
446 ival = uvc_try_frame_interval(&format->frame[i], interval);
451 frame = &format->frame[i];
452 probe.bFrameIndex = frame->bFrameIndex;
465 stream->cur_frame = frame;
468 /* Return the actual frame period. */
1221 struct uvc_frame *frame = NULL;
1235 /* Skip duplicate frame sizes */
1237 if (frame && frame->wWidth == format->frame[i].wWidth &&
1238 frame->wHeight == format->frame[i].wHeight)
1240 frame = &format->frame[i];
1250 fsize->discrete.width = frame->wWidth;
1251 fsize->discrete.height = frame->wHeight;
1261 struct uvc_frame *frame = NULL;
1266 /* Look for the given pixel format and frame size */
1278 if (format->frame[i].wWidth == fival->width &&
1279 format->frame[i].wHeight == fival->height) {
1280 frame = &format->frame[i];
1281 nintervals = frame->bFrameIntervalType ?: 1;
1290 if (frame->bFrameIntervalType) {
1293 frame->dwFrameInterval[index];
1299 fival->stepwise.min.numerator = frame->dwFrameInterval[0];
1301 fival->stepwise.max.numerator = frame->dwFrameInterval[1];
1303 fival->stepwise.step.numerator = frame->dwFrameInterval[2];