diff options
| -rw-r--r-- | drivers/media/video/v4l2-common.c | 24 | ||||
| -rw-r--r-- | include/linux/videodev2.h | 8 |
2 files changed, 32 insertions, 0 deletions
diff --git a/drivers/media/video/v4l2-common.c b/drivers/media/video/v4l2-common.c index 8ee1179be926..31ae1a138613 100644 --- a/drivers/media/video/v4l2-common.c +++ b/drivers/media/video/v4l2-common.c | |||
| @@ -676,3 +676,27 @@ int v4l_fill_dv_preset_info(u32 preset, struct v4l2_dv_enum_preset *info) | |||
| 676 | return 0; | 676 | return 0; |
| 677 | } | 677 | } |
| 678 | EXPORT_SYMBOL_GPL(v4l_fill_dv_preset_info); | 678 | EXPORT_SYMBOL_GPL(v4l_fill_dv_preset_info); |
| 679 | |||
| 680 | struct v4l2_frmsize_discrete *v4l2_find_nearest_format(struct v4l2_discrete_probe *probe, | ||
| 681 | s32 width, s32 height) | ||
| 682 | { | ||
| 683 | int i; | ||
| 684 | u32 error, min_error = UINT_MAX; | ||
| 685 | struct v4l2_frmsize_discrete *size, *best = NULL; | ||
| 686 | |||
| 687 | if (!probe) | ||
| 688 | return best; | ||
| 689 | |||
| 690 | for (i = 0, size = probe->sizes; i < probe->num_sizes; i++, size++) { | ||
| 691 | error = abs(size->width - width) + abs(size->height - height); | ||
| 692 | if (error < min_error) { | ||
| 693 | min_error = error; | ||
| 694 | best = size; | ||
| 695 | } | ||
| 696 | if (!error) | ||
| 697 | break; | ||
| 698 | } | ||
| 699 | |||
| 700 | return best; | ||
| 701 | } | ||
| 702 | EXPORT_SYMBOL_GPL(v4l2_find_nearest_format); | ||
diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h index b06479f63271..957d5b093847 100644 --- a/include/linux/videodev2.h +++ b/include/linux/videodev2.h | |||
| @@ -397,6 +397,14 @@ struct v4l2_frmsize_discrete { | |||
| 397 | __u32 height; /* Frame height [pixel] */ | 397 | __u32 height; /* Frame height [pixel] */ |
| 398 | }; | 398 | }; |
| 399 | 399 | ||
| 400 | struct v4l2_discrete_probe { | ||
| 401 | const struct v4l2_frmsize_discrete *sizes; | ||
| 402 | int num_sizes; | ||
| 403 | }; | ||
| 404 | |||
| 405 | struct v4l2_frmsize_discrete *v4l2_find_nearest_format(struct v4l2_discrete_probe *probe, | ||
| 406 | s32 width, s32 height); | ||
| 407 | |||
| 400 | struct v4l2_frmsize_stepwise { | 408 | struct v4l2_frmsize_stepwise { |
| 401 | __u32 min_width; /* Minimum frame width [pixel] */ | 409 | __u32 min_width; /* Minimum frame width [pixel] */ |
| 402 | __u32 max_width; /* Maximum frame width [pixel] */ | 410 | __u32 max_width; /* Maximum frame width [pixel] */ |
