From: David S. <dsc...@us...> - 2001-11-07 03:42:14
|
Update of /cvsroot/gstreamer/gstreamer/plugins/videoscale In directory usw-pr-cvs1:/tmp/cvs-serv24467 Modified Files: videoscale.c Log Message: More caps fixups, as best I understand. Hopefully someone can look over this. Index: videoscale.c =================================================================== RCS file: /cvsroot/gstreamer/gstreamer/plugins/videoscale/videoscale.c,v retrieving revision 1.18 retrieving revision 1.19 diff -u -d -r1.18 -r1.19 --- videoscale.c 2001/09/13 07:53:11 1.18 +++ videoscale.c 2001/11/07 03:42:11 1.19 @@ -149,23 +149,19 @@ videoscale_negotiate_src (GstPad *pad, GstCaps **caps, gpointer *data) { Videoscale *videoscale = GST_VIDEOSCALE (gst_pad_get_parent (pad)); - GstPadNegotiateReturn proxyresult; - gint format; GST_DEBUG(0,"videoscale_negotiate_src\n"); - format = gst_caps_get_int (gst_pad_get_caps(videoscale->sinkpad), "format"); + if(*caps==NULL){ + return GST_PAD_NEGOTIATE_FAIL; + } - //if(*caps==NULL){ - *caps = GST_CAPS_NEW ( "videoscale_caps", + *caps = GST_CAPS_NEW ( "videoscale_caps", "video/raw", "format", GST_PROPS_FOURCC (videoscale->format), "width", GST_PROPS_INT (videoscale->targetwidth), "height", GST_PROPS_INT (videoscale->targetheight) ); - //videoscale->srccaps = get_caps_ref(*caps); -// return GST_PAD_NEGOTIATE_TRY; -// } return GST_PAD_NEGOTIATE_AGREE; } @@ -173,15 +169,12 @@ static GstPadNegotiateReturn videoscale_negotiate_sink (GstPad *pad, GstCaps **caps, gpointer *data) { - Videoscale *videoscale = GST_VIDEOSCALE (gst_pad_get_parent (pad)); - GST_DEBUG(0,"videoscale_negotiate_sink\n"); if (*caps==NULL) return GST_PAD_NEGOTIATE_FAIL; return GST_PAD_NEGOTIATE_AGREE; - //return gst_pad_negotiate_proxy(pad,videoscale->srcpad, caps); } static void @@ -198,6 +191,9 @@ gst_videoscale_setup(videoscale); + GST_DEBUG (0,"target size %d x %d\n",videoscale->targetwidth, + videoscale->targetheight); + GST_DEBUG(0,"width %d\n",videoscale->targetwidth); gst_pad_set_caps (videoscale->srcpad, GST_CAPS_NEW ( @@ -222,11 +218,11 @@ videoscale->srcpad = gst_pad_new_from_template ( GST_PADTEMPLATE_GET (src_templ), "src"); - //gst_pad_set_negotiate_function(videoscale->srcpad,videoscale_negotiate_src); + gst_pad_set_negotiate_function(videoscale->srcpad,videoscale_negotiate_src); gst_element_add_pad(GST_ELEMENT(videoscale),videoscale->srcpad); - //videoscale->targetwidth = -1; - //videoscale->targetheight = -1; + videoscale->targetwidth = -1; + videoscale->targetheight = -1; videoscale->method = GST_VIDEOSCALE_NEAREST; //videoscale->method = GST_VIDEOSCALE_BILINEAR; //videoscale->method = GST_VIDEOSCALE_POINT_SAMPLE; @@ -241,7 +237,8 @@ gulong size; GstBuffer *outbuf; -//GST_DEBUG(0,"gst_videoscale_chain\n"); + GST_DEBUG (0,"gst_videoscale_chain\n"); + g_return_if_fail (pad != NULL); g_return_if_fail (GST_IS_PAD (pad)); g_return_if_fail (buf != NULL); @@ -257,16 +254,14 @@ GST_DEBUG (0,"gst_videoscale_chain: got buffer of %ld bytes in '%s'\n",size, GST_OBJECT_NAME (videoscale)); -#if 0 GST_DEBUG(0,"size=%d from=%dx%d to=%dx%d newsize=%d\n", size, videoscale->width, videoscale->height, videoscale->targetwidth, videoscale->targetheight, videoscale->targetwidth*videoscale->targetheight + videoscale->targetwidth*videoscale->targetheight/2); -#endif outbuf = gst_buffer_new(); - /* XXX this is wrong */ + /* XXX this is wrong for anything but I420 */ GST_BUFFER_SIZE(outbuf) = videoscale->targetwidth*videoscale->targetheight + videoscale->targetwidth*videoscale->targetheight/2; GST_BUFFER_DATA(outbuf) = g_malloc (videoscale->targetwidth*videoscale->targetheight*2); |