diff options
author | Wim Taymans <wim.taymans@gmail.com> | 2008-08-21 12:12:00 +0000 |
---|---|---|
committer | Wim Taymans <wim.taymans@gmail.com> | 2008-08-21 12:12:00 +0000 |
commit | 713e8000265bd190dd0940eed6889e4eb33d52e7 (patch) | |
tree | 0fe4b13a74086a8544747c4e9db6ef8bee96b3a2 /sys/v4l2/v4l2src_calls.c | |
parent | 5b586be974db096c0f83c5047ecef973d8b1f633 (diff) |
sys/v4l2/gstv4l2src.c: Add S910 and PWC formats with a low priority.
Original commit message from CVS:
* sys/v4l2/gstv4l2src.c: (gst_v4l2src_v4l2fourcc_to_structure),
(gst_v4l2_get_caps_info):
Add S910 and PWC formats with a low priority.
* sys/v4l2/v4l2src_calls.c: (gst_v4l2src_format_get_rank),
(gst_v4l2src_probe_caps_for_format):
Add more debugging.
Diffstat (limited to 'sys/v4l2/v4l2src_calls.c')
-rw-r--r-- | sys/v4l2/v4l2src_calls.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/sys/v4l2/v4l2src_calls.c b/sys/v4l2/v4l2src_calls.c index 035c80dc..f7e17059 100644 --- a/sys/v4l2/v4l2src_calls.c +++ b/sys/v4l2/v4l2src_calls.c @@ -406,7 +406,9 @@ gst_v4l2_buffer_pool_destroy (GstV4l2BufferPool * pool) #define YUV_ODD_BASE_RANK 50 #define RGB_ODD_BASE_RANK 25 #define BAYER_BASE_RANK 15 +#define S910_BASE_RANK 10 #define GREY_BASE_RANK 5 +#define PWC_BASE_RANK 1 static gint gst_v4l2src_format_get_rank (guint32 fourcc) @@ -470,6 +472,14 @@ gst_v4l2src_format_get_rank (guint32 fourcc) case V4L2_PIX_FMT_SBGGR8: return BAYER_BASE_RANK; + case V4L2_PIX_FMT_SN9C10X: + return S910_BASE_RANK; + + case V4L2_PIX_FMT_PWC1: + return PWC_BASE_RANK; + case V4L2_PIX_FMT_PWC2: + return PWC_BASE_RANK; + default: break; } @@ -770,11 +780,16 @@ gst_v4l2src_probe_caps_for_format (GstV4l2Src * v4l2src, guint32 pixelformat, size.index = 0; size.pixel_format = pixelformat; + GST_DEBUG_OBJECT (v4l2src, "Enumerating frame sizes"); + if (ioctl (fd, VIDIOC_ENUM_FRAMESIZES, &size) < 0) goto enum_framesizes_failed; if (size.type == V4L2_FRMSIZE_TYPE_DISCRETE) { do { + GST_LOG_OBJECT (v4l2src, "got discrete frame size %dx%d", + size.discrete.width, size.discrete.height); + w = MIN (size.discrete.width, G_MAXINT); h = MIN (size.discrete.height, G_MAXINT); @@ -788,7 +803,16 @@ gst_v4l2src_probe_caps_for_format (GstV4l2Src * v4l2src, guint32 pixelformat, size.index++; } while (ioctl (fd, VIDIOC_ENUM_FRAMESIZES, &size) >= 0); + GST_DEBUG_OBJECT (v4l2src, "done iterating discrete frame sizes"); } else if (size.type == V4L2_FRMSIZE_TYPE_STEPWISE) { + GST_DEBUG_OBJECT (v4l2src, "we have stepwise frame sizes:"); + GST_DEBUG_OBJECT (v4l2src, "min width: %d", size.stepwise.min_width); + GST_DEBUG_OBJECT (v4l2src, "min height: %d", size.stepwise.min_height); + GST_DEBUG_OBJECT (v4l2src, "max width: %d", size.stepwise.max_width); + GST_DEBUG_OBJECT (v4l2src, "min height: %d", size.stepwise.max_height); + GST_DEBUG_OBJECT (v4l2src, "step width: %d", size.stepwise.step_width); + GST_DEBUG_OBJECT (v4l2src, "step height: %d", size.stepwise.step_height); + for (w = size.stepwise.min_width, h = size.stepwise.min_height; w < size.stepwise.max_width && h < size.stepwise.max_height; w += size.stepwise.step_width, h += size.stepwise.step_height) { @@ -803,9 +827,16 @@ gst_v4l2src_probe_caps_for_format (GstV4l2Src * v4l2src, guint32 pixelformat, if (tmp) results = g_list_prepend (results, tmp); } + GST_DEBUG_OBJECT (v4l2src, "done iterating stepwise frame sizes"); } else if (size.type == V4L2_FRMSIZE_TYPE_CONTINUOUS) { guint32 maxw, maxh; + GST_DEBUG_OBJECT (v4l2src, "we have continuous frame sizes:"); + GST_DEBUG_OBJECT (v4l2src, "min width: %d", size.stepwise.min_width); + GST_DEBUG_OBJECT (v4l2src, "min height: %d", size.stepwise.min_height); + GST_DEBUG_OBJECT (v4l2src, "max width: %d", size.stepwise.max_width); + GST_DEBUG_OBJECT (v4l2src, "min height: %d", size.stepwise.max_height); + w = MAX (size.stepwise.min_width, 1); h = MAX (size.stepwise.min_height, 1); maxw = MIN (size.stepwise.max_width, G_MAXINT); |