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.
This commit is contained in:
parent
5b586be974
commit
713e800026
10
ChangeLog
10
ChangeLog
@ -1,3 +1,13 @@
|
|||||||
|
2008-08-21 Wim Taymans <wim.taymans@collabora.co.uk>
|
||||||
|
|
||||||
|
* 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.
|
||||||
|
|
||||||
2008-08-20 Tim-Philipp Müller <tim at collabora co uk>
|
2008-08-20 Tim-Philipp Müller <tim at collabora co uk>
|
||||||
|
|
||||||
* ext/flac/gstflacenc.c:
|
* ext/flac/gstflacenc.c:
|
||||||
|
@ -581,15 +581,6 @@ gst_v4l2src_v4l2fourcc_to_structure (guint32 fourcc)
|
|||||||
{
|
{
|
||||||
GstStructure *structure = NULL;
|
GstStructure *structure = NULL;
|
||||||
|
|
||||||
/* FIXME: new FourCCs
|
|
||||||
camera: ZC0301 PC Camera
|
|
||||||
driver: zc0301
|
|
||||||
BA81, S910, PWC1, PWC2
|
|
||||||
|
|
||||||
camera:
|
|
||||||
driver:
|
|
||||||
*/
|
|
||||||
|
|
||||||
switch (fourcc) {
|
switch (fourcc) {
|
||||||
case V4L2_PIX_FMT_MJPEG: /* Motion-JPEG */
|
case V4L2_PIX_FMT_MJPEG: /* Motion-JPEG */
|
||||||
case V4L2_PIX_FMT_JPEG: /* JFIF JPEG */
|
case V4L2_PIX_FMT_JPEG: /* JFIF JPEG */
|
||||||
@ -748,9 +739,26 @@ gst_v4l2src_v4l2fourcc_to_structure (guint32 fourcc)
|
|||||||
break;
|
break;
|
||||||
case V4L2_PIX_FMT_WNVA: /* Winnov hw compres */
|
case V4L2_PIX_FMT_WNVA: /* Winnov hw compres */
|
||||||
break;
|
break;
|
||||||
|
#ifdef V4L2_PIX_FMT_SBGGR8
|
||||||
case V4L2_PIX_FMT_SBGGR8:
|
case V4L2_PIX_FMT_SBGGR8:
|
||||||
structure = gst_structure_new ("video/x-raw-bayer", NULL);
|
structure = gst_structure_new ("video/x-raw-bayer", NULL);
|
||||||
break;
|
break;
|
||||||
|
#endif
|
||||||
|
#ifdef V4L2_PIX_FMT_SN9C10X
|
||||||
|
case V4L2_PIX_FMT_SN9C10X:
|
||||||
|
structure = gst_structure_new ("video/x-sonix", NULL);
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
#ifdef V4L2_PIX_FMT_PWC1
|
||||||
|
case V4L2_PIX_FMT_PWC1:
|
||||||
|
structure = gst_structure_new ("video/x-pwc1", NULL);
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
#ifdef V4L2_PIX_FMT_PWC2
|
||||||
|
case V4L2_PIX_FMT_PWC2:
|
||||||
|
structure = gst_structure_new ("video/x-pwc2", NULL);
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
default:
|
default:
|
||||||
GST_DEBUG ("Unknown fourcc 0x%08x %" GST_FOURCC_FORMAT,
|
GST_DEBUG ("Unknown fourcc 0x%08x %" GST_FOURCC_FORMAT,
|
||||||
fourcc, GST_FOURCC_ARGS (fourcc));
|
fourcc, GST_FOURCC_ARGS (fourcc));
|
||||||
@ -988,8 +996,22 @@ gst_v4l2_get_caps_info (GstV4l2Src * v4l2src, GstCaps * caps,
|
|||||||
fourcc = V4L2_PIX_FMT_DV;
|
fourcc = V4L2_PIX_FMT_DV;
|
||||||
} else if (strcmp (mimetype, "image/jpeg") == 0) {
|
} else if (strcmp (mimetype, "image/jpeg") == 0) {
|
||||||
fourcc = V4L2_PIX_FMT_JPEG;
|
fourcc = V4L2_PIX_FMT_JPEG;
|
||||||
|
#ifdef V4L2_PIX_FMT_SBGGR8
|
||||||
} else if (strcmp (mimetype, "video/x-raw-bayer") == 0) {
|
} else if (strcmp (mimetype, "video/x-raw-bayer") == 0) {
|
||||||
fourcc = V4L2_PIX_FMT_SBGGR8;
|
fourcc = V4L2_PIX_FMT_SBGGR8;
|
||||||
|
#endif
|
||||||
|
#ifdef V4L2_PIX_FMT_SN9C10X
|
||||||
|
} else if (strcmp (mimetype, "video/x-sonix") == 0) {
|
||||||
|
fourcc = V4L2_PIX_FMT_SN9C10X;
|
||||||
|
#endif
|
||||||
|
#ifdef V4L2_PIX_FMT_PWC1
|
||||||
|
} else if (strcmp (mimetype, "video/x-pwc1") == 0) {
|
||||||
|
fourcc = V4L2_PIX_FMT_PWC1;
|
||||||
|
#endif
|
||||||
|
#ifdef V4L2_PIX_FMT_PWC2
|
||||||
|
} else if (strcmp (mimetype, "video/x-pwc2") == 0) {
|
||||||
|
fourcc = V4L2_PIX_FMT_PWC2;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fourcc == 0)
|
if (fourcc == 0)
|
||||||
|
@ -406,7 +406,9 @@ gst_v4l2_buffer_pool_destroy (GstV4l2BufferPool * pool)
|
|||||||
#define YUV_ODD_BASE_RANK 50
|
#define YUV_ODD_BASE_RANK 50
|
||||||
#define RGB_ODD_BASE_RANK 25
|
#define RGB_ODD_BASE_RANK 25
|
||||||
#define BAYER_BASE_RANK 15
|
#define BAYER_BASE_RANK 15
|
||||||
|
#define S910_BASE_RANK 10
|
||||||
#define GREY_BASE_RANK 5
|
#define GREY_BASE_RANK 5
|
||||||
|
#define PWC_BASE_RANK 1
|
||||||
|
|
||||||
static gint
|
static gint
|
||||||
gst_v4l2src_format_get_rank (guint32 fourcc)
|
gst_v4l2src_format_get_rank (guint32 fourcc)
|
||||||
@ -470,6 +472,14 @@ gst_v4l2src_format_get_rank (guint32 fourcc)
|
|||||||
case V4L2_PIX_FMT_SBGGR8:
|
case V4L2_PIX_FMT_SBGGR8:
|
||||||
return BAYER_BASE_RANK;
|
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:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -770,11 +780,16 @@ gst_v4l2src_probe_caps_for_format (GstV4l2Src * v4l2src, guint32 pixelformat,
|
|||||||
size.index = 0;
|
size.index = 0;
|
||||||
size.pixel_format = pixelformat;
|
size.pixel_format = pixelformat;
|
||||||
|
|
||||||
|
GST_DEBUG_OBJECT (v4l2src, "Enumerating frame sizes");
|
||||||
|
|
||||||
if (ioctl (fd, VIDIOC_ENUM_FRAMESIZES, &size) < 0)
|
if (ioctl (fd, VIDIOC_ENUM_FRAMESIZES, &size) < 0)
|
||||||
goto enum_framesizes_failed;
|
goto enum_framesizes_failed;
|
||||||
|
|
||||||
if (size.type == V4L2_FRMSIZE_TYPE_DISCRETE) {
|
if (size.type == V4L2_FRMSIZE_TYPE_DISCRETE) {
|
||||||
do {
|
do {
|
||||||
|
GST_LOG_OBJECT (v4l2src, "got discrete frame size %dx%d",
|
||||||
|
size.discrete.width, size.discrete.height);
|
||||||
|
|
||||||
w = MIN (size.discrete.width, G_MAXINT);
|
w = MIN (size.discrete.width, G_MAXINT);
|
||||||
h = MIN (size.discrete.height, 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++;
|
size.index++;
|
||||||
} while (ioctl (fd, VIDIOC_ENUM_FRAMESIZES, &size) >= 0);
|
} 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) {
|
} 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;
|
for (w = size.stepwise.min_width, h = size.stepwise.min_height;
|
||||||
w < size.stepwise.max_width && h < size.stepwise.max_height;
|
w < size.stepwise.max_width && h < size.stepwise.max_height;
|
||||||
w += size.stepwise.step_width, h += size.stepwise.step_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)
|
if (tmp)
|
||||||
results = g_list_prepend (results, tmp);
|
results = g_list_prepend (results, tmp);
|
||||||
}
|
}
|
||||||
|
GST_DEBUG_OBJECT (v4l2src, "done iterating stepwise frame sizes");
|
||||||
} else if (size.type == V4L2_FRMSIZE_TYPE_CONTINUOUS) {
|
} else if (size.type == V4L2_FRMSIZE_TYPE_CONTINUOUS) {
|
||||||
guint32 maxw, maxh;
|
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);
|
w = MAX (size.stepwise.min_width, 1);
|
||||||
h = MAX (size.stepwise.min_height, 1);
|
h = MAX (size.stepwise.min_height, 1);
|
||||||
maxw = MIN (size.stepwise.max_width, G_MAXINT);
|
maxw = MIN (size.stepwise.max_width, G_MAXINT);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user