/* GStreamer * Copyright (C) <2005> Julien Moutte * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef __GST_XVIMAGEPOOL_H__ #define __GST_XVIMAGEPOOL_H__ #ifdef HAVE_XSHM #include #include #include #endif /* HAVE_XSHM */ #include #include #ifdef HAVE_XSHM #include #endif /* HAVE_XSHM */ #include #include G_BEGIN_DECLS typedef struct _GstMetaXvImage GstMetaXvImage; typedef struct _GstXvImageBufferPool GstXvImageBufferPool; typedef struct _GstXvImageBufferPoolClass GstXvImageBufferPoolClass; typedef struct _GstXvImageBufferPoolPrivate GstXvImageBufferPoolPrivate; #include "xvimagesink.h" const GstMetaInfo * gst_meta_xvimage_get_info (void); #define GST_META_INFO_XVIMAGE (gst_meta_xvimage_get_info()) #define gst_buffer_get_meta_xvimage(b) ((GstMetaXvImage*)gst_buffer_get_meta((b),GST_META_INFO_XVIMAGE)) GstMetaXvImage * gst_buffer_add_meta_xvimage (GstBuffer *buffer, GstXvImageSink * xvimagesink, gint width, gint height, gint im_format); /** * GstMetaXvImage: * @sink: a reference to the our #GstXvImageSink * @xvimage: the XvImage of this buffer * @width: the width in pixels of XvImage @xvimage * @height: the height in pixels of XvImage @xvimage * @im_format: the format of XvImage @xvimage * @size: the size in bytes of XvImage @xvimage * * Subclass of #GstMeta containing additional information about an XvImage. */ struct _GstMetaXvImage { GstMeta meta; /* Reference to the xvimagesink we belong to */ GstXvImageSink *sink; XvImage *xvimage; #ifdef HAVE_XSHM XShmSegmentInfo SHMInfo; #endif /* HAVE_XSHM */ gint width, height, im_format; size_t size; }; GstBuffer *gst_xvimage_buffer_new (GstXvImageSink *xvimagesink, gint width, gint height, gint in_format); /* buffer pool functions */ #define GST_TYPE_XVIMAGE_BUFFER_POOL (gst_xvimage_buffer_pool_get_type()) #define GST_IS_XVIMAGE_BUFFER_POOL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_XVIMAGE_BUFFER_POOL)) #define GST_XVIMAGE_BUFFER_POOL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_XVIMAGE_BUFFER_POOL, GstXvImageBufferPool)) #define GST_XVIMAGE_BUFFER_POOL_CAST(obj) ((GstXvImageBufferPool*)(obj)) struct _GstXvImageBufferPool { GstBufferPool bufferpool; GstXvImageSink *sink; GstXvImageBufferPoolPrivate *priv; }; struct _GstXvImageBufferPoolClass { GstBufferPoolClass parent_class; }; GType gst_xvimage_buffer_pool_get_type (void); GstBufferPool *gst_xvimage_buffer_pool_new (GstXvImageSink * xvimagesink); gboolean gst_xvimagesink_check_xshm_calls (GstXvImageSink * xvimagesink, GstXContext * xcontext); gint gst_xvimagesink_get_format_from_caps (GstXvImageSink * xvimagesink, GstCaps * caps); G_END_DECLS #endif /*__GST_XVIMAGEPOOL_H__*/