Some more explicit palette type handling

Original commit message from CVS:
Some more explicit palette type handling
This commit is contained in:
Ronald S. Bultje 2002-01-07 09:31:34 +00:00
parent 146fa09928
commit de654b5940
4 changed files with 55 additions and 5 deletions

View File

@ -42,7 +42,10 @@ enum {
ARG_0, ARG_0,
ARG_WIDTH, ARG_WIDTH,
ARG_HEIGHT, 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_MININT,G_MAXINT,0,G_PARAM_READWRITE));
g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_PALETTE, g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_PALETTE,
g_param_spec_int("palette","palette","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->set_property = gst_v4lsrc_set_property;
gobject_class->get_property = gst_v4lsrc_get_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); g_value_set_int(value, v4lsrc->mmap.format);
break; 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: default:
/*parent_class->get_property(object, prop_id, value, pspec);*/ /*parent_class->get_property(object, prop_id, value, pspec);*/
break; break;

View File

@ -74,7 +74,7 @@ struct _GstV4lSrc {
/* caching values */ /* caching values */
gint width; gint width;
gint height; gint height;
gint palette; guint16 palette;
}; };
struct _GstV4lSrcClass { struct _GstV4lSrcClass {

View File

@ -39,6 +39,28 @@
#endif #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(): * gst_v4lsrc_queue_frame():
* queue a frame for capturing * queue a frame for capturing
@ -265,8 +287,9 @@ gst_v4lsrc_capture_init (GstV4lSrc *v4lsrc)
} }
gst_element_info(GST_ELEMENT(v4lsrc), gst_element_info(GST_ELEMENT(v4lsrc),
"Got %d buffers of size %d KB", "Got %d buffers (\'%s\') of size %d KB",
v4lsrc->mbuf.frames, v4lsrc->mbuf.size/(v4lsrc->mbuf.frames*1024)); v4lsrc->mbuf.frames, palette_name[v4lsrc->mmap.format],
v4lsrc->mbuf.size/(v4lsrc->mbuf.frames*1024));
/* keep trakc of queued buffers */ /* keep trakc of queued buffers */
v4lsrc->frame_queued = (gint *) malloc(sizeof(int) * v4lsrc->mbuf.frames); v4lsrc->frame_queued = (gint *) malloc(sizeof(int) * v4lsrc->mbuf.frames);

View File

@ -28,6 +28,9 @@ extern "C" {
#endif /* __cplusplus */ #endif /* __cplusplus */
extern char *palette_name[];
/* frame grabbing/capture (palette = VIDEO_PALETTE_* - see videodev.h) */ /* 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_set_capture (GstV4lSrc *v4lsrc, gint width, gint height, gint palette);
gboolean gst_v4lsrc_capture_init (GstV4lSrc *v4lsrc); gboolean gst_v4lsrc_capture_init (GstV4lSrc *v4lsrc);