diff -ur main.old/TOOLS/netstream/netstream.c main/TOOLS/netstream/netstream.c --- main.old/TOOLS/netstream/netstream.c Sun Apr 6 18:16:11 2003 +++ main/TOOLS/netstream/netstream.c Sat May 24 17:18:12 2003 @@ -30,9 +30,13 @@ #include #include +#ifndef __MINGW32__ #include #include #include +#else +#include +#endif #include #include diff -ur main.old/libmpdemux/asf_mmst_streaming.c main/libmpdemux/asf_mmst_streaming.c --- main.old/libmpdemux/asf_mmst_streaming.c Sat May 24 15:53:38 2003 +++ main/libmpdemux/asf_mmst_streaming.c Sat May 24 21:32:27 2003 @@ -16,6 +16,10 @@ #include "config.h" +#ifdef __MINGW32__ +typedef long ssize_t; +#endif + #include "url.h" #include "asf.h" @@ -433,7 +437,11 @@ int s = stream->fd; if( s>0 ) { +#ifndef __MINGW32__ close( stream->fd ); +#else + closesocket( stream->fd ); +#endif stream->fd = -1; } diff -ur main.old/libmpdemux/asf_streaming.c main/libmpdemux/asf_streaming.c --- main.old/libmpdemux/asf_streaming.c Sat May 24 15:43:03 2003 +++ main/libmpdemux/asf_streaming.c Sat May 24 16:50:10 2003 @@ -643,7 +643,11 @@ do { done = 1; +#ifndef __MINGW32__ if( fd>0 ) close( fd ); +#else + if( fd>0 ) closesocket( fd ); +#endif if( !strcasecmp( url->protocol, "http_proxy" ) ) { if( url->port==0 ) url->port = 8080; @@ -729,7 +733,11 @@ case ASF_Unknown_e: default: mp_msg(MSGT_NETWORK,MSGL_ERR,"Unknown ASF streaming type\n"); +#ifndef __MINGW32__ close(fd); +#else + closesocket(fd); +#endif http_free( http_hdr ); return -1; } diff -ur main.old/libmpdemux/network.c main/libmpdemux/network.c --- main.old/libmpdemux/network.c Sat May 24 15:43:58 2003 +++ main/libmpdemux/network.c Sun May 25 08:55:19 2003 @@ -16,6 +16,11 @@ #include "config.h" +#ifdef __MINGW32__ +#undef DATADIR +#include +#endif + #include "stream.h" #include "demuxer.h" #include "../m_config.h" @@ -180,6 +185,10 @@ connect2Server_with_af(char *host, int port, int af) { int socket_server_fd; int err, err_len; +#ifdef __MINGW32__ + int temp; + u_long val; +#endif int ret,count = 0; fd_set set; struct timeval tv; @@ -194,6 +203,12 @@ struct hostent *hp=NULL; char buf[255]; +#ifdef __MINGW32__ + WSADATA wsdata; + temp = WSAStartup(0x0002, &wsdata); +// printf("winsock2 init returned %i\n", temp); +#endif + socket_server_fd = socket(af, SOCK_STREAM, 0); @@ -212,14 +227,18 @@ return -2; } - - bzero(&server_address, sizeof(server_address)); - + memset(&server_address,0x0,sizeof(server_address)); + +#ifndef __MINGW32__ #ifdef USE_ATON if (inet_aton(host, our_s_addr)!=1) #else if (inet_pton(af, host, our_s_addr)!=1) #endif +#else + temp = sizeof(struct sockaddr_in); + if (WSAStringToAddressA(host,AF_INET,NULL,(LPSOCKADDR)our_s_addr,&temp)) +#endif { mp_msg(MSGT_NETWORK,MSGL_STATUS,"Resolving %s for %s...\n", host, af2String(af)); @@ -254,7 +273,7 @@ return -2; } -#ifdef USE_ATON +#if defined(USE_ATON) || defined(__MINGW32__) strncpy( buf, inet_ntoa( *((struct in_addr*)our_s_addr) ), 255); #else inet_ntop(af, our_s_addr, buf, 255); @@ -262,11 +281,24 @@ mp_msg(MSGT_NETWORK,MSGL_STATUS,"Connecting to server %s[%s]:%d ...\n", host, buf , port ); // Turn the socket as non blocking so we can timeout on the connection +#ifndef __MINGW32__ fcntl( socket_server_fd, F_SETFL, fcntl(socket_server_fd, F_GETFL) | O_NONBLOCK ); +#else + val = 1; + ioctlsocket( socket_server_fd, FIONBIO, &val ); +#endif if( connect( socket_server_fd, (struct sockaddr*)&server_address, server_address_size )==-1 ) { +#ifndef __MINGW32__ if( errno!=EINPROGRESS ) { +#else + if( (WSAGetLastError() != WSAEINPROGRESS) && (WSAGetLastError() != WSAEWOULDBLOCK) ) { +#endif mp_msg(MSGT_NETWORK,MSGL_ERR,"Failed to connect to server with %s\n", af2String(af)); +#ifndef __MINGW32__ close(socket_server_fd); +#else + closesocket(socket_server_fd); +#endif return -1; } } @@ -293,7 +325,12 @@ } // Turn back the socket as blocking +#ifndef __MINGW32__ fcntl( socket_server_fd, F_SETFL, fcntl(socket_server_fd, F_GETFL) & ~O_NONBLOCK ); +#else + val = 0; + ioctlsocket( socket_server_fd, FIONBIO, &val ); +#endif // Check if there were any error err_len = sizeof(int); ret = getsockopt(socket_server_fd,SOL_SOCKET,SO_ERROR,&err,&err_len); @@ -655,7 +692,11 @@ http_hdr = http_read_response( fd ); if( http_hdr==NULL ) { +#ifndef __MINGW32__ close( fd ); +#else + closesocket( fd ); +#endif http_free( http_hdr ); return -1; } @@ -734,7 +775,11 @@ // TODO: RFC 2616, recommand to detect infinite redirection loops next_url = http_get_field( http_hdr, "Location" ); if( next_url!=NULL ) { +#ifndef __MINGW32__ close( fd ); +#else + closesocket( fd ); +#endif url_free( url ); streaming_ctrl->url = url = url_new( next_url ); http_free( http_hdr ); @@ -840,7 +885,11 @@ break; default: mp_msg(MSGT_NETWORK,MSGL_ERR,"Server return %d: %s\n", http_hdr->status_code, http_hdr->reason_phrase ); +#ifndef __MINGW32__ close( fd ); +#else + closesocket( fd ); +#endif fd = -1; } stream->fd = fd; @@ -941,6 +990,13 @@ return 0; } +#ifdef __MINGW32__ +#define IP_ADD_MEMBERSHIP 12 +struct ip_mreq { + struct in_addr imr_multiaddr; + struct in_addr imr_interface; +}; +#endif #ifndef STREAMING_LIVE_DOT_COM // Start listening on a UDP port. If multicast, join the group. @@ -948,6 +1004,9 @@ rtp_open_socket( URL_t *url ) { int socket_server_fd, rxsockbufsz; int err, err_len; +#ifdef __MINGW32__ + int temp; +#endif fd_set set; struct sockaddr_in server_address; struct ip_mreq mcast; @@ -970,19 +1029,32 @@ } memcpy( (void*)&server_address.sin_addr.s_addr, (void*)hp->h_addr, hp->h_length ); } else { +#ifndef __MINGW32__ #ifdef USE_ATON inet_aton(url->hostname, &server_address.sin_addr); #else inet_pton(AF_INET, url->hostname, &server_address.sin_addr); #endif +#else + temp = sizeof(struct sockaddr_in); + WSAStringToAddressA(url->hostname,AF_INET,NULL,(LPSOCKADDR)&server_address.sin_addr,&temp); +#endif } server_address.sin_family=AF_INET; server_address.sin_port=htons(url->port); if( bind( socket_server_fd, (struct sockaddr*)&server_address, sizeof(server_address) )==-1 ) { +#ifndef __MINGW32__ if( errno!=EINPROGRESS ) { +#else + if( WSAGetLastError() != WSAEINPROGRESS ) { +#endif mp_msg(MSGT_NETWORK,MSGL_ERR,"Failed to connect to server\n"); +#ifndef __MINGW32__ close(socket_server_fd); +#else + closesocket(socket_server_fd); +#endif return -1; } } @@ -1014,7 +1086,11 @@ if( err ) { mp_msg(MSGT_NETWORK,MSGL_ERR,"Timeout! No data from host %s\n", url->hostname ); mp_msg(MSGT_NETWORK,MSGL_DBG2,"Socket error: %d\n", err ); +#ifndef __MINGW32__ close(socket_server_fd); +#else + closesocket(socket_server_fd); +#endif return -1; } } @@ -1073,7 +1149,11 @@ // For RTP streams, we usually don't know the stream type until we open it. if( !strcasecmp( stream->streaming_ctrl->url->protocol, "rtp")) { if(stream->fd >= 0) { +#ifndef __MINGW32__ if(close(stream->fd) < 0) +#else + if(closesocket(stream->fd) < 0) +#endif mp_msg(MSGT_NETWORK,MSGL_ERR,"streaming_start : Closing socket %d failed %s\n",stream->fd,strerror(errno)); } stream->fd = -1; diff -ur main.old/libmpdemux/network.h main/libmpdemux/network.h --- main.old/libmpdemux/network.h Wed Apr 9 16:21:42 2003 +++ main/libmpdemux/network.h Sat May 24 17:10:14 2003 @@ -8,12 +8,14 @@ #define __NETWORK_H #include -#include -#include #include #include +#ifndef __MINGW32__ +#include +#include #include #include +#endif #include "url.h" #include "http.h" diff -ur main.old/libmpdemux/pnm.c main/libmpdemux/pnm.c --- main.old/libmpdemux/pnm.c Sat May 24 15:46:04 2003 +++ main/libmpdemux/pnm.c Sat May 24 21:39:06 2003 @@ -36,6 +36,10 @@ #include #include #include +#ifdef __MINGW32__ +typedef long ssize_t; +#include +#endif #include "pnm.h" //#include "libreal/rmff.h" @@ -207,7 +211,11 @@ if (n > 0) total += n; else if (n < 0) { +#ifndef __MINGW32__ if ((timeout>0) && ((errno == EAGAIN) || (errno == EINPROGRESS))) { +#else + if ((timeout>0) && ((errno == EAGAIN) || (WSAGetLastError() == WSAEINPROGRESS))) { +#endif sleep (1); timeout--; } else return -1; @@ -810,7 +818,11 @@ void pnm_close(pnm_t *p) { +#ifndef __MINGW32__ if (p->s >= 0) close(p->s); +#else + if (p->s >= 0) closesocket(p->s); +#endif free(p->path); free(p); } diff -ur main.old/libmpdemux/realrtsp/real.c main/libmpdemux/realrtsp/real.c --- main.old/libmpdemux/realrtsp/real.c Sat May 17 00:58:13 2003 +++ main/libmpdemux/realrtsp/real.c Sat May 24 21:41:51 2003 @@ -31,10 +31,14 @@ #include #include "../config.h" +#ifdef __MINGW32__ +#undef DATADIR +#endif #include "../bswap.h" #include "real.h" #include "asmrp.h" #include "sdpplin.h" + /* #define LOG diff -ur main.old/libmpdemux/realrtsp/rmff.h main/libmpdemux/realrtsp/rmff.h --- main.old/libmpdemux/realrtsp/rmff.h Sun Apr 20 14:40:38 2003 +++ main/libmpdemux/realrtsp/rmff.h Sat May 24 17:18:11 2003 @@ -27,9 +27,13 @@ */ #include +#ifndef __MINGW32__ #include #include #include +#else +#include +#endif #include #include #include diff -ur main.old/libmpdemux/realrtsp/rtsp.c main/libmpdemux/realrtsp/rtsp.c --- main.old/libmpdemux/realrtsp/rtsp.c Sat May 24 15:46:44 2003 +++ main/libmpdemux/realrtsp/rtsp.c Sat May 24 21:47:16 2003 @@ -29,9 +29,14 @@ #include #include #include +#ifndef __MINGW32__ #include #include #include +#else +typedef long ssize_t; +#include +#endif #include #include #include @@ -119,9 +124,17 @@ sin.sin_port = htons(port); if (connect(s, (struct sockaddr *)&sin, sizeof(sin))==-1 +#ifndef __MINGW32__ && errno != EINPROGRESS) { +#else + && WSAGetLastError() == WSAEINPROGRESS) { +#endif printf ("rtsp: connect(): %s\n", strerror(errno)); +#ifndef __MINGW32__ close(s); +#else + closesocket(s); +#endif return -1; } @@ -163,7 +176,11 @@ if (n > 0) total += n; else if (n < 0) { +#ifndef __MINGW32__ if ((timeout>0) && ((errno == EAGAIN) || (errno == EINPROGRESS))) { +#else + if ((timeout>0) && ((errno == EAGAIN) || (WSAGetLastError() == WSAEINPROGRESS))) { +#endif sleep (1); timeout--; } else return -1; @@ -641,7 +658,11 @@ void rtsp_close(rtsp_t *s) { +#ifndef __MINGW32__ if (s->server_state) close(s->s); /* TODO: send a TEAROFF */ +#else + if (s->server_state) closesocket(s->s); /* TODO: send a TEAROFF */ +#endif if (s->path) free(s->path); if (s->host) free(s->host); if (s->mrl) free(s->mrl); diff -ur main.old/libmpdemux/realrtsp/rtsp_session.c main/libmpdemux/realrtsp/rtsp_session.c --- main.old/libmpdemux/realrtsp/rtsp_session.c Thu Apr 17 20:38:57 2003 +++ main/libmpdemux/realrtsp/rtsp_session.c Sat May 24 17:18:12 2003 @@ -26,9 +26,13 @@ */ #include +#ifndef __MINGW32__ #include #include #include +#else +#include +#endif #include #include #include diff -ur main.old/libmpdemux/rtp.c main/libmpdemux/rtp.c --- main.old/libmpdemux/rtp.c Sun Sep 22 02:33:26 2002 +++ main/libmpdemux/rtp.c Sun May 25 08:45:10 2003 @@ -2,17 +2,31 @@ #include #include #include -#include #include #include #include +#ifndef __MINGW32__ +#include #include #include +#else +#include +#endif /* MPEG-2 TS RTP stack */ #define DEBUG 1 #include "rtp.h" + +#ifdef __MINGW32__ +#define IP_MULTICAST_TTL 10 +#define IP_MULTICAST_LOOP 11 +#define IP_ADD_MEMBERSHIP 12 +struct ip_mreq { + struct in_addr imr_multiaddr; + struct in_addr imr_interface; +}; +#endif void initrtp(struct rtpheader *foo) { /* fill in the MPEG-2 TS deefaults */ /* Note: MPEG-2 TS defines a timestamping base frequency of 90000 Hz. */ diff -ur main.old/libmpdemux/rtp.h main/libmpdemux/rtp.h --- main.old/libmpdemux/rtp.h Sun Dec 23 21:09:02 2001 +++ main/libmpdemux/rtp.h Sat May 24 17:18:11 2003 @@ -1,7 +1,11 @@ #ifndef _RTP_H #define _RTP_H +#ifndef __MINGW32__ #include +#else +#include +#endif struct rtpbits { unsigned int v:2; /* version: 2 */ diff -ur main.old/libmpdemux/stream.c main/libmpdemux/stream.c --- main.old/libmpdemux/stream.c Sat May 17 12:24:01 2003 +++ main/libmpdemux/stream.c Sat May 24 17:08:02 2003 @@ -413,7 +413,11 @@ default: if(s->close) s->close(s); } +#ifndef __MINGW32__ if(s->fd>0) close(s->fd); +#else + if(s->fd>0) closesocket(s->fd); +#endif // Disabled atm, i don't like that. s->priv can be anything after all // streams should destroy their priv on close //if(s->priv) free(s->priv); diff -ur main.old/libmpdemux/stream_netstream.c main/libmpdemux/stream_netstream.c --- main.old/libmpdemux/stream_netstream.c Sat May 17 12:24:01 2003 +++ main/libmpdemux/stream_netstream.c Sat May 24 18:13:40 2003 @@ -36,6 +36,10 @@ #include "config.h" +#ifdef __MINGW32__ +#undef DATADIR +#endif + #ifdef MPLAYER_NETWORK #include @@ -48,9 +52,13 @@ #include #include +#ifndef __MINGW32__ #include #include #include +#else +#include +#endif #include "mp_msg.h" #include "stream.h" @@ -89,6 +97,7 @@ //// When the cache is running we need a lock as //// fill_buffer is called from another proccess static int lock_fd(int fd) { +#ifndef __MINGW32__ struct flock lock; memset(&lock,0,sizeof(struct flock)); @@ -104,10 +113,14 @@ } } while(0); mp_msg(MSGT_STREAM,MSGL_DBG2, "Locked (%d)\n",getpid()); +#else +printf("FIXME: should lock here\n"); +#endif return 1; } static int unlock_fd(int fd) { +#ifndef __MINGW32__ struct flock lock; memset(&lock,0,sizeof(struct flock)); @@ -119,6 +132,9 @@ strerror(errno)); return 0; } +#else +printf("FIXME: should unlock here\n"); +#endif return 1; } @@ -280,7 +296,11 @@ return STREAM_OK; error: +#ifndef __MINGW32__ close(f); +#else + closesocket(f); +#endif m_struct_free(&stream_opts,opts); return STREAM_ERROR; } diff -ur main.old/libvo/vo_bl.c main/libvo/vo_bl.c --- main.old/libvo/vo_bl.c Sat May 24 15:59:47 2003 +++ main/libvo/vo_bl.c Sat May 24 17:18:11 2003 @@ -19,14 +19,18 @@ #include #include #include -#include #include #include -#include #include #include #include +#ifndef __MINGW32__ +#include +#include #include +#else +#include +#endif #include "config.h" @@ -168,7 +172,11 @@ if (connect(h->fd, (struct sockaddr *)&addr, sizeof(addr)) < 0) { mp_msg(MSGT_VO, MSGL_ERR, "couldn't connect socket for %s\n", h->name); +#ifndef __MINGW32__ close(h->fd); +#else + closesocket(h->fd); +#endif return 1; } return 0; @@ -180,7 +188,11 @@ } static void udp_close(bl_host_t *h) { +#ifndef __MINGW32__ close(h->fd); +#else + closesocket(h->fd); +#endif } #define NO_BLS 2