Lines Matching refs:frame
159 * Find the frame interval closest to the requested frame interval for the
160 * given frame format and size. This should be done by the device as part of
164 static u32 uvc_try_frame_interval(const struct uvc_frame *frame, u32 interval)
168 if (frame->bFrameIntervalType) {
171 for (i = 0; i < frame->bFrameIntervalType; ++i) {
172 dist = interval > frame->dwFrameInterval[i]
173 ? interval - frame->dwFrameInterval[i]
174 : frame->dwFrameInterval[i] - interval;
182 interval = frame->dwFrameInterval[i-1];
184 const u32 min = frame->dwFrameInterval[0];
185 const u32 max = frame->dwFrameInterval[1];
186 const u32 step = frame->dwFrameInterval[2];
197 const struct uvc_frame *frame)
204 return frame->wWidth;
207 return format->bpp * frame->wWidth / 8;
217 const struct uvc_frame *frame = NULL;
252 * requested size and the frame-specified size.
266 frame = &format->frames[i];
273 if (frame == NULL) {
279 /* Use the default frame interval. */
280 interval = frame->dwDefaultFrameInterval;
282 "Using default frame interval %u.%u us (%u.%u fps)\n",
286 /* Set the format index, frame index and frame interval. */
290 probe->bFrameIndex = frame->bFrameIndex;
291 probe->dwFrameInterval = uvc_try_frame_interval(frame, interval);
336 frame = &format->frames[i];
346 fmt->fmt.pix.width = frame->wWidth;
347 fmt->fmt.pix.height = frame->wHeight;
349 fmt->fmt.pix.bytesperline = uvc_v4l2_get_bytesperline(format, frame);
359 *uvc_frame = frame;
368 const struct uvc_frame *frame;
376 frame = stream->cur_frame;
378 if (format == NULL || frame == NULL) {
384 fmt->fmt.pix.width = frame->wWidth;
385 fmt->fmt.pix.height = frame->wHeight;
387 fmt->fmt.pix.bytesperline = uvc_v4l2_get_bytesperline(format, frame);
403 const struct uvc_frame *frame;
409 ret = uvc_v4l2_try_format(stream, fmt, &probe, &format, &frame);
422 stream->cur_frame = frame;
470 const struct uvc_frame *frame;
485 uvc_dbg(stream->dev, FORMAT, "Setting frame interval to %u/%u (%u)\n",
496 frame = stream->cur_frame;
498 probe.dwFrameInterval = uvc_try_frame_interval(frame, interval);
501 /* Try frames with matching size to find the best frame interval. */
517 frame = &format->frames[i];
518 probe.bFrameIndex = frame->bFrameIndex;
531 stream->cur_frame = frame;
534 /* Return the actual frame period. */
1254 const struct uvc_frame *frame = NULL;
1268 /* Skip duplicate frame sizes */
1270 if (frame && frame->wWidth == format->frames[i].wWidth &&
1271 frame->wHeight == format->frames[i].wHeight)
1273 frame = &format->frames[i];
1283 fsize->discrete.width = frame->wWidth;
1284 fsize->discrete.height = frame->wHeight;
1294 const struct uvc_frame *frame = NULL;
1299 /* Look for the given pixel format and frame size */
1313 frame = &format->frames[i];
1314 nintervals = frame->bFrameIntervalType ?: 1;
1323 if (frame->bFrameIntervalType) {
1326 frame->dwFrameInterval[index];
1332 fival->stepwise.min.numerator = frame->dwFrameInterval[0];
1334 fival->stepwise.max.numerator = frame->dwFrameInterval[1];
1336 fival->stepwise.step.numerator = frame->dwFrameInterval[2];