[gst-devel] Gstreamer WIN32 status

David Schleef ds at schleef.org
Sun Apr 9 12:26:08 CEST 2006

On Sun, Apr 09, 2006 at 08:44:09PM +0200, Sébastien Moutte wrote:
> 1) Some plugins use not supported socket functions (inet_aton, 
> socketpair ...). I'll search for a free implementation of the missing 
> functions for WIN32 or try to remove this function calls. Does somebody 
> know an existing solution ?

socketpair() requires kernel support, and is distinctly UNIXy.  I'd
be surprised if there's a replacement.

inet_aton() should be relatively easy to replace, but I wonder why
we care about converting ASCII IP addresses to an in_addr.  In general,
we focus on converting URLs or hostnames to in_addrs.  Plus, it should
be made IPv6 compatible.

> 2) Some plugins use rint (audioresample, videobalance). I've found and 
> used #ifdef WIN32 #define rint(x) (floor((x)+0.5)) #endif. Is it correct  ?

It would be better to add a test for HAVE_RINT and use that.  rint() is
missing on more platforms than just MSVC.  The use of rint() in these
places is due to me being lazy about converting them to liboil.  Bad

> 3) Some plugins need regex.h which is not on WIN32 dev environment.

This is a problem.  Chances are that the code in question is calling
regex() on UTF-8 strings, which is Not Cool(tm).  Sounds like another
check in configure.ac is in order.  And perhaps switching to a decent
external library such as pcre.

> 4) Some plugins (realmedia, qtdemux) use void * in a lot of operations. 
> MSVC doesn't support that, it generates error because it doesn't know 
> the size of void then it can't move the pointer. I guess we can simply 
> replace void * used in operations by byte * or char *, can i do that 
> safely ?

I recommend using guint8 * for a pointer to generic memory.


David Schleef
Big Kitten LLC (http://www.bigkitten.com/) -- data acquisition on Linux

More information about the gstreamer-devel mailing list