Update of /cvsroot/pure-data/externals/pidip/modules
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv26169/modules
Modified Files:
Makefile Makefile.in pdp_capture.c pdp_icedthe~.c pdp_shape.c
Log Message:
PiDiP 0.12.19
Index: Makefile.in
===================================================================
RCS file: /cvsroot/pure-data/externals/pidip/modules/Makefile.in,v
retrieving revision 1.14
retrieving revision 1.15
diff -C2 -d -r1.14 -r1.15
*** Makefile.in 2 Jan 2005 06:02:48 -0000 1.14
--- Makefile.in 9 Jul 2005 19:35:40 -0000 1.15
***************
*** 21,24 ****
--- 21,25 ----
pdp_theorout~.o pdp_cropper.o pdp_background.o \
pdp_mapper.o pdp_theonice~.o pdp_icedthe~.o\
+ pdp_fdiff.o pdp_hue.o \
@PDP_STREAMING_OBJECTS@ # pdp_xcanvas.o pdp_aa.o
Index: Makefile
===================================================================
RCS file: /cvsroot/pure-data/externals/pidip/modules/Makefile,v
retrieving revision 1.14
retrieving revision 1.15
diff -C2 -d -r1.14 -r1.15
*** Makefile 2 Jan 2005 06:02:48 -0000 1.14
--- Makefile 9 Jul 2005 19:35:40 -0000 1.15
***************
*** 21,25 ****
pdp_theorout~.o pdp_cropper.o pdp_background.o \
pdp_mapper.o pdp_theonice~.o pdp_icedthe~.o\
! pdp_live~.o pdp_ffmpeg~.o # pdp_xcanvas.o pdp_aa.o
all_modules: $(OBJECTS)
--- 21,26 ----
pdp_theorout~.o pdp_cropper.o pdp_background.o \
pdp_mapper.o pdp_theonice~.o pdp_icedthe~.o\
! pdp_fdiff.o pdp_hue.o \
! # pdp_xcanvas.o pdp_aa.o
all_modules: $(OBJECTS)
Index: pdp_shape.c
===================================================================
RCS file: /cvsroot/pure-data/externals/pidip/modules/pdp_shape.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** pdp_shape.c 14 Nov 2004 22:52:22 -0000 1.4
--- pdp_shape.c 9 Jul 2005 19:35:40 -0000 1.5
***************
*** 55,61 ****
t_int x_colorV;
! t_int x_tolerance; // tolerance
! t_int x_paint; // paint option
! t_int x_shape; // drawing shape option
t_int x_luminosity; // use luminosity or not
--- 55,62 ----
t_int x_colorV;
! t_int x_tolerance; // tolerance
! t_int x_paint; // paint option
! t_int x_isolate; // isolate option
! t_int x_shape; // drawing shape option
t_int x_luminosity; // use luminosity or not
***************
*** 107,110 ****
--- 108,119 ----
}
+ static void pdp_shape_isolate(t_pdp_shape *x, t_floatarg fisolate )
+ {
+ if ( ( fisolate == 0 ) || ( fisolate == 1 ) )
+ {
+ x->x_isolate = (int)fisolate;
+ }
+ }
+
static void pdp_shape_paint(t_pdp_shape *x, t_floatarg fpaint )
{
***************
*** 301,304 ****
--- 310,319 ----
else
{
+ if ( x->x_isolate )
+ {
+ *(pbbY+nY*x->x_vwidth+nX) = *(pbY+nY*x->x_vwidth+nX);
+ *(pbbU+(nY>>1)*(x->x_vwidth>>1)+(nX>>1)) = *(pbU+(nY>>1)*(x->x_vwidth>>1)+(nX>>1));
+ *(pbbV+(nY>>1)*(x->x_vwidth>>1)+(nX>>1)) = *(pbV+(nY>>1)*(x->x_vwidth>>1)+(nX>>1));
+ }
if ( x->x_paint )
{
***************
*** 447,456 ****
memcpy( x->x_bdata, data, (x->x_vsize+(x->x_vsize>>1))<<1 );
! memcpy( x->x_bbdata, data, (x->x_vsize+(x->x_vsize>>1))<<1 );
if ( x->x_cursX != -1 ) pdp_shape_frame_detect( x, x->x_cursX, x->x_cursY );
// paint cursor in red for debug purpose
! if ( x->x_cursX != -1 )
{
pbbY = x->x_bbdata;
--- 462,478 ----
memcpy( x->x_bdata, data, (x->x_vsize+(x->x_vsize>>1))<<1 );
! if ( !x->x_isolate )
! {
! memcpy( x->x_bbdata, data, (x->x_vsize+(x->x_vsize>>1))<<1 );
! }
! else
! {
! memset( x->x_bbdata, 0x0, (x->x_vsize+(x->x_vsize>>1))<<1 );
! }
if ( x->x_cursX != -1 ) pdp_shape_frame_detect( x, x->x_cursX, x->x_cursY );
// paint cursor in red for debug purpose
! if ( ( x->x_cursX != -1 ) && ( x->x_shape ) )
{
pbbY = x->x_bbdata;
***************
*** 558,561 ****
--- 580,584 ----
x->x_tolerance = 20;
x->x_paint = 0;
+ x->x_isolate = 0;
x->x_shape = 1;
x->x_luminosity = 1;
***************
*** 590,593 ****
--- 613,617 ----
class_addmethod(pdp_shape_class, (t_method)pdp_shape_rgb, gensym("rgb"), A_DEFFLOAT, A_DEFFLOAT, A_DEFFLOAT, A_NULL);
class_addmethod(pdp_shape_class, (t_method)pdp_shape_tolerance, gensym("tolerance"), A_FLOAT, A_NULL);
+ class_addmethod(pdp_shape_class, (t_method)pdp_shape_isolate, gensym("isolate"), A_FLOAT, A_NULL);
class_addmethod(pdp_shape_class, (t_method)pdp_shape_paint, gensym("paint"), A_FLOAT, A_NULL);
class_addmethod(pdp_shape_class, (t_method)pdp_shape_shape, gensym("shape"), A_FLOAT, A_NULL);
Index: pdp_icedthe~.c
===================================================================
RCS file: /cvsroot/pure-data/externals/pidip/modules/pdp_icedthe~.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** pdp_icedthe~.c 2 Jan 2005 06:02:48 -0000 1.1
--- pdp_icedthe~.c 9 Jul 2005 19:35:40 -0000 1.2
***************
*** 113,116 ****
--- 113,117 ----
t_int x_nbframes; // number of frames emitted
t_float x_framerate; // framerate
+ t_int x_forcedframerate;// the framerate we want to receive
t_int x_samplerate; // audio sample rate
t_int x_audiochannels; // audio channels
***************
*** 153,157 ****
static void pdp_icedthe_priority(t_pdp_icedthe *x, t_floatarg fpriority )
{
! if ( ( x->x_priority >= MIN_PRIORITY ) && ( x->x_priority <= MAX_PRIORITY ) )
{
x->x_priority = (int)fpriority;
--- 154,158 ----
static void pdp_icedthe_priority(t_pdp_icedthe *x, t_floatarg fpriority )
{
! if ( ( (t_int)fpriority >= MIN_PRIORITY ) && ( (t_int)fpriority <= MAX_PRIORITY ) )
{
x->x_priority = (int)fpriority;
***************
*** 159,162 ****
--- 160,171 ----
}
+ static void pdp_icedthe_framerate(t_pdp_icedthe *x, t_floatarg fframerate )
+ {
+ if ( fframerate > 0. )
+ {
+ x->x_forcedframerate = (int)fframerate;
+ }
+ }
+
static void pdp_icedthe_audio(t_pdp_icedthe *x, t_floatarg faudio )
{
***************
*** 393,433 ****
theora_decode_YUVout(&x->x_theora_state, &x->x_yuvbuffer);
! // create a new pdp packet from PIX_FMT_YUV420P image format
! x->x_vwidth = x->x_yuvbuffer.y_width;
! x->x_vheight = x->x_yuvbuffer.y_height;
! x->x_vsize = x->x_vwidth*x->x_vheight;
! x->x_packet0 = pdp_packet_new_bitmap_yv12( x->x_vwidth, x->x_vheight );
! // post( "pdp_icedthe~ : allocated packet %d", x->x_packet0 );
! x->x_header = pdp_packet_header(x->x_packet0);
! x->x_data = (unsigned char*) pdp_packet_data(x->x_packet0);
! x->x_header->info.image.encoding = PDP_BITMAP_YV12;
! x->x_header->info.image.width = x->x_vwidth;
! x->x_header->info.image.height = x->x_vheight;
! pY = x->x_data;
! pV = x->x_data+x->x_vsize;
! pU = x->x_data+x->x_vsize+(x->x_vsize>>2);
! psY = x->x_yuvbuffer.y;
! psU = x->x_yuvbuffer.u;
! psV = x->x_yuvbuffer.v;
! for ( py=0; py<x->x_vheight; py++)
! {
! memcpy( (void*)pY, (void*)psY, x->x_vwidth );
! pY += x->x_vwidth;
! psY += x->x_yuvbuffer.y_stride;
! if ( py%2==0 )
! {
! memcpy( (void*)pU, (void*)psU, (x->x_vwidth>>1) );
! memcpy( (void*)pV, (void*)psV, (x->x_vwidth>>1) );
! pU += (x->x_vwidth>>1);
! pV += (x->x_vwidth>>1);
! psU += x->x_yuvbuffer.uv_stride;
! psV += x->x_yuvbuffer.uv_stride;
! }
}
! x->x_newpicture = 1;
// post( "pdp_icedthe~ : new picture decoded" );
if ( pthread_mutex_unlock( &x->x_videolock ) < 0 )
--- 402,446 ----
theora_decode_YUVout(&x->x_theora_state, &x->x_yuvbuffer);
! if ( x->x_secondcount < x->x_forcedframerate )
! {
! // create a new pdp packet from PIX_FMT_YUV420P image format
! x->x_vwidth = x->x_yuvbuffer.y_width;
! x->x_vheight = x->x_yuvbuffer.y_height;
! x->x_vsize = x->x_vwidth*x->x_vheight;
! x->x_packet0 = pdp_packet_new_bitmap_yv12( x->x_vwidth, x->x_vheight );
! // post( "pdp_icedthe~ : allocated packet %d", x->x_packet0 );
! x->x_header = pdp_packet_header(x->x_packet0);
! x->x_data = (unsigned char*) pdp_packet_data(x->x_packet0);
! x->x_header->info.image.encoding = PDP_BITMAP_YV12;
! x->x_header->info.image.width = x->x_vwidth;
! x->x_header->info.image.height = x->x_vheight;
! pY = x->x_data;
! pV = x->x_data+x->x_vsize;
! pU = x->x_data+x->x_vsize+(x->x_vsize>>2);
! psY = x->x_yuvbuffer.y;
! psU = x->x_yuvbuffer.u;
! psV = x->x_yuvbuffer.v;
! for ( py=0; py<x->x_vheight; py++)
! {
! memcpy( (void*)pY, (void*)psY, x->x_vwidth );
! pY += x->x_vwidth;
! psY += x->x_yuvbuffer.y_stride;
! if ( py%2==0 )
! {
! memcpy( (void*)pU, (void*)psU, (x->x_vwidth>>1) );
! memcpy( (void*)pV, (void*)psV, (x->x_vwidth>>1) );
! pU += (x->x_vwidth>>1);
! pV += (x->x_vwidth>>1);
! psU += x->x_yuvbuffer.uv_stride;
! psV += x->x_yuvbuffer.uv_stride;
! }
! }
! x->x_newpicture = 1;
}
!
// post( "pdp_icedthe~ : new picture decoded" );
if ( pthread_mutex_unlock( &x->x_videolock ) < 0 )
***************
*** 506,509 ****
--- 519,574 ----
}
+ static void pdp_icedthe_split_url(t_pdp_icedthe *x)
+ {
+ char *hostptr = NULL, *p, *endhost = NULL, *pathptr = NULL;
+ t_int length;
+
+ /* strip http:// or ftp:// */
+ p = x->x_url;
+ if (strncmp(p, "http://", 7) == 0) p+=7;
+
+ hostptr = p;
+ while (*p && *p != '/' && *p != ':') /* look for end of hostname: */ p++;
+
+ endhost = p;
+ switch ( *p )
+ {
+ case ':' :
+ x->x_portnum = atoi( p+1 );
+ while (*p && *p != '/') p++;
+ pathptr = p+1;
+ break;
+ case '/' :
+ x->x_portnum = 8000;
+ pathptr = p+1;
+ break;
+ default :
+ if ( ( p - x->x_url ) != (int)strlen( x->x_url ) )
+ {
+ post( "pdp_icedthe~ : wrong url : %s", hostptr );
+ return;
+ }
+ pathptr = "";
+ break;
+ }
+
+ length = (t_int)(endhost - hostptr);
+ if ( x->x_hostname )
+ {
+ post ("pdp_icedthe~ : freeing hostname" );
+ free( x->x_hostname );
+ }
+ x->x_hostname=(char*)malloc( length + 1);
+ strncpy( x->x_hostname, hostptr, length );
+ x->x_hostname[ length ] = '\0';
+
+ if ( x->x_mountpoint ) free( x->x_mountpoint );
+ x->x_mountpoint=(char*)malloc( strlen( pathptr ) + 1);
+ strncpy( x->x_mountpoint, pathptr, strlen( pathptr ) );
+ x->x_mountpoint[ strlen( pathptr ) ] = '\0';
+
+ post ("pdp_icedthe~ : connecting to host=>%s< port=>%d< mountpoint=>%s<", x->x_hostname, x->x_portnum, x->x_mountpoint );
+ }
+
static void pdp_icedthe_connect(t_pdp_icedthe *x, t_symbol *s);
***************
*** 523,527 ****
t_int offset = 0, endofheaders = 0, wpackets = 0;
char *sptr = NULL;
- char *url; /* used for relocation */
if ( x->x_insock != -1 )
--- 588,591 ----
***************
*** 531,535 ****
}
- sockfd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if ( ( sockfd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP) ) <= 0 )
{
--- 595,598 ----
***************
*** 625,629 ****
}
! // post( "pdp_icedthe~ : read HTTP headers : %s", x->x_request );
post( "pdp_icedthe~ : got HTTP answer" );
--- 688,692 ----
}
! post( "pdp_icedthe~ : read HTTP headers : %s", x->x_request );
post( "pdp_icedthe~ : got HTTP answer" );
***************
*** 640,648 ****
return NULL;
}
! url = strdup(cpoint + 10);
! post("pdp_icedthe~: relocating to %s", url);
! if ( close(sockfd) < 0 ) post("pdp_icedthe~: could not close socket" );
! x->x_connectchild = 0;
! pdp_icedthe_connect(x, gensym(url));
return NULL;
}
--- 703,712 ----
return NULL;
}
! if ( x->x_url ) free( x->x_url );
! x->x_url = strdup(cpoint + 10);
! post("pdp_icedthe~: relocating to %s", x->x_url);
! pdp_icedthe_split_url(x);
! x->x_connected = 0;
! pdp_icedthe_do_connect(x);
return NULL;
}
***************
*** 1050,1056 ****
static void pdp_icedthe_connect(t_pdp_icedthe *x, t_symbol *s)
{
! t_int ret, i, length;
pthread_attr_t connect_child_attr;
- char *hostptr = NULL, *p, *endhost = NULL, *pathptr = NULL;
if ( x->x_connectchild != 0 )
--- 1114,1119 ----
static void pdp_icedthe_connect(t_pdp_icedthe *x, t_symbol *s)
{
! t_int ret, i;
pthread_attr_t connect_child_attr;
if ( x->x_connectchild != 0 )
***************
*** 1072,1120 ****
post ("pdp_icedthe~ : connecting to url=%s", x->x_url );
! /* strip http:// or ftp:// */
! p = x->x_url;
! if (strncmp(p, "http://", 7) == 0) p+=7;
!
! hostptr = p;
! while (*p && *p != '/' && *p != ':') /* look for end of hostname: */ p++;
!
! endhost = p;
! switch ( *p )
! {
! case ':' :
! x->x_portnum = atoi( p+1 );
! while (*p && *p != '/') p++;
! pathptr = p+1;
! break;
! case '/' :
! x->x_portnum = 8000;
! pathptr = p+1;
! break;
! default :
! if ( ( p - x->x_url ) != (int)strlen( x->x_url ) )
! {
! post( "pdp_icedthe~ : wrong url : %s", hostptr );
! return;
! }
! pathptr = "";
! break;
! }
!
! length = (t_int)(endhost - hostptr);
! if ( x->x_hostname )
! {
! post ("pdp_icedthe~ : freeing hostname" );
! free( x->x_hostname );
! }
! x->x_hostname=(char*)malloc( length + 1);
! strncpy( x->x_hostname, hostptr, length );
! x->x_hostname[ length ] = '\0';
!
! if ( x->x_mountpoint ) free( x->x_mountpoint );
! x->x_mountpoint=(char*)malloc( strlen( pathptr ) + 1);
! strncpy( x->x_mountpoint, pathptr, strlen( pathptr ) );
! x->x_mountpoint[ strlen( pathptr ) ] = '\0';
!
! post ("pdp_icedthe~ : connecting to host=%s port=%d mountpoint=%s", x->x_hostname, x->x_portnum, x->x_mountpoint );
// launch connection thread
--- 1135,1139 ----
post ("pdp_icedthe~ : connecting to url=%s", x->x_url );
! pdp_icedthe_split_url(x);
// launch connection thread
***************
*** 1314,1317 ****
--- 1333,1337 ----
x->x_priority = DEFAULT_PRIORITY;
x->x_framerate = DEFAULT_FRAME_RATE;
+ x->x_forcedframerate = 1024; // think it will not occur or maybe in 2156
x->x_nbframes = 0;
x->x_samplerate = 0;
***************
*** 1360,1363 ****
--- 1380,1384 ----
class_addmethod(pdp_icedthe_class, (t_method)pdp_icedthe_disconnect, gensym("disconnect"), A_NULL);
class_addmethod(pdp_icedthe_class, (t_method)pdp_icedthe_priority, gensym("priority"), A_FLOAT, A_NULL);
+ class_addmethod(pdp_icedthe_class, (t_method)pdp_icedthe_framerate, gensym("framerate"), A_FLOAT, A_NULL);
class_addmethod(pdp_icedthe_class, (t_method)pdp_icedthe_audio, gensym("audio"), A_FLOAT, A_NULL);
class_sethelpsymbol( pdp_icedthe_class, gensym("pdp_icedthe~.pd") );
Index: pdp_capture.c
===================================================================
RCS file: /cvsroot/pure-data/externals/pidip/modules/pdp_capture.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** pdp_capture.c 17 Sep 2003 20:02:37 -0000 1.2
--- pdp_capture.c 9 Jul 2005 19:35:40 -0000 1.3
***************
*** 30,33 ****
--- 30,34 ----
#include <X11/Xlib.h>
#include <X11/Xatom.h>
+ #include <magick/methods.h>
#include <magick/api.h>
#include <magick/magick.h>
***************
*** 36,39 ****
--- 37,45 ----
#define PDP_DISPLAY_LENGTH 1024
+ // trick to handle Image Magick compatibility
+ #if MagickLibVersion >= 0x619
+ #include "../include/xwindow-private.h"
+ #endif
+
static char *pdp_capture_version = "pdp_capture: version 0.1, capture of screen written by Yves Degoyon (ydegoyon(a)free.fr)";