From de654b5940d66667a4d0bfece1fd1374909dc1c4 Mon Sep 17 00:00:00 2001 From: "Ronald S. Bultje" Date: Mon, 7 Jan 2002 09:31:34 +0000 Subject: [PATCH] Some more explicit palette type handling Original commit message from CVS: Some more explicit palette type handling --- sys/v4l/gstv4lsrc.c | 28 ++++++++++++++++++++++++++-- sys/v4l/gstv4lsrc.h | 2 +- sys/v4l/v4lsrc_calls.c | 27 +++++++++++++++++++++++++-- sys/v4l/v4lsrc_calls.h | 3 +++ 4 files changed, 55 insertions(+), 5 deletions(-) diff --git a/sys/v4l/gstv4lsrc.c b/sys/v4l/gstv4lsrc.c index 6322d8e..48eb8e2 100644 --- a/sys/v4l/gstv4lsrc.c +++ b/sys/v4l/gstv4lsrc.c @@ -42,7 +42,10 @@ enum { ARG_0, ARG_WIDTH, ARG_HEIGHT, - ARG_PALETTE + ARG_PALETTE, + ARG_PALETTE_NAME, + ARG_NUMBUFS, + ARG_BUFSIZE }; @@ -126,7 +129,16 @@ gst_v4lsrc_class_init (GstV4lSrcClass *klass) G_MININT,G_MAXINT,0,G_PARAM_READWRITE)); g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_PALETTE, g_param_spec_int("palette","palette","palette", - G_MININT,G_MAXINT,0,G_PARAM_READWRITE)); + 0,G_MAXUSHORT,0,G_PARAM_READWRITE)); + g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_PALETTE_NAME, + g_param_spec_string("palette_name","palette_name","palette_name", + NULL, G_PARAM_READABLE)); + g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_NUMBUFS, + g_param_spec_int("num_buffers","num_buffers","num_buffers", + G_MININT,G_MAXINT,0,G_PARAM_READABLE)); + g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_BUFSIZE, + g_param_spec_int("buffer_size","buffer_size","buffer_size", + G_MININT,G_MAXINT,0,G_PARAM_READABLE)); gobject_class->set_property = gst_v4lsrc_set_property; gobject_class->get_property = gst_v4lsrc_get_property; @@ -434,6 +446,18 @@ gst_v4lsrc_get_property (GObject *object, g_value_set_int(value, v4lsrc->mmap.format); break; + case ARG_PALETTE_NAME: + g_value_set_string(value, g_strdup(palette_name[v4lsrc->mmap.format])); + break; + + case ARG_NUMBUFS: + g_value_set_int(value, v4lsrc->mbuf.frames); + break; + + case ARG_BUFSIZE: + g_value_set_int(value, v4lsrc->mbuf.size/(v4lsrc->mbuf.frames*1024)); + break; + default: /*parent_class->get_property(object, prop_id, value, pspec);*/ break; diff --git a/sys/v4l/gstv4lsrc.h b/sys/v4l/gstv4lsrc.h index e45ab6f..9d29527 100644 --- a/sys/v4l/gstv4lsrc.h +++ b/sys/v4l/gstv4lsrc.h @@ -74,7 +74,7 @@ struct _GstV4lSrc { /* caching values */ gint width; gint height; - gint palette; + guint16 palette; }; struct _GstV4lSrcClass { diff --git a/sys/v4l/v4lsrc_calls.c b/sys/v4l/v4lsrc_calls.c index 228f3e7..a71eed7 100644 --- a/sys/v4l/v4lsrc_calls.c +++ b/sys/v4l/v4lsrc_calls.c @@ -39,6 +39,28 @@ #endif +/* palette names */ +char *palette_name[] = { + "", /* 0 */ + "grayscale", /* VIDEO_PALETTE_GREY */ + "Hi-420", /* VIDEO_PALETTE_HI420 */ + "16-bit RGB (RGB-565)", /* VIDEO_PALETTE_RB565 */ + "24-bit RGB", /* VIDEO_PALETTE_RGB24 */ + "32-bit RGB", /* VIDEO_PALETTE_RGB32 */ + "15-bit RGB (RGB-555)", /* VIDEO_PALETTE_RGB555 */ + "YUV-4:2:2 (packed)", /* VIDEO_PALETTE_YUV422 */ + "YUYV", /* VIDEO_PALETTE_YUYV */ + "UYVY", /* VIDEO_PALETTE_UYVY */ + "YUV-4:2:0 (packed)", /* VIDEO_PALETTE_YUV420 */ + "YUV-4:1:1 (packed)", /* VIDEO_PALETTE_YUV411 */ + "Raw", /* VIDEO_PALETTE_RAW */ + "YUV-4:2:2 (planar)", /* VIDEO_PALETTE_YUV422P */ + "YUV-4:1:1 (planar)", /* VIDEO_PALETTE_YUV411P */ + "YUV-4:2:0 (planar)", /* VIDEO_PALETTE_YUV420P */ + "YUV-4:1:0 (planar)" /* VIDEO_PALETTE_YUV410P */ +}; + + /****************************************************** * gst_v4lsrc_queue_frame(): * queue a frame for capturing @@ -265,8 +287,9 @@ gst_v4lsrc_capture_init (GstV4lSrc *v4lsrc) } gst_element_info(GST_ELEMENT(v4lsrc), - "Got %d buffers of size %d KB", - v4lsrc->mbuf.frames, v4lsrc->mbuf.size/(v4lsrc->mbuf.frames*1024)); + "Got %d buffers (\'%s\') of size %d KB", + v4lsrc->mbuf.frames, palette_name[v4lsrc->mmap.format], + v4lsrc->mbuf.size/(v4lsrc->mbuf.frames*1024)); /* keep trakc of queued buffers */ v4lsrc->frame_queued = (gint *) malloc(sizeof(int) * v4lsrc->mbuf.frames); diff --git a/sys/v4l/v4lsrc_calls.h b/sys/v4l/v4lsrc_calls.h index 1a2a11c..529186c 100644 --- a/sys/v4l/v4lsrc_calls.h +++ b/sys/v4l/v4lsrc_calls.h @@ -28,6 +28,9 @@ extern "C" { #endif /* __cplusplus */ +extern char *palette_name[]; + + /* frame grabbing/capture (palette = VIDEO_PALETTE_* - see videodev.h) */ gboolean gst_v4lsrc_set_capture (GstV4lSrc *v4lsrc, gint width, gint height, gint palette); gboolean gst_v4lsrc_capture_init (GstV4lSrc *v4lsrc); -- 2.7.4