Fix bufferpool compile issues. please test..

Original commit message from CVS:
Fix bufferpool compile issues. please test..
This commit is contained in:
Wim Taymans 2002-07-08 22:18:49 +00:00
parent 1e8879eee1
commit 496fd7942c
2 changed files with 42 additions and 33 deletions

View File

@ -76,11 +76,15 @@ static GstElementStateReturn gst_v4lmjpegsrc_change_state (GstElement *eleme
/* bufferpool functions */ /* bufferpool functions */
static GstBuffer* gst_v4lmjpegsrc_buffer_new (GstBufferPool *pool, static GstBuffer* gst_v4lmjpegsrc_buffer_new (GstBufferPool *pool,
gint64 location, guint64 location,
gint size, guint size,
gpointer user_data);
static GstBuffer* gst_v4lmjpegsrc_buffer_copy (GstBufferPool *pool,
const GstBuffer *srcbuf,
gpointer user_data);
static void gst_v4lmjpegsrc_buffer_free (GstBufferPool *pool,
GstBuffer *buf,
gpointer user_data); gpointer user_data);
static GstBuffer* gst_v4lmjpegsrc_buffer_copy (GstBuffer *srcbuf);
static void gst_v4lmjpegsrc_buffer_free (GstBuffer *buf);
static GstCaps *capslist = NULL; static GstCaps *capslist = NULL;
@ -179,11 +183,13 @@ gst_v4lmjpegsrc_init (GstV4lMjpegSrc *v4lmjpegsrc)
gst_pad_set_get_function (v4lmjpegsrc->srcpad, gst_v4lmjpegsrc_get); gst_pad_set_get_function (v4lmjpegsrc->srcpad, gst_v4lmjpegsrc_get);
gst_pad_set_connect_function (v4lmjpegsrc->srcpad, gst_v4lmjpegsrc_srcconnect); gst_pad_set_connect_function (v4lmjpegsrc->srcpad, gst_v4lmjpegsrc_srcconnect);
v4lmjpegsrc->bufferpool = gst_buffer_pool_new(); v4lmjpegsrc->bufferpool = gst_buffer_pool_new(
gst_buffer_pool_set_buffer_new_function(v4lmjpegsrc->bufferpool, gst_v4lmjpegsrc_buffer_new); NULL,
gst_buffer_pool_set_buffer_copy_function(v4lmjpegsrc->bufferpool, gst_v4lmjpegsrc_buffer_copy); NULL,
gst_buffer_pool_set_buffer_free_function(v4lmjpegsrc->bufferpool, gst_v4lmjpegsrc_buffer_free); gst_v4lmjpegsrc_buffer_new,
gst_buffer_pool_set_user_data(v4lmjpegsrc->bufferpool, v4lmjpegsrc); gst_v4lmjpegsrc_buffer_copy,
gst_v4lmjpegsrc_buffer_free,
v4lmjpegsrc);
v4lmjpegsrc->frame_width = 0; v4lmjpegsrc->frame_width = 0;
v4lmjpegsrc->frame_height = 0; v4lmjpegsrc->frame_height = 0;
@ -242,7 +248,7 @@ gst_v4lmjpegsrc_get (GstPad *pad)
if (!gst_v4lmjpegsrc_grab_frame(v4lmjpegsrc, &num, &(GST_BUFFER_SIZE(buf)))) if (!gst_v4lmjpegsrc_grab_frame(v4lmjpegsrc, &num, &(GST_BUFFER_SIZE(buf))))
return NULL; return NULL;
GST_BUFFER_DATA(buf) = gst_v4lmjpegsrc_get_buffer(v4lmjpegsrc, num); GST_BUFFER_DATA(buf) = gst_v4lmjpegsrc_get_buffer(v4lmjpegsrc, num);
buf->timestamp = v4lmjpegsrc->bsync.timestamp.tv_sec * 1000000000 + GST_BUFFER_TIMESTAMP (buf) = v4lmjpegsrc->bsync.timestamp.tv_sec * 1000000000 +
v4lmjpegsrc->bsync.timestamp.tv_usec * 1000; v4lmjpegsrc->bsync.timestamp.tv_usec * 1000;
return buf; return buf;
@ -454,15 +460,14 @@ gst_v4lmjpegsrc_change_state (GstElement *element)
static GstBuffer* static GstBuffer*
gst_v4lmjpegsrc_buffer_new (GstBufferPool *pool, gst_v4lmjpegsrc_buffer_new (GstBufferPool *pool,
gint64 location, guint64 location,
gint size, guint size,
gpointer user_data) gpointer user_data)
{ {
GstBuffer *buffer; GstBuffer *buffer;
buffer = gst_buffer_new(); buffer = gst_buffer_new();
if (!buffer) return NULL; if (!buffer) return NULL;
buffer->pool_private = user_data;
/* TODO: add interlacing info to buffer as metadata */ /* TODO: add interlacing info to buffer as metadata */
@ -471,7 +476,7 @@ gst_v4lmjpegsrc_buffer_new (GstBufferPool *pool,
static GstBuffer* static GstBuffer*
gst_v4lmjpegsrc_buffer_copy (GstBuffer *srcbuf) gst_v4lmjpegsrc_buffer_copy (GstBufferPool *pool, const GstBuffer *srcbuf, gpointer user_data)
{ {
GstBuffer *buffer; GstBuffer *buffer;
@ -488,9 +493,9 @@ gst_v4lmjpegsrc_buffer_copy (GstBuffer *srcbuf)
static void static void
gst_v4lmjpegsrc_buffer_free (GstBuffer *buf) gst_v4lmjpegsrc_buffer_free (GstBufferPool *pool, GstBuffer *buf, gpointer user_data)
{ {
GstV4lMjpegSrc *v4lmjpegsrc = buf->pool_private; GstV4lMjpegSrc *v4lmjpegsrc = GST_V4LMJPEGSRC (user_data);
int n; int n;
for (n=0;n<v4lmjpegsrc->breq.count;n++) for (n=0;n<v4lmjpegsrc->breq.count;n++)

View File

@ -73,11 +73,15 @@ static GstElementStateReturn gst_v4lsrc_change_state (GstElement *element);
/* bufferpool functions */ /* bufferpool functions */
static GstBuffer* gst_v4lsrc_buffer_new (GstBufferPool *pool, static GstBuffer* gst_v4lsrc_buffer_new (GstBufferPool *pool,
gint64 location, guint64 offset,
gint size, guint size,
gpointer user_data);
static GstBuffer* gst_v4lsrc_buffer_copy (GstBufferPool *pool,
const GstBuffer *srcbuf,
gpointer user_data);
static void gst_v4lsrc_buffer_free (GstBufferPool *pool,
GstBuffer *buf,
gpointer user_data); gpointer user_data);
static GstBuffer* gst_v4lsrc_buffer_copy (GstBuffer *srcbuf);
static void gst_v4lsrc_buffer_free (GstBuffer *buf);
static GstCaps *capslist = NULL; static GstCaps *capslist = NULL;
@ -157,11 +161,13 @@ gst_v4lsrc_init (GstV4lSrc *v4lsrc)
gst_pad_set_get_function (v4lsrc->srcpad, gst_v4lsrc_get); gst_pad_set_get_function (v4lsrc->srcpad, gst_v4lsrc_get);
gst_pad_set_connect_function (v4lsrc->srcpad, gst_v4lsrc_srcconnect); gst_pad_set_connect_function (v4lsrc->srcpad, gst_v4lsrc_srcconnect);
v4lsrc->bufferpool = gst_buffer_pool_new(); v4lsrc->bufferpool = gst_buffer_pool_new(
gst_buffer_pool_set_buffer_new_function(v4lsrc->bufferpool, gst_v4lsrc_buffer_new); NULL,
gst_buffer_pool_set_buffer_copy_function(v4lsrc->bufferpool, gst_v4lsrc_buffer_copy); NULL,
gst_buffer_pool_set_buffer_free_function(v4lsrc->bufferpool, gst_v4lsrc_buffer_free); gst_v4lsrc_buffer_new,
gst_buffer_pool_set_user_data(v4lsrc->bufferpool, v4lsrc); gst_v4lsrc_buffer_copy,
gst_v4lsrc_buffer_free,
v4lsrc);
v4lsrc->palette = 0; /* means 'any' - user can specify a specific palette */ v4lsrc->palette = 0; /* means 'any' - user can specify a specific palette */
v4lsrc->width = 160; v4lsrc->width = 160;
@ -378,7 +384,7 @@ gst_v4lsrc_get (GstPad *pad)
g_print ("%lu %lu\n", v4lsrc->timestamp_soft_sync[num].tv_sec, v4lsrc->timestamp_soft_sync[num].tv_usec); g_print ("%lu %lu\n", v4lsrc->timestamp_soft_sync[num].tv_sec, v4lsrc->timestamp_soft_sync[num].tv_usec);
buf->timestamp = v4lsrc->timestamp_soft_sync[num].tv_sec * 1000000 + GST_BUFFER_TIMESTAMP (buf) = v4lsrc->timestamp_soft_sync[num].tv_sec * 1000000 +
v4lsrc->timestamp_soft_sync[num].tv_usec; v4lsrc->timestamp_soft_sync[num].tv_usec;
return buf; return buf;
@ -583,16 +589,14 @@ gst_v4lsrc_change_state (GstElement *element)
static GstBuffer* static GstBuffer*
gst_v4lsrc_buffer_new (GstBufferPool *pool, gst_v4lsrc_buffer_new (GstBufferPool *pool,
gint64 location, guint64 offset,
gint size, guint size,
gpointer user_data) gpointer user_data)
{ {
GstBuffer *buffer; GstBuffer *buffer;
buffer = gst_buffer_new(); buffer = gst_buffer_new();
if (!buffer) return NULL; if (!buffer) return NULL;
buffer->pool_private = user_data;
/* TODO: add interlacing info to buffer as metadata (height>288 or 240 = topfieldfirst, else noninterlaced) */ /* TODO: add interlacing info to buffer as metadata (height>288 or 240 = topfieldfirst, else noninterlaced) */
return buffer; return buffer;
@ -600,7 +604,7 @@ gst_v4lsrc_buffer_new (GstBufferPool *pool,
static GstBuffer* static GstBuffer*
gst_v4lsrc_buffer_copy (GstBuffer *srcbuf) gst_v4lsrc_buffer_copy (GstBufferPool *pool, const GstBuffer *srcbuf, gpointer user_data)
{ {
GstBuffer *buffer; GstBuffer *buffer;
@ -617,9 +621,9 @@ gst_v4lsrc_buffer_copy (GstBuffer *srcbuf)
static void static void
gst_v4lsrc_buffer_free (GstBuffer *buf) gst_v4lsrc_buffer_free (GstBufferPool *pool, GstBuffer *buf, gpointer user_data)
{ {
GstV4lSrc *v4lsrc = buf->pool_private; GstV4lSrc *v4lsrc = GST_V4LSRC (user_data);
int n; int n;
for (n=0;n<v4lsrc->mbuf.frames;n++) for (n=0;n<v4lsrc->mbuf.frames;n++)